Xcode 3.2 menyediakan fitur baru yang luar biasa di bawah menu Build, "Build and Archive" yang menghasilkan file .ipa yang cocok untuk distribusi Ad Hoc. Anda juga dapat membuka Organizer, buka "Aplikasi yang Diarsipkan," dan "Kirim Aplikasi ke iTunesConnect."
Apakah ada cara untuk menggunakan "Build and Archive" dari baris perintah (sebagai bagian dari skrip build)? Saya berasumsi bahwa xcodebuild
itu akan terlibat entah bagaimana, tetapi man
halaman tampaknya tidak mengatakan apa-apa tentang ini.
PEMBARUAN Michael Grinich meminta klarifikasi; inilah yang sebenarnya tidak dapat Anda lakukan dengan build-line perintah, fitur yang HANYA dapat Anda lakukan dengan Xcode's Organizer setelah Anda "Build and Archive."
- Anda dapat mengklik "Bagikan Aplikasi ..." untuk membagikan IPA Anda dengan penguji beta. Seperti yang ditunjukkan Guillaume di bawah ini, karena beberapa keajaiban Xcode, file IPA ini tidak memerlukan file .mobileprovision yang didistribusikan secara terpisah yang harus diinstal oleh penguji beta; itu ajaib. Tidak ada skrip baris perintah yang bisa melakukannya. Misalnya, skrip Arrix (dikirim 1 Mei) tidak memenuhi persyaratan itu.
- Lebih penting lagi, setelah Anda menguji versi beta sebuah build, Anda dapat mengklik "Kirim Aplikasi ke iTunes Connect" untuk mengirimkan versi EXACT yang sama ke Apple, biner yang Anda uji, tanpa membangunnya kembali. Itu tidak mungkin dari baris perintah, karena menandatangani aplikasi adalah bagian dari proses pembuatan; Anda dapat menandatangani bit untuk pengujian beta Ad Hoc ATAU Anda dapat menandatanganinya untuk diserahkan ke App Store, tetapi tidak keduanya. Tidak ada IPA yang dibangun pada command-line yang dapat diuji beta pada ponsel dan kemudian dikirimkan langsung ke Apple.
Saya ingin seseorang datang dan membuktikan saya salah: kedua fitur ini bekerja sangat baik di GUI Xcode dan tidak dapat direplikasi dari baris perintah.
sumber
xcodebuild
. Membuat file IPA hanya melibatkan menempatkan aplikasi ke direktori bernama "Payload", zip direktori itu, dan mengganti nama ke MyAppName.ipa.Jawaban:
Saya menemukan cara mengotomatiskan proses pembuatan dan pengarsipan dari baris perintah, saya baru saja menulis artikel blog yang menjelaskan bagaimana Anda dapat mencapainya.
Perintah yang harus Anda gunakan adalah
xcrun
:Anda akan menemukan semua detail di artikel . Jika Anda memiliki pertanyaan jangan ragu untuk bertanya.
sumber
RELEASE_BUILDDIR
perlu menjadi jalur absolut.-o "${ipa_path}"
harus merupakan path absolut. Kalau tidak, Anda mungkin akan mendapatkanerror: Unable to create '.../...ipa'
atau akan diabaikan menciptakan diam-diam. Sialan itu menyia-nyiakan saya beberapa jam.Dengan Xcode 4.2 Anda dapat menggunakan flag -scheme untuk melakukan ini:
Setelah perintah ini, Arsip akan muncul di Xcode Organizer.
sumber
archive
tindakan tidak menghormati pengaturan apa pun yang Anda berikan melalui doa ini, selain dari ruang kerja dan skema - ini hanya menghabiskan waktu berjam-jam !xcode-select <path to Xcode.app>
-scheme <SchemeName>
"Arsipkan
Ekspor IPA ( harap perhatikan daftar opsi ekspor )
Bagi mereka yang tidak tahu tentang exportOptions.plist, https://blog.bitrise.io/new-export-options-plist-in-xcode-9
Mereka yang menggunakan ini untuk membangun proyek di alat CI / CD seperti teamcity / jenkins, pastikan Anda menggunakan xcode yang tepat yang dipasang di agen build untuk arsip dan ekspor.
Anda dapat menggunakan salah satu dari opsi di bawah 2 untuk ini.
Berikut ini adalah skrip baris perintah untuk membuat arsip dan contoh IPA. Saya memiliki proyek xcode iPhone, yang terletak di folder Desktop / MyiOSApp.
Jalankan perintah berikut satu per satu:
Ini diuji dengan Xcode 5 dan berfungsi dengan baik untuk saya.
sumber
xcodebuild -workspace <ProjectName>/<ProjectName>.xcworkspace -scheme <schemeName> clean archive -configuration release -sdk iphoneos -archivePath <ProjectName>.xcarchive
sedang melempar kesalahan:requires a provisioning profile with the Associated Domains feature. Select a provisioning profile for the "Release" build configuration in the project editor.
Saya telah menggunakan skrip build saya sendiri untuk menghasilkan paket ipa untuk distribusi ad hoc.
Skrip juga menambah nomor versi. Anda dapat menghapus bagian itu jika tidak diperlukan. Semoga ini bisa membantu.
sumber
The
xcodebuild
alat dapat membangun dan mengekspor produk arsip dengan -exportArchive bendera (sebagai dari Xcode 5). Langkah ekspor sebelumnya hanya mungkin melalui UI Xcode Organizer.Arsip dulu aplikasi Anda:
Diberikan
$ARCHIVE_PATH
(jalur ke file .xcarchive ), ekspor aplikasi dari arsip dengan salah satu dari berikut ini:File iOS .ipa :
File Mac .app :
Dalam kedua perintah tersebut -exportProvisioningProfile dan -exportSigningIdentity argumen adalah opsional.
man xcodebuild
untuk detail tentang semantik. Dalam contoh ini, profil penyediaan untuk bangunan iOS menetapkan profil penyediaan distribusi AdHoc, dan identitas penandatanganan untuk aplikasi Mac menentukan ID Pengembang untuk diekspor sebagai aplikasi pihak ke-3 (yaitu tidak didistribusikan melalui Mac App Store).sumber
-workspace
opsi ke xcodebuild (dan path ke ruang kerja)?man xcodebuild
menyatakan: "Untuk membangun ruang kerja Xcode, Anda harus melewati opsi -workspace dan -scheme untuk mendefinisikan bangunan".Kami mengembangkan aplikasi iPad dengan XCode 4.2.1 dan ingin mengintegrasikan bangunan ke dalam integrasi berkelanjutan kami (Jenkins) untuk distribusi OTA. Inilah solusi yang saya buat:
Kemudian Jenkins mengunggah file ipa, plist dan html ke server web kami.
Ini adalah template plist:
Untuk mengatur ini, Anda harus mengimpor sertifikat distribusi dan profil penyediaan ke gantungan kunci pengguna yang ditunjuk.
sumber
$WORKSPACE
daripada$PWD
untuk menghasilkanAPP_PATH
Saya menemukan beberapa jawaban lain di sini sulit untuk ditindaklanjuti. Artikel ini ini cocok untuk saya. Beberapa jalur mungkin harus absolut, seperti yang disebutkan dalam jawaban lain.
Perintah:
sumber
Anda BISA benar-benar mengundurkan diri dari build, seperti halnya XCode, sehingga Anda dapat menguji dan mengirimkan biner yang sama. Misalnya dalam skrip saya (mirip dengan yang di atas) saya membuat versi rilis saya yang ditandatangani sebagai bangunan AdHoc, lalu saya arsipkan itu sebagai IPA untuk pengujian, kemudian mengundurkan diri dengan sertifikat distribusi saya dan membuat file zip, yang saya kirim ke Apel. Baris yang relevan adalah:
sumber
Untuk Xcode 7 , Anda memiliki solusi yang lebih sederhana. Satu-satunya pekerjaan tambahan adalah Anda harus membuat file konfigurasi untuk mengekspor arsip.
(Dibandingkan dengan Xcode 6, dalam hasil
xcrun xcodebuild -help
,-exportFormat
dan-exportProvisioningProfile
opsi tidak disebutkan lagi; yang pertama dihapus, dan yang terakhir digantikan oleh-exportOptionsPlist
.)Langkah 1 , ubah direktori ke folder termasuk file .xcodeproject atau .xcworkspace.
Langkah 2 , gunakan Xcode atau
/usr/libexec/PlistBuddy exportOptions.plist
untuk membuat file opsi ekspor opsi. Omong-omong,xcrun xcodebuild -help
akan memberi tahu Anda kunci apa yang harus Anda masukkan ke file plist.Langkah 3 , buat file .xcarchive (folder, sebenarnya) sebagai berikut (build / direktori akan secara otomatis dibuat oleh Xcode sekarang),
Langkah 4 , ekspor sebagai file .ipa seperti ini, yang berbeda dari Xcode6
Sekarang, Anda mendapatkan file ipa di direktori build /. Kirimkan saja ke apple App Store.
Omong-omong, file ipa yang dibuat oleh Xcode 7 jauh lebih besar daripada oleh Xcode 6.
sumber
-scheme
dan-configuration
opsi menentukan cara menandatangani file ipa.Saya telah memberikan deskripsi singkat tentang langkah-langkah yang harus diikuti, dan parameter yang harus dilewati saat menghasilkan ipa menggunakan terrminal di bawah ini:
Buka folder yang berisi file proyek MyApp.xcodeproject di terminal
Dengan menggunakan perintah yang diberikan di bawah ini Anda akan mendapatkan semua Target aplikasi
Setelah perintah di atas dijalankan, Anda akan mendapatkan daftar target yang harus Anda pilih target spesifik yang Anda butuhkan untuk menghasilkan .ipa
Perintah di atas membangun proyek dan membuat file .app. Jalur untuk menemukan file .app adalah
./build/Release-iphoneos/MyApp.app
Setelah Build berhasil, jalankan perintah berikut untuk menghasilkan .ipa aplikasi menggunakan Nama Pengembang dan Profil Penyediaan menggunakan sintaksis di bawah ini:
Penjelasan dari setiap Parameter dalam sintaks di atas:
sumber
Xcode 8:
Format IPA:
Mengekspor arsip MyMobileApp.xcarchive sebagai file IPA ke jalur MyMobileApp.ipa menggunakan profil penyediaan Profil Distribusi MyMobileApp.
Format Aplikasi:
Mengekspor arsip MyMacApp.xcarchive sebagai file PKG ke jalur MyMacApp.pkg menggunakan aplikasi aplikasi identitas kation penandatanganan ID Pengembang Aplikasi: Tim Saya. Identitas penandatangan penginstal Penginstal Penginstal ID: Tim Saya secara implisit digunakan untuk menandatangani paket yang diekspor.
Halaman manual Xcodebuild
sumber
Buka folder tempat root proyek Anda dan:
sumber
Selangkah lebih maju, mengunggah ke iTunesConnect melalui commandline dengan Xcode 7 ! (Dengan asumsi Anda mulai dengan
.ipa
yang telah ditandatangani dengan profil rilis yang benar dan identitas penandatanganan.)Masuk
altool
, antarmuka CLI untuk Application Loader (docs
, halaman 38). Tersembunyi jauh di dalam struktur Xcode.app, adalah fungsi praktis yang memungkinkan kami mengunggah langsung ke ItunesConnect.Cukup jalankan
$ altool --upload-app -f file -u username [-p password]
untuk mengunggah yang baru dicetak.ipa
langsung ke Apple. Kata sandi adalah opsional, dan akan meminta Anda untuk itu jika Anda mengabaikannya.Jika ada masalah dengan aplikasi selama langkah verifikasi, konsol akan mencetaknya.
Anda kemungkinan harus mengekspor jalur ke
altool
jika Anda tidak ingin menyimpan lokasinya.Itu dia! Cukup masuk ke iTunesConnect.com dan pilih bangunan baru Anda untuk pengujian dengan testflight.
Catatan Akhir: Jika Anda mendapatkan pesan kesalahan
Exception while launching iTunesTransporter: Transporter not found at path: /usr/local/itms/bin/iTMSTransporter. You should reinstall the application
, Anda dapat mengikuti saran pada jawaban SO ini , untuk menjalankan symlink ke lokasi yang benar:sumber
Memperbaiki jawaban Vincent, saya menulis sebuah skrip untuk melakukan itu:
xcodearchive
Memungkinkan Anda untuk mengarsipkan (menghasilkan ipa) proyek Anda melalui baris perintah. Pikirkan itu seperti saudara perempuan dari
xcodebuild
perintah, tetapi untuk pengarsipan.Kode tersedia di github: http://github.com/gcerquant/xcodearchive
Salah satu opsi skrip adalah mengaktifkan pengarsipan simbol dSYM dalam arsip timestamped. Tidak ada alasan untuk tidak menyimpan simbol lagi, dan tidak dapat melambangkan log macet yang mungkin Anda terima nanti.
sumber
Bagaimana cara membangun proyek iOS dengan perintah?
&&
&&
Apa itu ExportOptions.plist?
ExportOptions.plist diperlukan dalam Xcode. Ini memungkinkan Anda untuk menentukan beberapa opsi saat Anda membuat file ipa. Anda dapat memilih opsi dalam UI yang ramah saat Anda menggunakan Xcode untuk mengarsipkan aplikasi Anda.
Penting : Metode untuk rilis dan pengembangan berbeda di ExportOptions.plist
AppStore:
Pengembangan
sumber
coba xctool, itu adalah pengganti untuk xcodebuild Apple yang membuatnya lebih mudah untuk membangun dan menguji produk iOS dan Mac. Ini sangat membantu untuk integrasi berkelanjutan. Ini memiliki beberapa fitur tambahan:
No.3 sangat berguna. Saya tidak tahu apakah ada yang bisa membaca output konsol xcodebuild, saya tidak bisa, biasanya itu memberi saya satu baris dengan lebih dari 5000 karakter. Bahkan lebih sulit dibaca daripada makalah tesis.
xctool: https://github.com/facebook/xctool
sumber
jika Anda menggunakan alat berikutnya: https://github.com/nomad/shenzhen
maka tugas ini sangat mudah:
sumber
sumber
Setelah memperbarui ke Xcode 8, saya menemukan bahwa perusahaan menghasilkan dengan ipa
Jadi saya beralih ke
xcodebuild -exportArchive
dan semuanya kembali normal.sumber
Maksud Anda opsi validasi / bagikan / kirim? Saya pikir itu khusus untuk Xcode, dan tidak cocok untuk alat membangun baris perintah.
Dengan sedikit kepintaran, saya yakin Anda bisa membuat naskah untuk melakukannya untuk Anda. Sepertinya mereka baru saja disimpan
~/Library/MobileDevice/Archived Applications/
dengan UUDI dan plist. Saya tidak bisa membayangkan akan sulit untuk merekayasa balik validatornya juga.Proses yang saya minati mengotomatiskan mengirimkan build ke penguji beta. (Karena pengiriman App Store jarang terjadi, saya tidak keberatan melakukannya secara manual, terutama karena saya sering perlu menambahkan teks deskripsi baru.) Dengan melakukan Build + Archive semu menggunakan CLI Xcode, saya dapat memicu build otomatis dari setiap komit kode, buat file IPA dengan profil bawaan yang tertanam, dan kirimkan melalui email ke penguji.
sumber
xcodebuild
dan membuat IPA.