2012-11-30 22 views
7

Bu soru Xcode artıları için kolay olacak ancak bir MonoTouch geliştiricisi için çözülmesi imkansız gibi görünüyor. :-)Xcode: Statik kütüphane projesi nasıl doğru bir şekilde oluşturulabilir?

Xcode 4.5 kullanıyorum ve iOS 5.1 ve üstü ile iOS Simulator 5.1 ve üstünü hedeflemek istiyorum.

Burada bir kütüphane projem var ve "DemoLib" adlı bir önceden oluşturulmuş ikili ile geliyor (uzantı yok ve 11MB boyutunda). Kütüphane, Simulator ve iOS 5.1+ için bir şişman libredir. Bu kütüphaneyi sorunsuz kullanabilirim. Ancak, kitaplığı kendim oluşturmaya çalışırsam, bir "DemoLib.a" dosyasıyla sonuçlanırım (uzantıyı ve 30 MB boyutunu bildir). Aynı yapı sonucunu nasıl alabilirim? Uzantısız dosya ile karşılaştırıldığında bir .a dosyası nedir? Xcode'ta "çalıştırmak için" ve "arşivlemek için" projesini oluşturmaya çalıştım. Her ikisi de aynı 30MB .a dosyasında sonuçlanır. Xcode'ta "DEBUG" veya "RELEASE" derlemesini seçebileceği ve ikincisinin daha küçük olan lib'i yaratabileceğini tahmin ediyorum.

+0

Bir MonoTouch kullanıcısının bakış açısıyla bunun nasıl yapılacağı hakkında bir makale olsaydı hoş olurdu. – jonathanpeppers

+0

MonoTouch hakkında hiçbir şey bilmiyorum, ancak Xcode'un yeni kullanıcısı olarak benzer bir sorun üzerinde çalıştım. Derleme zamanında binary'yi eklemeden statik bir bağlantı oluşturmak istediğiniz gibi görünüyor. Lütfen cevabınız değiştiğinden hangi Xcode sürümünü kullandığınızı belirtin. –

+0

@jonathanpeppers Evet, öyle olurdu. Xcode ucubeleri için büyük acıdan geçmesi doğal gibi gözüküyor, bu projeyi burada görebiliyorsunuz: https://github.com/jverkoey/iOS-Framework - Xcode için kullanılmayan biri için neden olduğunu anlamak neredeyse imkansız gibi görünüyor çok zor. – Krumelur

cevap

0

Makefile ile geldi mi? Yeni bir hedef oluşturun, hedefin yapı ayarlarını Makefile'de olana ayarlayın, sonra projenizi bu yeni hedefe bağlı olacak şekilde ayarlayın.

.a içeren bir dosya statik bir kitaplıktır; başka bir deyişle, dışsal bir şeye ve gereksinim duyulan tüm kodun içine derlenmiş olduğu anlamına gelir. Hiçbir uzantının genel olarak dinamik kütüphane anlamına gelmediğini düşünüyorum, bu da sisteminize bağlanacak bazı bağımlılıklara bağlı olacağı anlamına geliyor. Belki de bu yüzden .a çok daha büyük. IOS, dinamik kütüphanelerin kullanımına izin vermediği için Xcode'un varsayılan olarak statik olacağını düşünüyorum.

Yapacağınız şey için açılan menü şemanızda. Düzeninizi görüntülemek için Command + shift + <. Şemada, her bir bina yönteminin hangi ortamı kullanacağını düzenleyebilirsiniz.

3

Tabii ki çerçevenin proje dosyasını görmeden asla anlayamadım. Bunu söyledikten sonra, iOS çerçeveleri oluşturma ve derleme için mükemmel bir kılavuz var: https://github.com/jverkoey/iOS-Framework

Yukarıdaki kılavuzu kullanarak, çerçevenizin projesini sıfırdan yeniden oluşturabilir, sahip olduğunuz dosyaları ekleyebilir ve düzgün bir şekilde derleyebilirsiniz. o.

Bu yardımcı olur umarız! :)

+0

Bu rehber çok yardımcı oldu, teşekkürler! –

İlgili konular