Я на насправді не згодні з відповіддю DarkDust в , але якщо я можу направити свій внутрішній Білл Клінтон, це залежить від того, який сенс підтримується це :)
Apple не хоче, щоб ви це робили для додатків App Store, але операційна система, безумовно, це дозволяє. Програми Jailbreak використовують цю техніку постійно. Ви в основному використовуєте стандартну техніку UNIX, щоб динамічно відкривати рамку / бібліотеку, а потім використовувати в ній речі. Функція dlopen дозволяє відкрити бібліотеку, пройшовши шлях до цього фрейму або dylib. Ось деякі документи для створення програм джейлбрейка , ось приклад виклику init()
функції, реалізованої всередині вашого власного окремого дилібу:
#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. Якщо ви не обмежені 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 Тип продукту .xcspec та /Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/pecifications / iPhone Simulator ProductTypes.xcspec
2. Знайдіть елемент у " Тип продукту MacOSX.xcspec ", що містить тип продукту, com.apple.product-type.library.dynamic
та перетягніть його до " iPhone Simulator ProductTypes.xcspec ".
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 ".
5. Повторіть кроки для “ iPhoneOS.platform ” та перезапустіть Xcode, якщо він працював.
Тепер давайте побудуємо диліб. Почніть з шаблону " Статична бібліотека какао-сенсорного ". Це має включати в проект Foundation.framework. Ось зміни, які я вніс у верхній частині шаблону для створення дилібу.
1. Відкрийте файл project.pbxproj (знайдений всередині пакета файлів проекту Xcode) в текстовому редакторі. Шукайте рядок " тип продукту ", змініть його значення на com.apple.product-type.library.dynamic
;
Тепер відкрийте проект за допомогою Xcode, перейдіть до Project-> Edit Settings Settings
2. " Каталог інсталяції " встановлено @executable_path/
тому, що я планую помістити dylib у ту саму директорію, що і виконувану програму.
3. " Тип Mach-O " встановлено у динамічній бібліотеці
4. " Виконане розширення " встановлено на діліб
5. « Виконувані Приставка » набір спорожнити
6. Додайте до бібліотеки один або два простих методу та побудуйте його.
Тепер створіть додаток для тестування. Цього разу я вибираю додаток на основі перегляду . Підключіть UIButton та UILabel, щоб зателефонувати на ліб та показати зворотне повідомлення. Ви можете завантажити повний проект TestApp і пограти з ним.