Я на самом деле не согласен с ответом DarkDust , но если я смогу направить свой внутренний Билл Клинтон, , это зависит от того, что значение поддерживается равно :)
Apple не хочет, чтобы вы делали это для приложений App Store, но операционная система, безусловно, позволяет это делать.Приложения для джейлбрейка используют эту технику постоянно.Вы в основном используете стандартную технику UNIX для динамического открытия фреймворка / библиотеки, а затем используете в ней вещи.Функция dlopen позволяет открывать библиотеку, передавая путь к этой платформе , или dylib.Из некоторых документов для создания приложений для джейлбрейка приведен пример вызова функции init()
, реализованной в вашем собственном отдельном dylib:
#include <dlfcn.h>
initWrapper() {
char *dylibPath = "/Applications/myapp.app/mydylib2.dylib";
void *libHandle = dlopen(dylibPath, RTLD_NOW);
if (libHandle != NULL) {
// This assumes your dylib’s init function is called init,
// if not change the name in "".
void (*init)() = dlsym(libHandle, "init");
if (init != NULL) {
init();
}
dlclose(libHandle);
}
}
Более того, ограничение по умолчанию не позволяет вам build проект динамической библиотеки для iOS - это нечто в XCode, которое вы можете переопределить, отредактировав некоторые XML-файлы XCode:
Сборка и использование dylib на iOS
Как только вы это сделаете, вы можете создать обычную библиотеку iOS .dylib и использовать ее в соответствии с приведенным выше примером кода.(да, вам, вероятно, придется снова разблокировать эту возможность при каждой установке новой версии XCode).
Таким образом, это не техническое ограничение, а ограничение политики App Store.Если вы не ограничены в App Store, тогда вы можете это сделать.Обратите внимание, что этот метод не требует джейлбрейка, хотя если приложение помещено в «песочницу», оно может ограничить , из которого можно загрузить dylibs.
Редактировать: , чтобы убедиться, что эта информация не будет потеряна для будущей гнили ссылки, вот содержание ссылки, которую я предоставил о том, как включить iOS dylibs в XCode.( Примечание: , этот процесс все еще работает в Xcode 4, но см. Комментарии ниже для обновлений путей и т. Д.) Источник: Блог Place iOS :
Xcode не позволяет создавать dylib для iOS.Приложение будет отклонено, если это не один двоичный файл.Но у меня есть приложение с подключаемой архитектурой для загрузки дополнительных модулей.Я просто хочу быстрый прототип, чтобы доказать концепцию, прежде чем полностью перенести его на iOS.Это быстрее сделать, если dylib может просто работать.Итак, этот пост показывает, как создать и использовать dylib, но имейте в виду, что он не будет одобрен в App Store.(Протестировано с Xcode 3.2.4 на 10.6.4)
1. Откройте эти файлы в редакторе списка свойств: / Developer / Platforms / MacOSX.platform / Developer / Library/ Xcode / Характеристики / MacOSX Product Types.xcspec и / Разработчик / Платформы / iPhoneSimulator.platform / Разработчик / Библиотека / Xcode / Технические характеристики / iPhone Simulator ProductTypes.xcspec
2. Найдите элемент в « MacOSX Product Types.xcspec », который имеет тип продукта com.apple.product-type.library.dynamic
, и перетащите его в « iPhone Simulator ProductTypes.xcspec ».
3. Открыть « Типы пакетов MacOSX.xcspec » и « Пакет iPhone Simulator PackageTypes.xcspec »Находится в тех же местах.
4. Найдите элемент в« MacOSX Product Types.xcspec », который имеет тип пакета com.apple.package-type.mach-o-dylib
, и перетащитеэто к « iPhone Simulator PackageTypes.xcspec ».
5. Rповторите шаги для « iPhoneOS.platform » и перезапустите Xcode, если он был запущен.
Теперь давайте создадим dylib.Начните с шаблона « Cocoa Touch Static Library ».Это должно включать Foundation.framework в проекте.Вот изменения, которые я внес в шаблон для сборки dylib.
1. Откройте файл project.pbxproj (находится в пакете файла проекта Xcode)в текстовом редакторе.Найдите строку « producttype », измените ее значение на com.apple.product-type.library.dynamic
;
Теперь откройте проект с помощью Xcode, перейдите к Project-> Edit Project Settings
2. « Установка Directory ”установлено на @executable_path/
, потому что я планирую поместить dylib в тот же каталог, что и исполняемый файл приложения.
3. « Тип Mach-O » установлен в Динамическую библиотеку
4. « Исполняемое расширение » установлено в dylib
5. « Исполняемый префикс » установлен на пустое значение
6. Добавьте один или два простых метода в библиотеку и соберите ее.
Теперь создайте приложение для его тестирования. На этот раз я выбираю приложение View . Подключите UIButton и UILabel, чтобы вызвать lib и показать ответное сообщение. Вы можете загрузить полный проект TestApp и поиграть с ним.