2010-12-01 13 views
7

iOS için bir statik kitaplık oluşturuyorsanız, üstbilgileri dosyaya/klasörlere dağıtmanız mı gerekiyor, yoksa işe almak için başka bir yolu var mı?iOS için bir statik kitaplık ve dağıtım için simülatör oluşturma

Şu anda hem aygıt hem de simülatör için tek bir my_lib.a dosyası var ancak bunu kullanmak için başka bir test uygulamasına sürüklediğimde, üstbilgiyi bulamıyor ve onu kullandığım tüm yerleri söylüyor kodunda bildirim yapılmamış. Yani ya yanlış bir şey yaptığımı ya da uygun başlık dosyalarını da göndermem gerektiğini düşünüyorum. Benim sürecine

Amaç: Ben cihaz ve simülatör ikisi için statik bir kütüphane oluşturmak için iki kılavuzları gördüm

. Bu sitede biri: Build fat static library (device + simulator) using Xcode and SDK 4+

ve burada bir:

http://mark.aufflick.com/blog/2010/11/19/making-a-fat-static-library-for-ios-device-and-simulator Sadece denemek için ikinci siteyi kullandı. Doğru yapmış olsam da biraz meraklıyım. Release-iphone (os | simulator) klasörlerine girdim ve simülatör 1'de ios ve .o'da .a'yı buldum.

cevap

3

Kısa cevap evet, başlık dosyalarını statik kitaplığınızla birlikte paketlemelisiniz. Başlık dosyalarını aslında herhangi bir kütüphaneyle, dinamik veya statik olarak paketlemeniz gerekir. Kütüphanenin kendisi derlenmiş kodu içerir, fakat yine de derleyiciye kütüphanedeki tanımlayıcılar hakkında bilgi vermeniz gerekir, böylece kodunuzu derlediğinde var olduklarını bilirler.

Dikkat ederseniz, statik kitaplığınızı dikkatli bir şekilde statik bir çerçeveye paketleyebilirsiniz. Dinamik bir çerçevenin .a dosyasını .dylib (veya .so) dosyasının yerine sahip olduğu aynı dizin yapısını oluşturursunuz. Çerçeveler üstbilgiler için bir dizin içerir, böylece ikili ve üstbilgileri tek bir paket olarak dağıtabilirsiniz ve Ek Üstbilgi Arama Yolları oluşturma ayarıyla uğraşmadan üstbilgileri bir çerçeveden kolayca içe aktarabilirsiniz.

+0

Bilgi için teşekkürler Adam. Anladığım kadarıyla (ve googlediğim şeyden), devlerin iOS için çerçeve oluşturmalarına izin verilmiyor. Bu artık böyle değil mi, eğer öyleyse, bu çerçeveyi nasıl oluşturacağınız konusunda herhangi bir kaynağınız var mı? Son olarak, evrensel kütüphanemi doğru şekilde oluşturuyor muyum? Sadece soruyorum çünkü kullandığım kılavuz (2. link) .o dosyalarından bahsetmiyor. – Aaron

+0

Daha yüksek seviyeli Releases-iphone [os | simulator] 'a gitmem gerektiğinde projemin .build klasörüne (project_name.build/Objects-normal/ARCHITECTURE/project_target.[a|o]) gittiğimi öğrendim. ] /project_target.a. Daha sonra, bir .a dosyasında armv6 ve armv7 ve simülatör klasörünün .a dosyasındaki i386 vardır. Ayrıca, iphone os kütüphanesini eklerken, armv6 ve armv7 içeren bir yağ dosyası olduğu için bir mimari belirtmezsiniz. – Aaron

+0

Statik çerçevelerde gerçekten iyi kaynaklar bilmiyorum, çünkü Xcode'un bunları yapmak için yerleşik bir yolu yoktur. Statik kütüphaneler içeren ve onları ayrı ayrı toplayan birkaç proje bularak onları çözdüm. PLBlocks statik bir çerçeve olarak geldi, GHUnit'in statik bir çerçeve olarak geldiğine inanıyorum ve Cedar'un (http://github.com/pivotal/Cedar) bash betikleri kullanarak statik bir çerçeve oluşturma hedefinin olduğunu biliyorum. Onları kontrol et; bu sadece dizin yapısını ve bağlantılarını kopyalamak meselesi. –

0

Yararlı olması durumunda - Ray Wenderlich'in talimatlarını here'dan takip ettim ve birçok mimariyi bir kerede (simülatör dahil) destekleyen bir çerçeve oluşturabiliyordum. Talimatlar, sadece kopyalayıp yapıştırmak için biraz uzun.

İlgili konular