Bu soruna yönelik gördüğüm çözümlerin her biri ya uygunsuz göründü (başlıkları uygulamanın projesine kopyalamak) ya da yalnızca önemsiz durumlarda işe yarayacak kadar basitleştirildi.
Kısa cevap
Kullanıcı Başlığı Arama Yollarınıza aşağıdaki yolu ekleyin
"$ (BUILD_ROOT) /../ IntermediateBuildFilesPath / UninstalledProducts"
Bu neden işe yarıyor?
Önce sorunu anlamamız gerekiyor. Normal koşullar altında, yani Çalıştırdığınızda, Test ettiğinizde, Profillediğinizde veya Analiz ettiğinizde, Xcode projenizi oluşturur ve çıktıyı $ BUILT_PRODUCTS_DIR makrosu aracılığıyla erişilebilen Build / Products / Configuration / Products dizinine koyar .
Statik kitaplıkları ile ilgili çoğu kılavuzları olarak ayarlanması önerilir Kamu Başlıkları Klasör Yolu için $ TARGET_NAME , sizin lib dosyası haline gelmesi anlamına gelir $ BUILT_PRODUCTS_DIR /libTargetName.a ve başlıkları konur $ BUILT_PRODUCTS_DIR / hedefadı. Uygulamanız arama yollarında $ BUILT_PRODUCTS_DIR içerdiği sürece, içe aktarmalar yukarıda verilen 4 durumda çalışacaktır. Ancak arşivlemeye çalıştığınızda bu çalışmayacaktır.
Arşivleme biraz farklı çalışır
Bir projeyi arşivlediğinizde Xcode, ArchiveIntermediates adlı farklı bir klasör kullanır. Bu klasör içinde / YourAppName / BuildProductsPath / Release-iphoneos / öğesini bulacaksınız. Bu, arşiv oluşturduğunuzda $ BUILT_PRODUCTS_DIR'ın işaret ettiği klasördür . Oraya bakarsanız, yerleşik statik kitaplık dosyanıza bir sembolik bağ olduğunu ancak başlıkları olan klasörün eksik olduğunu göreceksiniz.
Başlıkları (ve lib dosyasını) bulmak için IntermediateBuildFilesPath / UninstalledProducts / adresine gitmeniz gerekir. Statik kitaplıklar için Yüklemeyi Atla seçeneğini EVET olarak ayarlamanızın söylendiği zamanı hatırlıyor musunuz? Bu, bir arşiv oluşturduğunuzda ayarın sahip olduğu etkidir.
Ek not: Yüklemeyi atlayacak şekilde ayarlamazsanız, başlıklarınız başka bir konuma yerleştirilecek ve lib dosyası arşivinize kopyalanarak, App Store'a gönderebileceğiniz bir .ipa dosyasını dışa aktarmanızı engelleyecek şekilde kopyalanacaktır. .
Çok fazla aramadan sonra, UninstalledProducts klasörüne tam olarak karşılık gelen herhangi bir makro bulamadım, bu nedenle yolu "$ (BUILD_ROOT) /../ IntermediateBuildFilesPath / UninstalledProducts" ile oluşturmam gerekiyor.
Özet
Statik kitaplığınız için, yüklemeyi atladığınızdan ve herkese açık başlıklarınızın $ TARGET_NAME içine yerleştirildiğinden emin olun.
Uygulamanız için, kullanıcı başlığı arama yollarınızı normal derlemeler için iyi çalışan "$ (BUILT_PRODUCTS_DIR)" ve arşiv derlemeleri için çalışan "$ (BUILD_ROOT) /../ IntermediateBuildFilesPath / UninstalledProducts" olarak ayarlayın.