Я действительно не возражаю с ответом 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);
}
}
Кроме того, ограничение по умолчанию на возможность создания проекта динамической библиотеки для iOS - это что-то в Xcode, которое вы можете изменить, отредактировав некоторые файлы XCode xml:
Создайте и используйте dylib на iOS
После этого вы можете создать обычную библиотеку iOS .dylib и использовать ее в соответствии с приведенным выше примером кода. (да, вам, вероятно, придется снова разблокировать эту возможность при установке новой версии XCode).
Итак, это не техническое ограничение, а ограничение политики App Store. Если вы не ограничены магазином приложений, вы можете это сделать. Обратите внимание, что этот метод не требует взлома, хотя, если приложение находится в песочнице, он может ограничивать где могут быть загружены дилибы.
Изменить: чтобы убедиться, что эта информация не потеряна из-за гниения ссылок в будущем, вот содержание предоставленной мной ссылки о том, как включить дилибы iOS в Xcode. (Примечание: этот процесс все еще работает в Xcode 4, но см. комментарии ниже для обновлений путей и т. д.) Источник: Блог iOS Place:
Xcode не позволяет создавать dylib для iOS. Приложение будет отклонено, если оно не является одиночным двоичным кодом. Но у меня есть приложение с подключаемой архитектурой для загрузки дополнительных модулей. Мне просто нужен быстрый прототип, чтобы подтвердить концепцию, прежде чем полностью переносить ее на iOS. Это было бы быстрее, если бы дилиб мог просто работать. Итак, в этом посте показано, как создавать и использовать dylib, но имейте в виду, что он не будет одобрен для App Store. (Протестировано с Xcode 3.2.4 на 10.6.4)
1. Откройте эти файлы в редакторе списка свойств: /Developer/Platforms/MacOSX.platform/Developer/Library/Xcode/Specifications/MacOSX Product Types.xcspec и /Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Specifications/iPhone Simulator ProductTypes.xcspec
2. Найдите в файле MacOSX Product Types.xcspec элемент с типом продукта com.apple.product-type.library.dynamic
и перетащите его в iPhone Simulator ProductTypes.xcspec сильный> ».
![Скриншот Xcode 1](https://i.stack.imgur.com/YhIW5.png)
3. Откройте файлы MacOSX Package Types.xcspec и iPhone Simulator PackageTypes.xcspec, которые находятся в одних и тех же местах.
4. Найдите в файле MacOSX Product Types.xcspec элемент с типом пакета com.apple.package-type.mach-o-dylib
и перетащите его в iPhone Simulator PackageTypes.xcspec сильный> ».
![Скриншот Xcode 2](https://i.stack.imgur.com/QQC6p.png)
5. Повторите шаги для «iPhoneOS.platform» и перезапустите Xcode, если он был запущен.
Теперь давайте создадим дилиб. Начните с шаблона «Статическая библиотека Cocoa Touch». Это должно включать в себя Foundation.framework. Вот изменения, которые я внес в шаблон для сборки dylib.
1. Откройте файл project.pbxproj (находится внутри пакета файлов проекта Xcode) в текстовом редакторе. Найдите строку «producttype», измените ее значение на com.apple.product-type.library.dynamic
;
Теперь откройте проект с помощью Xcode, перейдите в Проект-> Изменить настройки проекта.
2. «Каталог установки» установлен на @executable_path/
, потому что я планирую разместить dylib в том же каталоге, что и исполняемый файл приложения.
3. «Тип Mach-O» установлен на динамическую библиотеку.
4. «Исполняемое расширение» установлено на dylib.
5. «Исполняемый префикс» пуст.
6. Добавьте в библиотеку один или два простых метода и создайте ее.
Теперь создайте приложение, чтобы протестировать его. На этот раз я выбираю приложение на основе просмотра. Подключите UIButton и UILabel для вызова библиотеки и отображения ответного сообщения. Вы можете загрузить полный проект TestApp и поиграть с ним. .
person
Nate
schedule
09.05.2012