Mengikuti instruksi ini (lihat juga dokumentasi pengembang Apple dan jawaban BoltClock untuk menguji aplikasi iOS pada perangkat tanpa program pengembang apple atau jailbreak ), saya dapat mengkompilasi aplikasi iOS (dalam hal ini asalnya , aplikasi emulator konsol video game yang tidak memenuhi pedoman Apple dan tidak akan pernah diizinkan di App Store Apple) di Xcode 7, menandatanganinya dengan akun iCloud pribadi saya, memasukkannya ke iPhone saya (dengan menghubungkannya ke Mac saya dengan USB, dan memilih iPhone saya di menu xcode -> Produk -> Tujuan), dan izinkan ponsel saya untuk mengeksekusinya dengan "mempercayai" aplikasi dengan tanda tangan ini di Pengaturan -> Umum -> Profil, yang memasang sertifikat yang terkait dengan akun icloud saya ke perangkat.
Saya ingin meniru langkah-langkah ini dengan unduhan melalui udara. Bisakah saya mendapatkan Xcode untuk menghasilkan executable yang dapat saya bagikan dengan saudara saya, yang memiliki iPhone, tetapi tidak memiliki akses ke Mac dengan Xcode?
StackExchange Network menyelesaikan sesuatu seperti ini tampaknya untuk program beta aplikasi iOS-nya, dengan menggunakan distribusi perusahaan Apple melalui Manajemen Perangkat Seluler, sebagaimana disebutkan dalam pertanyaan ini . Ada juga BuildStore ( http://builds.io/ ), yang seharga $ 10 / tahun juga memungkinkan fungsi ini, tampaknya dengan menambahkan pengguna ke "tim pengembang" yang terkait dengan akun Program Pengembang Apple berbayar (lihat Apple dev docs ) . Dengan Xcode 7, mungkinkah melakukan hal seperti itu tanpa perusahaan atau bahkan akun pengembang berbayar biasa?
pembaruan: Terima kasih atas bantuan Stacksza, saya telah membuat beberapa kemajuan, yang akan saya ringkas di sini.
- XCode akan membuat arsip (Produk -> Arsip), tetapi itu tidak memungkinkan Anda untuk mengekspor arsip ke file .ipa untuk distribusi ad hoc tanpa berlangganan tier akun ADP berbayar.
- Tidak masalah, karena alat xcode baris perintah memang membuat .ipa dapat dieksekusi, bahkan tanpa akun ADP berbayar. Gunakan perintah seperti
xcodebuild -exportArchive -archivePath Provenance-Release\ 11-20-15\,\ 22.24.xcarchive/ -exportOptionsPlist ~/manifest.plist -exportPath ~/Provenance
(lihat jawaban Khawar di Cara membuat ipa di xcode 6 tanpa akun Pengembang Apple? ) - Tetapi perintah ini mengharuskan Anda untuk menentukan file .plist manifes. Jawaban oleh Razvan di Over The Air (OTA) iOS, Distribusi File IPA Untuk Umum? berisi contoh manifest.plist, serta instruksi untuk format hyperlink yang diperlukan untuk menyediakan tautan pengunduhan, yang harus di-host pada halaman web SSL. Mungkin URL SSL harus menghitung id bundel aplikasi, saya tidak yakin.
- Tetapi hal di atas hanya berfungsi jika aplikasi disediakan untuk perangkat yang mengunduhnya, dan perangkat telah menginstal sertifikat pengembang. Jadi misalnya perangkat yang sebelumnya terhubung melalui USB ke Xcode saya sekarang dapat mengunduh aplikasi melalui udara, yang sangat bagus. Ini adalah kemajuan. Tetapi untuk perangkat yang bersih, saya mendapatkan kesalahan
Could not install embedded profile: 0xe8008012 (This provisioning profile cannot be installed on this device.)
(seperti yang terlihat di konsol perangkat, yang dapat dilihat di Xcode -> Window -> Devices, atau yang lain di aplikasi Apple Configurator). - Agar aplikasi disediakan untuk perangkat, aplikasi tersebut harus berisi UDID perangkat dalam
embedded.mobileprovision
file, lihat Bagaimana Anda Menyematkan Profil Penyedia dalam Aplikasi iOS , Bagaimana mengotomatiskan memeriksa bidang dalam embedded.mobileprovision suatu ipa? , Bagaimana cara mengetahui profil apa yang digunakan untuk membuat file * .ipa? , dan Apakah ada cara untuk melihat UDID apa yang termasuk dalam build? . Anda tidak dapat hanya mengedit file ini untuk menambahkan UDID, karena CODESIGNATURE aplikasi tidak cocok, dan perangkat akan melaporkan kesalahanFailed to verify code signature of /private/var/mobile/Library/Caches/com.apple.mobile.installd.staging/temp.7jBjpk/extracted/Payload/Provenance.app : 0xe8008017 (A signed resource has been added, modified, or deleted.)}
- Oke, jadi kami harus mengundurkan diri dari aplikasi. Xcode menyediakan alat baris perintah yang disebut
codesign
yang dapat melakukan ini. Petunjuk ada di Cara menandatangani ulang file ipa? dan Tandatangani kembali IPA (iPhone) dan Mundur dari Aplikasi iPhone, masukkan ID Bundel baru dan kirim ke Xcode Organizer untuk Unggah dan Cara menandatangani ulang IPA secara manual dengan profil penyediaan yang baru . Saya harus menentukan sertifikat pengembang saya, nama tepatnya yang dapat ditemukan di Akses Keychain, di bawah tab Sertifikat, dan terlihat seperti "Pengembang iPhone: username@mac.com (ABCDEFGHIJ)". Maka perintahnya seperticodesign -f -s "iPhone Developer: username@mac.com (ABCDEFGHIJ)" Payload/Provenance.app
. Contoh perintah dalam instruksi di atas termasuk bendera yang disebut--resource-rules
, tapi saya tidak menemukan file seperti itu di aplikasi saya yang dikompilasi, jadi saya menghapus bendera itu. Saya bertanya-tanya apa fungsinya, dan apakah perlu. Sunting: Posting blog yang luar biasa Penandatanganan Kode Di Dalam oleh Thomas Kollbach menjelaskan bahwa--resource-rules
bendera yang digunakan untuk menyatakan bagian mana dari aplikasi yang harus ditandatangani, tetapi karena iOS8 sudah tidak digunakan lagi, dan seluruh aplikasi harus ditandatangani. - Sekarang aplikasi telah menambahkan UDID dan ditandatangani, mengunduhnya di perangkat baru memberikan kesalahan
Could not install embedded profile: 0xe8008003 (This provisioning profile is malformed
danA valid provisioning profile for this executable was not found
. Dugaan saya, masalahnya sekarang adalah perangkat masih belum menginstal sertifikat pengembang. Saat berhenti melalui Xcode, sebelum aplikasi akan dijalankan, Anda harus menemukan sertifikat yang terpasang di Pengaturan -> Umum -> Profil, pilih sertifikat Anda dan ketuk "trust". Namun opsi ini tidak muncul setelah pengunduhan aplikasi ad hoc over-the-air, jadi saya tidak yakin bagaimana untuk melanjutkan. Saya rasa saya perlu beberapa cara untuk menginstal sertifikat pengembang di perangkat. Menurut Menginstal profil penyediaan di iOS 8.0.2, dulu mungkin hanya dengan mengirim email sertifikat ke perangkat, tetapi itu tidak lagi berfungsi pada iOS 8. Saya belum mencoba mengkonfirmasi. Bagaimana saya bisa menginstal sertifikat pengembang saya ke perangkat iOS dari jarak jauh? - Saya mencoba mengekspor sertifikat pengembang iPhone dari Keychain Access, dan mengirimkannya melalui email ke perangkat. Perangkat dapat menginstal sertifikat, tetapi ditampilkan dengan peringatan merah bahwa itu tidak ditandatangani, sedangkan ketika sertifikat diinstal melalui Xcode / USB tidak memiliki peringatan seperti itu. Menurut Rhythmic Fistman, apakah mungkin untuk mengenkripsi ulang file embedded.mobileprovision? , profil harus ditandatangani oleh Apple untuk berfungsi. Ini mungkin titik tusuk. Apple hanya akan menandatangani sertifikat Anda jika Anda memiliki akun ADP berbayar.
- Posting blog tentang provisi oleh Sean Heber ini sangat menjelaskan tentang teori umum sertifikat pengembang dan profil provisi (bersama dengan Kollbach, keduanya harus dibaca). Berisi paragraf ini:
Alasan semua ini bekerja dan aman adalah karena Apple membuat profil penyediaan di portal dan kemudian menandatanganinya dengan kunci pribadi mereka sendiri sebelum mengirimkannya kepada Anda. Penandatanganan profil penyediaan adalah sesuatu yang hanya dapat dilakukan Apple. Karena itu file yang Anda unduh tidak dapat dirusak tanpa menjadikannya tidak sah. Profil penyediaan yang tidak valid tidak akan diterima oleh iOS dan dengan demikian Apple dapat mengontrol apa yang bisa dan tidak dapat disediakan oleh pengembang dengan hanya membatasi akses ke penandatanganan profil penyediaan untuk hal-hal yang diberikan izin kepada pengembang untuk mengonfigurasi di portal pengembang terlebih dahulu. place - meskipun profil penyediaan dapat mendukung sejumlah opsi luar biasa lainnya yang tidak dapat Anda gunakan tanpa jailbreaking. Inilah sebabnya mengapa Anda harus mendaftarkan perangkat pengujian di portal, tambahkan sertifikat Anda ke portal, dll - hanya hal-hal di portal (dan dengan demikian jumlah yang dapat dikontrol dan dibatasi secara sewenang-wenang oleh Apple) dapat dimasukkan dalam profil penyediaan yang dibuat dan ditandatangani dengan benar. Portal adalah tempat diberlakukannya kebijakan dan batasan Apple.
Ini sepertinya menjawab pertanyaan saya secara definitif (bisakah saya menjalankan aplikasi tanpa akun ADP berbayar) dengan "tidak". Meskipun artikel ini sebelum Xcode 7. Rupanya Xcode 7 akan mengirim UDID perangkat ke portal Apple, dan menerima sebagai tanggapan profil penyediaan yang ditandatangani oleh Apple, yang berisi UDID itu. Xcode 7 hanya melakukan ini ketika perangkat dicolokkan melalui USB dan dikenali oleh Xcode, tetapi orang bertanya-tanya apakah permintaan Xcode manual ke Apple dapat dibuat? Itu masuk lebih dalam ke rekayasa balik barang-barang Apple daripada saya nyaman dengan, dan mungkin melanggar ToS atau apa pun, jadi saya pikir saya puas dengan jawaban "tidak".
Menurut halaman tentang untuk BuildStore , mereka mengelola sesuatu yang serupa melalui email, jadi itu mungkin.
Xcode "Build and Archive" dari baris perintah sudah cukup lama (sekitar xcode 3), tetapi menyarankan menggunakan xcrun
daripada xcodebuild
yang telah saya gunakan.