Gerçekten ile belirtmiş değilim DarkDust cevabı , ama içimdeki Bill Clinton kanalize edebilir eğer, o ne anlama bağlıdır desteklenen olduğunu :)
Apple bunu App Store uygulamaları için yapmanızı istemiyor, ancak işletim sistemi buna kesinlikle izin veriyor. Jailbreak uygulamaları bu tekniği her zaman kullanır. Temelde bir çerçeveyi / kitaplığı dinamik olarak açmak için standart bir UNIX tekniğini kullanırsınız ve ardından içindeki öğeleri kullanırsınız. Dlopen fonksiyon içeri geçerek kütüphane açmak için izin verir bu çerçeve yolu veya dylib. Jailbreak uygulamaları oluşturmaya yönelik bazı belgelerdeninit()
, kendi dylib'inizde uygulanan bir işlevi çağırmanın bir örneğini burada bulabilirsiniz :
#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);
}
}
Ayrıca, iOS için dinamik bir kitaplık projesi oluşturmanıza izin vermenin önündeki varsayılan kısıtlama , Xcode'da bazı XCode xml dosyalarını düzenleyerek geçersiz kılabileceğiniz bir şeydir:
İOS'ta dylib oluşturun ve kullanın
Bunu yaptıktan sonra normal bir iOS .dylib kitaplığı oluşturabilir ve yukarıdaki örnek koda göre kullanabilirsiniz. (evet, muhtemelen yeni bir XCode sürümü kurduğunuzda bu özelliği tekrar açmanız gerekecektir).
Yani bu teknik bir sınırlama değil, bir App Store politika sınırlamasıdır. App Store ile sınırlı değilseniz, o zaman yapabilirsiniz. Bu teknik olmadığını Not değil uygulama korumalı alan ise, bu sınırlayabilir rağmen, jailbreaking gerektirir nerede dylibs yüklenebilir.
Düzenleme: Bu bilgilerin gelecekteki bağlantı çürümesine karşı kaybolmadığından emin olmak için, Xcode'da iOS dylib'lerinin nasıl etkinleştirileceğine dair sağladığım bağlantının içeriği burada. ( Not: bu işlem hala Xcode 4 üzerinde çalışır, ancak yollarla ilgili güncellemeler vb. İçin aşağıdaki yorumlara bakın) Kaynak, iOS Yer blogudur :
Xcode, iOS için dylib oluşturmanıza izin vermez. Tek ikili değilse uygulama reddedilecektir. Ancak isteğe bağlı modülleri yüklemek için eklenti mimarisine sahip bir uygulamam var. Konsepti iOS'a tam olarak taşımadan önce kanıtlamak için hızlı bir prototip istiyorum. Dylib basitçe işe yarayabilirse yapmak daha hızlıdır. Bu nedenle, bu gönderi dylib'in nasıl oluşturulacağını ve kullanılacağını gösterir, ancak bunun App Store'da onaylanmayacağını unutmayın. (10.6.4'te Xcode 3.2.4 ile test edilmiştir)
1. Bu dosyaları Mülk Listesi Düzenleyicisinde açın: /Developer/Platforms/MacOSX.platform/Developer/Library/Xcode/Specifications/MacOSX Product Types.xcspec ve /Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Specifications / iPhone Simulator ProductTypes.xcspec
2. Ürün türüne sahip “ MacOSX Product Types.xcspec ” içinde öğeyi bulun ve com.apple.product-type.library.dynamic
“ iPhone Simulator ProductTypes.xcspec ” e sürükleyin .
3. Aynı yerlerde bulunan “ MacOSX Package Types.xcspec ” ve “ iPhone Simulator PackageTypes.xcspec ” i açın.
4. Paket türüne sahip “ MacOSX Product Types.xcspec ” içindeki öğeyi bulun ve com.apple.package-type.mach-o-dylib
“ iPhone Simulator PackageTypes.xcspec ” e sürükleyin .
5. “ iPhoneOS.platform ” için adımları tekrarlayın ve çalışıyorsa Xcode'u yeniden başlatın .
Şimdi, bir dylib oluşturalım. " Cocoa Touch Statik Kitaplık " Şablonu ile başlayın . Bu, projeye Foundation.framework'ı içermelidir. Dylib'i oluşturmak için şablonun üstünde yaptığım değişiklikler.
1. project.pbxproj dosyasını (Xcode proje dosyası paketinde bulunur) bir Metin Düzenleyicide açın. "Ürün türü " dizesini arayın , değerini olarak değiştirin com.apple.product-type.library.dynamic
;
Şimdi, Xcode ile projeyi açın, Proje-> Proje Ayarlarını Düzenle'ye gidin.
2. Dylib'i uygulamanın çalıştırılabilir dosyasıyla aynı dizine koymayı planladığım için " Kurulum Dizini " olarak ayarlandı @executable_path/
.
3. " Mach-O Tipi " Dinamik Kitaplığa ayarlandı
4. " Yürütülebilir Uzantı " dylib olarak ayarlandı
5. " Yürütülebilir Önek " boş olarak ayarlandı
6. Kitaplığa bir veya iki basit yöntem ekleyin ve oluşturun.
Şimdi, test etmek için bir uygulama oluşturun. Bu sefer Görünüm tabanlı Uygulamayı seçiyorum . Kitaplığı çağırmak ve dönüş mesajını göstermek için bir UIButton ve bir UILabel bağlayın. Sen edebilirsiniz komple proje TestApp indirmek ve onunla oynamak.