Saya akan menambahkan 2 sen saya di sini (dengan cara yang kurang menakutkan :-). Saya telah menemukan cukup banyak perpustakaan gemuk dari Vendor yang (karena alasan tertentu) tidak berfungsi seperti biasa dengan menambahkannya ke Frameworks
direktori seperti yang didokumentasikan oleh Apple. Satu-satunya cara kita telah mampu membuat pekerjaan mereka adalah dengan menarik .framekwork
tepat ke direktori proyek dan menghubungkan Embedded Frameworks
dan Link Binary with Libraries
manual di Settings Build. Ini tampaknya telah bekerja tanpa masalah, karena dengan perpustakaan gemuk mereka datang dengan Simulator Arsitektur asing i386
dan x86_64
bersama denganarm
arsitektur.
Cara cepat untuk memeriksa arsitektur di perpustakaan gemuk adalah
$ cd 'Project_dir/Project'
$ lipo -info 'YourLibrary.framework/YourLibExec`
Yang mana harus mengeluarkan output seperti ini
Architectures in the fat file: YourLibrary.framework/YourLibExec are: i386 x86_64 armv7 arm64
Ini menegaskan bahwa Anda perlu "memotong lemak" (yaitu i386
&x86_64
) dari kerangka kerja Anda sebelum mengunggah iTunesConnect Archival, yang tidak mengizinkan arsitektur ini (karena tidak didukung untuk iOS).
Sekarang, semua jawaban (atau paling tidak beberapa jawaban) di sini memberikan Run Script yang luar biasa yang saya yakin berfungsi dengan sangat baik, tetapi hanya jika Kerangka Anda berada di Frameworks
direktori. Sekarang kecuali Anda pecandu skrip shell, skrip tanpa modifikasi, tidak akan berfungsi untuk skenario yang saya jelaskan di atas. Namun, ada cara yang sangat sederhana untuk menyingkirkan i386
& x86_64
arsitektur dari framework.
Buka terminal di direktori proyek Anda.
Ubah direktori langsung menjadi .framekwork
, seperti
cd YourProjectDir/YourProject/YourLibrary.framework
Jalankan serangkaian perintah seperti yang ditunjukkan di bawah ini-
$ mv YourLibrary YourLibrary_all_archs
$ lipo -remove x86_64 YourLibrary_all_archs -o YourLibrary_some_archs
$ lipo -remove i386 YourLibrary_some_archs -o YourLibrary
$ rm YourLibrary_all_archs YourLibrary_some_archs
Beberapa hal yang perlu diperhatikan di sini - lipo -remove
harus dilakukan sekali agar setiap arsitektur dihapus. lipo
tidak memodifikasi file input, itu hanya menghasilkan file sehingga Anda harus menjalankan lipo -remove
satu kali untuk x86_64
dani386
. Perintah di atas hanya melakukan itu dengan terlebih dahulu mengubah nama executable dan kemudian akhirnya menghapus lengkungan yang diinginkan, dan kemudian membersihkan sisa file. Dan itu saja, Anda seharusnya sekarang melihat tanda centang hijau di unggah Application Loader Archival ke iTunesConnect.
Hal-hal yang perlu diingat : Langkah-langkah di atas hanya boleh dilakukan saat produksi membangun, karena .framework
akan dilucuti dari arsitektur simulator, membangun di atas simulator akan berhenti bekerja (yang diharapkan). Dalam lingkungan pengembangan, seharusnya tidak perlu menghapus arsitektur dari .framework
file karena Anda ingin dapat menguji pada Simulator dan perangkat fisik. Jika pustaka Anda berada di Frameworks
folder dalam proyek maka silakan lihat jawaban yang diterima.