Proyek pengarsipan di Xcode salah menciptakan bundel multi-aplikasi

170

Pengarsipan proyek saya di Xcode membuat bundel multi-aplikasi, alih-alih bundling target utama saya untuk rilis, itulah yang saya inginkan. Khususnya, ketika saya memvalidasi arsip saya di Organizer, itu memberi saya pesan:

"[nama proyek] tidak mengandung aplikasi bundel tunggal atau mengandung banyak produk. Silakan pilih arsip lain, atau sesuaikan skema Anda untuk membuat aplikasi bundel tunggal."

Sepertinya ada beberapa pengaturan dalam skema yang perlu disesuaikan, tetapi saya tidak tahu apa yang menyebabkan target lain dimasukkan.

Saya menggunakan Xcode 4.0 omong-omong.

Jared Friedman
sumber

Jawaban:

251

Oke, jawab pertanyaan saya sendiri. Ternyata itu adalah masalah dengan proyek-proyek dependen di XCode 4. Jika ini terjadi pada Anda, buka Pengaturan Bangun untuk semua proyek dependen Anda (mis. Perpustakaan statis) dan pastikan bahwa opsi "Lewati Instal" di bawah "Penempatan" diatur ke YA.

Lebih detail di sini: http://flakasoft.com/developer-tips/xcode-4-bug-solution-for-archiving-build-with-static-library/

Jared Friedman
sumber
1
Anda, tuan, adalah pahlawan saya! Saya tidak akan menemukan itu dengan mudah: P
Andrew Natoli
6
Mengubahnya menjadi "YA" ... masih gagal. :(
Joe D'Andrea
8
Lewati Instalasi perlu diatur ke Ya di perpustakaan statis saja, bukan Proyek atau Target Anda. Posting blog ini pada distribusi ad hoc berlaku sama untuk membangun app store dan memiliki bagian tentang Lewati Instal: musicalgeometry.com/?p=1237
jj0b
8
Beberapa perpustakaan (seperti CorePlot) mengharuskan Anda untuk mengubah bagian Salin Header dari fase build mereka juga. Jadi pastikan Anda melihat jawaban Ryan juga.
Tim Swast
2
Saya juga harus memindahkan semua file header (dari perpustakaan statis) di Target "Build Phases", di "Copy Header" Saya memindahkan mereka dari "Public" ke "Project".
Hlung
151

Dua hal yang perlu diperbaiki dalam sub proyek untuk menyelesaikan masalah ini:

  1. Seperti yang ditemukan Jared, di bawah Pengaturan Bangun, atur "Lewati Instal" menjadi "Ya"
  2. Di bawah Build Phases, periksa bagian Copy Header. Jika ada file header yang terdaftar sebagai Pribadi atau Publik, seret ke bawah ke bagian Project.
Ryan Grimm
sumber
7
Aku sangat mencintaimu Bung! : D
arielcamus
5
Saya memperbaiki semua pengaturan "Lewati Instalasi" tetapi yang saya lewatkan adalah bagian Copy Header, Terima kasih!
Thomas Einwaller
2
Saya menggunakan three20. Proyek ini memiliki file header terdaftar sebagai Pribadi atau Publik tetapi jika saya memindahkannya di bagian proyek itu tidak dikompilasi. Ada saran?
Breezeight
19
Berhentilah menggunakan Three20, bahkan jika Anda mengatasi masalah Xcode ini. Saya benar-benar serius!
Adam Eberbach
2
Jika Anda memiliki banyak proyek perpustakaan seperti yang kami lakukan dan mengalami kesulitan mencari tahu lompatan Instal perpustakaan mana yang diatur ke Tidak atau file header mana yang menyebabkan masalah, coba ini: Pilih arsip dan klik tombol Bagikan. Pilih opsi 'Simpan Produk Buatan'. Tekan Selanjutnya dan Simpan. Jelajahi direktori yang dibuat di Finder. Subdirektori 'libraries' akan mengidentifikasi perpustakaan yang Anda perlukan untuk mengatur Skip Install ke Yes. Usr / local / include akan mengidentifikasi file header pelakunya yang perlu Anda pindahkan dari Publik ke Project.
Sunil Gowda
10

Saya melakukan yang berikut untuk membuatnya bekerja untuk saya:

  1. untuk perpustakaan statis three20, saya menggunakan cocoapods untuk memasukkan file-file dalam proyek utama .. itu hanya menghilangkan semua masalah yang diberikan oleh three20 (dan mereka banyak ..) btw saya mencoba mengganti three20 dengan Nimbus .. tetapi Nimbus kurang pada beberapa fitur yang proyek saya menggunakan three20 for .. jadi Nimbus tidak membantu.
  2. atur lewati instal ke yes di bawah pengaturan build untuk semua sub proyek / perpustakaan statis lainnya dan alihkan header salinan dari publik ke proyek dalam fase build
  3. yang paling penting: di bawah sub perpustakaan .. di bawah tahap membangun saya memastikan bahwa tujuan menyalin file diubah dari Absolute pathmenjadi products directory.

dan itu dia!

petunjuk: untuk mendapatkan gambaran tentang file-file yang menyinggung yang menyebabkan arsip Anda membuat file arsip daripada sebuah ipa, lakukan ini:

  1. Pilih arsip dan klik tombol Bagikan.
  2. Pilih opsi 'Simpan Produk Buatan'.
  3. Tekan Selanjutnya dan Simpan.
  4. Jelajahi direktori yang dibuat di Finder.
  5. Subdirektori 'libraries' akan mengidentifikasi perpustakaan yang Anda perlukan untuk mengatur Skip Install ke Yes.
  6. dalam beberapa kasus usr/local/includeakan mengidentifikasi file header pelakunya yang perlu Anda pindahkan dari Publik ke Project atau file yang harus Anda ubah dari jalur absolut ke direktori produk. tetapi direktori itu (mis. usr / local / include) bervariasi tergantung pada struktur direktori sublibrary Anda
abbood
sumber
Saya akan memberi Anda 10 bintang, solusi yang saya baca sampai menemukan satu yang membantu. Saya baru saja mengklik file yang saya temukan pada langkah 6 dan menandainya di area keanggotaan target dari publik ke proyek, tidak perlu apa-apa.
Cristi Băluță
senang saya bisa membantu! alasan saya menulis itu b / ci pergi melalui apa yang Anda lakukan .. saya membaca mungkin 20 jawaban sebelum saya mulai memahami apa yang terjadi .. :)
abbood
Bisakah seseorang tolong jelaskan langkah 6? Saya tidak mengerti apa arti "usr / local / include akan mengidentifikasi file header pelakunya" dan di mana / bagaimana saya harus memeriksa file-file itu
Andrei F
@ CristiBăluță Bagaimana tepatnya Anda menemukan file dan di mana dalam pengaturan / menu? Saya memiliki masalah yang sama dengan XCode 11.2.1 dan saya tidak punya banyak pengalaman dengan xcode. Terima kasih.
Andrei F
Apa yang saya temukan adalah bahwa / usr / local / include adalah folder di dalam arsip (bersama dengan folder perpustakaan), tetapi arsip umum saya tidak memilikinya
Andrei F
0

saya juga memiliki masalah yang sama ini "[projectname] tidak mengandung aplikasi bundel tunggal atau mengandung banyak produk. Silakan pilih arsip lain, atau sesuaikan skema Anda untuk membuat aplikasi bundel tunggal." setelah memutakhirkan ke xcode5.

masalahnya adalah bahwa sekelompok bidang dalam pengaturan build saya untuk 'rilis' kosong. Saya kira xcode4 secara otomatis beralih ke pengaturan debug.

anwyays - perbaikan saya adalah menemukan semua pengaturan 'rilis' yang kosong dan mengaturnya ke pengaturan debug. Khususnya itu adalah pengaturan file Info.plist.

roocell
sumber