Saya memiliki masalah dalam menghasilkan arsip Aplikasi iOS dari suatu aplikasi. Aplikasi mengkompilasi dengan baik dan bahkan berfungsi di simulator. Sekarang saya ingin membuat beberapa pengujian ad hoc dan tidak dapat menghasilkan Arsip Aplikasi iOS. Ketika saya mengklik Produk -> Arsipkan itu menghasilkan arsip xcode generik. Ada yang bisa bantu saya. Saya harus menyebutkan, bahwa saya telah membuat Arsip Aplikasi iOS untuk aplikasi ini. Itu baru saja berhenti untuk menghasilkan Arsip iOS karena beberapa alasan. Terima kasih banyak.
175
xcodebuild
. Solusinya adalah dengan menentukan tujuan:xcodebuild -destination generic/platform=iOS
Jawaban:
Periksa Pengaturan Bangun:
sumber
/usr/local/include
. Jika Anda sedang membangun perpustakaan statis, header haruslah Publik, jadi lebih tepat jika # 3 adalah mengubah Path Folder Header Publik menjadi sesuatu yang lebih masuk akal sepertiinclude/$(TARGET_NAME)
. @CopperCash mencatat ini dalam jawaban di bawah.Ini dapat terjadi jika Anda telah menambahkan kerangka / pustaka ... Anda perlu mengedit Target-> Bangun Pengaturan perpustakaan itu dan mengatur pengaturan 'Lewati Instal' ke 'Ya'. Saat Anda mengarsip ulang, XCode harus mulai memproduksi 'Arsip Aplikasi iOS' lagi daripada 'arsip xcode generik'.
sumber
Selain Lewati Instal ke Ya dan jika Anda membuka proyek lib / kerangka lain dalam proyek aplikasi Anda, Anda harus memindahkan tajuk (jika ada) dari publik ke proyek dalam Bangun Tahap / Salin Header .
sumber
Saya melakukan yang berikut untuk membuatnya bekerja untuk saya:
Absolute path
menjadiproducts directory
. Catatan: lihat petunjuk di bawah ini untuk mempersempit pencarian Anda untuk menemukan perpustakaan yang menyebabkan kesalahan ini.dan itu dia!
petunjuk: untuk mendapatkan gambaran tentang file-file yang menyinggung yang menyebabkan arsip Anda membuat file arsip daripada sebuah ipa lakukan ini:
usr/local/include
akan mengidentifikasi file header pelakunya yang perlu Anda pindahkan dari Publik ke Project atau file yang harus Anda ubah dari jalur absolut ke direktori produk (atau bahkan file yang Anda lupa atur lewati install ke flag ya). tetapi direktori itu (mis. usr / local / include) bervariasi tergantung pada struktur direktori sublibrary Anda. Dalam banyak kasus .. Anda akan melihat semua file yang tercantum di bawah Salin File di langkah 3 di atas yang tercantum di sini. Jika Anda menemukannya di sini, maka Anda memiliki jawaban yang pasti untuk penyebab masalah Anda.perbarui ke petunjuk: untuk membuat hidup lebih sederhana .. file apa pun yang muncul di langkah 4 dalam petunjuk di atas .. cukup cari di pencarian global xcode .. dan Anda akan mendapatkan hasil langsung untuk apa yang Anda inginkan .. misalnya, ini adalah isi folder saya (mengikuti langkah-langkah dalam petunjuk di atas):
Jadi saya bisa tahu itu ada hubungannya dengan perpustakaan crypto dan ssl .. mencari mereka:
membuat saya sadar bahwa saya lupa mengatur lewati install ke yes.
sumber
./usr/local/include
.Jika Anda mengekspor arsip, buka dan lihat
/urs/local/include
di Produk coba saran ini :Bekerja untuk saya setelah memutakhirkan aplikasi React Native saya menjadi
0.11.0
, Xcode7
dan CocoaPods0.39.0.beta.4
.sumber
Jika Anda menggunakan CocoaPods serta WatchKit atau Extension Hari Ini, ada masalah terbuka pada repo CocoaPods yang menjelaskan masalah apa yang mungkin Anda hadapi.
The solusi bagi saya adalah untuk menghapus
Copy Pod Resources
fase dari WatchKit Penyuluhan dan Hari Ekstensi menargetkan bawahBuild Phases
. Proyek dikompilasi dan diarsipkan seperti yang diharapkan setelah saya melakukan ini.Semoga ini bisa membantu seseorang, ini membuat saya bingung sepanjang hari!
sumber
Jika salah satu dari jawaban di atas tidak berfungsi, masalah Anda mungkin ada pada
cocoaPods
. Pembaruan terbaru0.38.1
mengacaukan segalanya bagi saya, tetapi kemudian saya menurunkannya0.37.1
dan hal-hal kembali normal. MenggunakanXcode 6.3.1
Sunting nanti: memperbarui ke
0.38.2
juga akan memperbaikinya. Info lebih lanjut tentang apa yang menyebabkan masalah ini di sini: Cocoapods 0.38.1 gagal membuat Arsip yang validsumber
0.38.2
dan masih memiliki masalah. Apakah Anda menggunakan Xcode 7?/Library/Frameworks
. Saya pikir itu mungkin ada hubungannya dengan pod kakao Google tidak dibangun sebagai kerangka kerja yang dinamis. Kedengarannya mirip dengan github.com/CocoaPods/CocoaPods/issues/3889Meskipun saya menggunakan Xcode5 dan apa yang disortir untuk saya adalah mengedit Skema Build - mencoba semua saran di atas yang berlaku tidak membantu dalam kasus saya.
Saya punya dua target, katakan, "App" dan "App FREE". Masalah saya dengan arsip umum terjadi ketika saya mencoba untuk Mengarsipkan versi GRATIS, yang saya tambahkan setelah versi aplikasi 'normal'. Dalam kasus saya, ketika saya memilih Skema di bilah alat dan memilih Edit Skema ... Saya melihat bahwa bagian Build memiliki dua target, yaitu Aplikasi dan Aplikasi GRATIS.
Saya menghapus centang pada semua kolom untuk Aplikasi, hanya menyisakan kolom Aplikasi GRATIS, dan mengklik OK. Lain kali saya memilih Produk> Arsip saya mendapat Aplikasi saya GRATIS daripada Arsip Generik. :)
sumber
Jika Anda hanya memiliki satu proyek, mungkin solusi ini akan bermanfaat. Masalah ini terjadi, ketika saya menggandakan target. Alhasil saya punya dua target paralel yang dibangun. Ini yang menyebabkan masalah. Arsip IOS generik dibangun.
Untuk menghidupkan paralel, buka
sumber
Saya mengalami masalah ini setelah memperbarui ke iOS 9 dan Xcode 7. Solusi Josh H bekerja untuk saya:
Saya juga membuat skrip pemasangan pos untuk Podfile saya untuk melakukan ini secara otomatis!
Cukup tambahkan ke bagian bawah Podfile Anda dan jalankan
pod install
sumber
Saya memiliki beberapa proyek di ruang kerja saya, (GTL, Pods dan proyek utama saya) dan inilah yang bekerja untuk saya:
Pilih Proyek, akan ada 2 jenis di sana, ada Proyek dan ada Target .
Untuk proyek yang bukan seperti utama Anda
GTL
atauPODS
:Proyek:
Target:
Untuk proyek utama (yang biasanya dinamai sama dengan nama produk Anda):
Proyek:
Target:
Periksa target penyebaran ios pada setiap proyek dan target untuk memastikan semuanya sama.
sumber
Saya punya masalah ini. Dalam kasus saya, itu disebabkan oleh menjaga target aplikasi Mac sebagai ketergantungan dari aplikasi iOS.
Alasan pengaturan seperti ini adalah bahwa aplikasi Mac adalah alat yang digunakan untuk menghasilkan beberapa data untuk aplikasi iOS, yang kemudian dimasukkan dalam bundel.
Saya harus menghapus ketergantungan itu dan membuat alat secara terpisah sebelum membuat aplikasi iOS itu sendiri.
sumber
Dalam skenario saya, saya mendapatkan "Generic Archive" yang keliru hanya setelah saya mulai memasukkan kode Swift dalam proyek Objective-C saya yang dominan. Setelah banyak pemecahan masalah dan pemeriksaan file arsip yang Xcode keluarkan, saya perhatikan bahwa
SwiftSupport
folder (dengan dylibs yang diperlukan untuk Swift runtime) berada di tempat yang berbeda di arsip saya daripada di arsip aplikasi proyek Swift vanilla yang baru .Saya menemukan
Installation Directory
pengaturan build dan memperhatikan bahwa itu diatur ke jalur khusus di proyek saya. Saya hanya menghapusnya (mengaturnya ke nilai generiknya yaitu/Applications
) dan Build -> Archive berikutnya saya bekerja sesuai yang diharapkan dan memberi saya Arsip Aplikasi iOS yang tepat.TL; DR: Pastikan
Installation Directory
pengaturan build Anda diatur ke nilai default/Applications
ketika menyertakan kode Swift di aplikasi Anda, terutama jika Anda memulai dengan file proyek yang lebih lama yang mungkin memiliki beberapa pengaturan build legacy yang tidak terduga.sumber
Meninggalkan ini di sini untuk menyelamatkan orang lain dari perjalanan yang sama.
Saya menemukan saya perlu menghapus fase membangun Sumber Salin Pod yang sama dari target pustaka statis di ruang kerja saya juga.
sumber
Tambahan untuk jawaban Alex L.
Poin 3. Ubah 'Bangun Pengaturan' -> 'Jalur Folder Header Publik' ke 'include / xxx' juga berfungsi.
sumber
Jika tidak ada yang di atas membantu Anda ... setelah banyak waktu .......
Saya menghapus nilai di Info.plist untuk Bundle Version karena saya cukup senang hanya dengan Bundle Version Short 1.0.Buruk. Jangan lakukan ini.
* Catatan Saya benar-benar melakukan ini dengan mengeditnya di UI di sebelah kanan tidak menyadarinya akan meletakkan kunci kosong di file Info.plist. Saya pikir itu membuatnya tidak valid. Bundel saya muncul sebagai barang lain saat diarsipkan dan tidak memiliki ikon, dan saya tidak dapat mengunggah ke mana pun.
Ini bermuara pada nilai yang tidak valid di Info.plist. Jika itu bukan arsip yang valid, coba unzip arsip yang lama dan masukkan / timpa arsip Anda saat ini dan lihat apakah arsip itu memperbaikinya saat membangun kembali arsip.
sumber
Pergi ke Bangun Pengaturan dan tambahkan
yourAppName / Resources / dist.plist pada Hak Penandatanganan Kode
Tekan cmd + B dengan Perangkat iOS atau Perangkat Nyata yang dipilih sebagai Build Target
Setelah selesai -> gulir ke folder "Produk" dan klik kanan pada yourAppName.app
Pilih "Show in Finder"
Buat folder dengan Nama Payload ( huruf besar "P" )
Salin Nama Aplikasi Anda ke dalam Folder Payload Anda
Buat zip dari Folder Payload Anda
Ganti nama zip menjadi YourAppName.ipa
DIBUAT
sumber
Setelah mencoba hampir segalanya:
Saya kemudian melihat partisi boot saya 'rendah pada ruang disk kosong' ... sekitar 1GB atau lebih. Saya reboot, lalu mendapat sekitar 18GB gratis.
Kemudian membuka Xcode dan memproyeksikan, melakukan Archive ... dan secara mengejutkan (setelah satu jam mencoba membangun Archive) akhirnya saya mendapatkan Non Generic Archive.
Tidak tahu apakah ini masalah disk bebas yang memperbaikinya atau reboot macOS yang memperbaikinya, tapi itu berhasil untuk saya.
sumber
Jika Anda memiliki file .xcodeproj di Project> Target> Build Phases> dependensi target hapus dari sana dan kemudian buat ipa Anda. Ini bekerja untuk saya. Bersulang
Anda dapat memperoleh jawaban di sini: xcode membuat arsip xcode generik alih-alih Arsip Aplikasi iOS
sumber
Dalam kasus saya, saya harus memindahkan FMDB dan BlocksKit ke perpustakaan statis. Sebelumnya mereka dibangun sebagai sub-proyek. Ingat Anda dapat menggunakan lipo untuk membuat perpustakaan universal. Saat membuat produk akhir, kode simulator akan dilucuti secara otomatis.
sumber
Alasan lain yang mungkin untuk ini adalah untuk memiliki referensi dalam "Ketergantungan Target" untuk proyek-proyek untuk platform yang berbeda. Dalam kasus khusus saya, saya sedang mengerjakan proyek yang membagikan kode untuk OSX dan iOS. Di salah satu target iOS, saya tidak sengaja menambahkan target OSX sebagai ketergantungan.
sumber
Agar teliti, saya memposting solusi saya.
Saya mengalami masalah yang sama persis mencoba membangun Arsip proyek iOS di Xcode 5.1.1 (5B1008). Tidak satu pun dari saran di atas memperbaiki masalah, dan kebanyakan dari mereka tidak relevan (saya belum menambahkan Kerangka, dan tidak memiliki entri Publik di bagian Copy Header dari Build Phases saya).
Dalam kasus saya, memperbaiki masalah terdiri dari hanya menutup proyek saya, menghapus semua arsip yang sebelumnya saya buat, pergi ke Preferensi> Akun, menghapus akun pengembang saya, berhenti Xcode, meluncurkan kembali, menambahkan kembali akun pengembang saya, memulai proses Arsipkan, memulai proses Arsip lagi. Ini segera memperbaiki masalah saya.
sumber
Satu lagi solusi, karena semua hal di atas tidak berhasil untuk saya ...
Mengubah
User Header Search Paths
(saya kiraHeader Search Paths
akan bekerja dengan elegan) untuk"$(BUILT_PRODUCTS_DIR)/BlocksKit"
.Latar belakang :
Di BlockKit, para pengembang telah menyusun struktur header dalam proyek utama secara berbeda dari struktur pada penerapan. Jadi, Anda tidak dapat merujuk header di proyek, dan harus referensi header yang disalin ke direktori build.
sumber
Cara ini bekerja untuk saya di (Xcode 5) saya memiliki 2 target dan ketika saya mengedit skema, di panel kiri editor skema, Anda akan melihat [BUILD, RUN, TEST, PROFIL XXX.APP, ANALYZE, ARCHIVE ] dari panel BUILD, Anda akan melihat target proyek Anda tercantum dalam daftar. Di ujung paling kanan Anda akan melihat pilihan ARCHIVE, pastikan hanya satu target yang dipilih untuk pengarsipan.
Saya memiliki 2 target yang dipilih dalam proyek saya, saya hanya memeriksa target yang saya inginkan dalam produk, dan itu berhasil!
sumber
Saya memecahkan kesalahan ini dengan hanya membuka proyek aplikasi di XCode, yaitu. tidak membuka ruang kerja terdiri dari aplikasi dan proyek / perpustakaan / kerangka kerja lainnya.
Memiliki 2 proyek terpisah, kerangka atau perpustakaan bersama dan aplikasi iOS, aku harus membuka 2 jendela Xcode yang berbeda, masing-masing dengan langsung membuka .xcodeproj file bukan umum .xcworkspace , untuk preperly membangun masing-masing.
Sebagai efek samping yang bagus, XCode tidak lagi membangun kembali setiap target dari setiap proyek setelah saya melakukan Clean , menghasilkan waktu pengembangan yang lebih singkat.
Latar Belakang: Saya membuat SDK sumber terbuka, dan aplikasi demo iOS. Saya sama-sama membuka di satu ruang kerja. Pengaturan Lewati instal ke YES pada target SDK akan mencegah siapa pun membuat arsip, karena itu akan kosong, jadi ini bukan pilihan. Menggunakan Project daripada Header publik akan menyebabkan arsip kehilangan file header yang harus didistribusikan, jadi ini juga bukan pilihan.
sumber
Untuk itu karena saya bekerja di ruang kerja. Proyek memang diarsipkan tetapi tidak akan ditampilkan di jendela penyelenggara. Saya menutup ruang kerja dan membuka proyek sendiri. Diarsipkan telah dibuka di penyelenggara ... semoga membantu.
sumber
Dalam kasus saya, saya memiliki skrip khusus yang menyalin beberapa file sementara ke:
Itu berarti bahwa, setelah menyelidiki arsip untuk memeriksa isinya, saya menemukan tepat di sebelah file .app folder myTempDir. Setelah saya memodifikasi skrip untuk menyimpan di tempat lain hal-hal diurutkan.
sumber
Coba atur Header $ (PROJECT_NAME) dalam Kerangka Folder Public Header Folder projet. Anda harus pergi untuk membangun pengaturan Target Perpustakaan kemudian mengedit jalur Folder Header Publik sebagai Header $ (PROJECT_NAME).
sumber
Jika menggunakan Xcode 7 dengan cocoapods v.0.38.2 . Coba hapus
copy pod resources
dari target ekstensi hari ini.sumber
Saya mengalami masalah ini setelah menambahkan alat baris perintah OS X ke proyek aplikasi iOS saya, dan Skip Install diatur ke NO secara default untuk target alat baris perintah. Karena Anda jelas tidak dapat menginstal biner OS X ke perangkat iOS, pengarsipan default ke arsip Xcode generik. Pengaturan Lewati Instal ke YES untuk target ini memperbaiki masalah.
sumber