Как редактировать компилированные .NIB ресурсы.

Файлы с расширением *.nib – это файлы ресурсов графического интерфейса приложений в Mac OS X. Маководы, которые сталкивались с локализацией (переводом) графического интерфейса приложений, наверняка знают, что есть .nib-файлы ресурсов, которые можно легко редактировать, а есть такие, которые Interface Builder не может открыть, выдавая сообщение, что файл ресурсов  компилирован и не может быть изменён. Это случилось не так давно, примерно с выходом Mac OS X Leopard, а глобально компилированные ресурсы появились в Mac OS X Snow Leopard. Почему? Помните, когда появился на свет Snow Leopard? P.R.щики Apple не раз упомянали, что разработчикам удалось уменьшить объём ОС на 5 ГБ, которые теперь можно использовать для фото, видео и аудио… Вот-вот. Дело в том, что до выхода Mac OS X 10.5 Leopard, в том же Tiger, было полно неоткомпилированных *.nib-ресурсов и Apple признала, что это на самом деле не совсем правильно так как бандлы ресурсов занимают больше места по сравнению с компилированными .nib’ами, и что в дальнейшем исправит эту оплошность. Вот и исправила. Причём, как я понимаю, встроила эту “исправлялку” в Interface Builder по-умолчанию, поэтому мы всё чаще встречаем откомпилированные ресурсы в приложениях. Отчасти за счёт ресурсов в Snow Leopard и удалось сэкономить часть дискового пространства. Что же из себя представляют эти откомпилированные ресурсы? На самом деле тут нет ничего магического. Некомпилированные ресурсы представляют из себя бандл с расширением *.nib внутри которого находятся три файла: info.nib, classes.nib и keyedobjects.nib.

 
Бандл ресурсов .nib
 

Если из всего бандла, например MainMenu.nib, вытянуть файл keyedobjects.nib, а затем переименовать его в имя всего бандла – MainMenu.nib, то этот переименованный keyedobjects.nib как раз и будет компилированным ресурсом. Иными словами: откомпилированный .nib – это keyedobjects.nib из неоткомпилированного .nib-бандла. Вот так и происходит на самом деле компиляция ресурсов: простое вытягивание и переименование keyedobjects.nib в название ресурса.

 
Компилированный .nib-файл
 

Так как же сделать из откомпилированного .nib-ресурса бандл, который затем можно будет редактировать? Всё очень просто: нужно вернуть всё на свои места. Для этого нам нужен любой .nib-бандл (неоткомпилированный *.nib). Его можно взять внизу поста (будет ссылка). Переименовываем .nib-бандл в имя компилированного ресурса, а сам компилированный .nib-ресурс переименовываем в keyedobjects.nib, открываем бандл и заменяем в нём существующий keyedobjects.nib нашим.

 
Наглядная схема .nib-файла
 

Теперь у нас получился .nib-бандл который можно изменять при помощи Interface Builder – приложения, входящего в пакет разработчика. Всё.
 


 
Скачать NIB-bundle

Share this article
0
Share
Prev Post

Скачать Mac OS X Lion Developer Preview 4, iOS 5 Beta, iTunes 10.5 Beta и Safari 5.1.

Next Post

Как настроить почту Hotmail в программе Mail.

Comments 14
  1. Спасибо за метод.
    я не селен в программировани но хочу перевести приложение прошу совета
    Папка English.lproj содержит очень много .nib файлов xkode просто так их не открывает. как их отредактировать не прибегая к приведенному методу для каждого файла?

    1. Никак. Если NIB компилированный, то нужно с каждым проделывать такие манипуляции. Правда, на самом деле за инерфейс могут отвечать не все NIB-файлы.

  2. Делаю в точности, как тут написано, но при попытке открыть получившийся nib файл постоянно выскакивают ошибки… в чем может быть дело?

    1. Некоторые приложения используют нестандартные библиотеки, отсутствующие в стандартном Xcode. Так как необходимые элементы для построения интерфейса отсутствуют и возникают ошибки. Это как один из возможных вариантов.

  3. Для чистоты экспермента создал пустой проект (т.е нестандартные библиотеки не использовал). В последующем при попытке окрытия исправленного nib файла выдается ошибка открытия.

    1. Ну не знаю. Я таким способом редактировал и локализировал достаточно различных приложений: Fraise, TextMate, множество стандартных панелей настроек в бета-версиях Lion и Mountain Lion (когда тестировал их) и ещё кучу других, о которых уж и не вспомню. Не все ресурсы можно отредактировать именно таким способом (об этом я уже сказал), но большинство NIB’ов редактируется именно так.

  4. Доброго времени суток! Тема еще актуальна? Пытаюсь отредактировать MainMenu.nib в плеере Audirvana Plus 1.5.12 Проблема следующая – превратить MainMenu.nib в редактируемый проект получается, видно интерфейс и настройки, после сохранения проекта и обратном переименовании – при запуске программа не грузит интерфейс и вылетает (запуская при этом плейлист – дочерний элемент, если он конечно был включен). Подскажите как быть, если конечно здесь еще кто бывает…

    1. Доброго!
      Возможно приложение имеет цифровую подпись. После редактирование контрольные суммы не совпадают и от этого траблы. Как удалить цифровую подпись я писал здесь, пробуйте.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Read next