Я хочу создать пакет ресурсов из файлов ресурсов моей статической библиотеки через цель xcode. Я видел, что у Three20 есть файл .bundle, который нужно импортировать.
Как я могу это сделать?
Я хочу создать пакет ресурсов из файлов ресурсов моей статической библиотеки через цель xcode. Я видел, что у Three20 есть файл .bundle, который нужно импортировать.
Как я могу это сделать?
Apple не поддерживает это решение. Когда я разговаривал с разработчиком в Apple, который работает над Xcode, он сообщил мне, что пакеты ресурсов не поддерживаются в iOS, и они были удивлены, что это вообще работает.
Это решение сработало для меня на iOS с 9 по 13, как на телефоне, так и на планшете. Однако возможно, что будущее обновление iOS может сломать это. Просто знайте об этом.
Я знаю, что с опозданием на 8 лет, но, поскольку я наткнулся на этот вопрос, есть большая вероятность, что кто-то другой это сделает, поэтому я подумал, что дам полезный ответ.
+
в нижней части списка целей.Мы преобразуем это в пакет iOS на шаге 3.
Base SDK
и измените это значение с macOS
на iOS
.На этом этапе вы технически закончили свой вопрос (создание цели Resource Bundle для iOS), но для правильной работы требуется некоторая настройка.
-
, чтобы удалить их.+
, чтобы добавить новый ресурс пакета в приложение iOS (не показано на рисунке).+
, чтобы добавить новую зависимость.Выполнив все эти шаги, вы создадите пакет ресурсов, совместимый с iOS, и встроите его в свое приложение для загрузки. Это не так просто, и во многих статьях может быть сказано, что это не поддерживается, но я использовал эту функцию в опубликованном приложении, и она отлично работает.
Просто помните, что если вы хотите добавить какие-либо ресурсы в свое приложение сейчас (файлы PNG, XIB-файлы и т. д.), вам нужно добавить их в комплект, а не в приложение, например:
После того, как вы настроите это, проверьте настройки сборки вашего пакета ресурсов еще раз. Найдите параметр под названием «Система управления версиями». Это значение должно быть равно None
. Если установлено значение Apple Generic
, вы будете сталкиваться с проблемами при попытке отправить приложение в магазин приложений!
Система управления версиями Apple создаст файл *_vers.c
, скомпилирует его и встроит этот двоичный файл в ваш пакет. Поскольку это недопустимый CFBundleExecutable, это приведет к отклонению вашего приложения с ошибкой ITMS-90171.
Пакет — это просто каталог со специальной структурой и расширением .bundle. Вы можете прочитать больше об особенностях в документация.
Изменить:
Важно то, что пакет — это обычная папка со специальным расширением. Например, если у вас есть папка с именем MyBundle.bundle и изображение внутри с именем image.png, вы можете загрузить его с помощью [UIImage imageNamed:@"MyBundle.bundle/image.png"];
Таким образом, нет необходимости создавать его с помощью цели Xcode. Фактически, он недоступен в проектах iOS. У вас может быть фаза сборки копирования файлов в вашем проекте или сценарий оболочки.
Это просто и мощно. Например, если вы соответствуете специальной структуре, указанной в документации для фреймворков, вы можете встроить статические библиотеки в фреймворки, используя простой метод, сценарии оболочки, задачи ant или файлы rake. Пока выходной каталог соответствует структуре и называется Something.framework, вы можете использовать его как Framework даже на iOS.