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: [email protected] (ABCDEFGHIJ)". Maka perintahnya seperticodesign -f -s "iPhone Developer: [email protected] (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.
Jawaban:
Jawabannya hampir YA!
Saya berhasil menginstal build baru dari aplikasi yang sama pada perangkat melalui Fabric.io tanpa berlangganan dev apple. (Saya kira Anda juga dapat mendistribusikannya dengan iTunes. Kirim ipa ke tester, dan itu harus dapat menginstalnya melalui iTunes.)
Satu-satunya kelemahan adalah bahwa Anda harus menghubungkan perangkat ke Xcode setidaknya sekali . Kemudian Anda dapat menginstal versi baru dari jarak jauh. (Saya tidak menemukan cara untuk melakukannya secara manual mengetahui udid)
Saat Anda menghubungkan perangkat "tidak dikenal" ke xcode 7, ada
fix issue
tombol diTarget general settings
. Perbaiki masalah ini dan Xcode akan menghasilkan profil Provisioning baru dengan perangkat ini disertakan. (Anda dapat menemukannya di~/Library/MobileDevice/Provisioning Profiles
)Daripada Anda dapat menggunakan profil penyediaan ini untuk mendistribusikan aplikasi melalui Fabric.io
Automatic
bekerja untukku.Maaf kawan yang tidak cukup mahir dengan Xcode, saya tidak punya banyak waktu untuk menambahkan lebih sedikit panduan rawan kesalahan, tapi saya harap jawaban ini akan membantu seseorang dengan ide.
TIP: gunakan plugin quicklook ini untuk melihat di dalam ipas dan prov. profil!
sumber
Pada beberapa versi iOS 9.x dirilis sejak jawaban saya awalnya diposting, ini bahkan tidak lagi mungkin. Apple sekarang membatasi unduhan OTA ke akun yang tidak bebas, seperti yang ditunjukkan oleh kesalahan pada log perangkat setelah instalasi gagal.
Saya telah menguji ini secara luas, karena ini akan luar biasa untuk aplikasi saya juga.
Dapatkah saya mendistribusikan aplikasi saya OTA tanpa Keanggotaan Program Pengembang (memerlukan biaya)?
Anda dapat membuat dan menandatangani IPA dan membuat file Manifest untuknya, tetapi gagal menginstalnya di perangkat. Alasan untuk ini adalah Xcode perlu mengkonfigurasi IPA untuk perangkat itu (seharusnya menandatanganinya dengan benar dengan UDID). Anda bahkan dapat melihat ini terjadi jika Anda mencoba menyambungkan perangkat baru ke Mac dan menjalankan aplikasi Anda melalui Xcode. Jawaban singkatnya adalah tidak.
Apa yang bisa saya lakukan untuk membuat ini bekerja?
Anda dapat mendaftar untuk Program Pengembang dengan Apple (membutuhkan biaya) dan menambahkan UDID perangkatnya ke profil Anda, lalu membuat IPA dan file manifes, mengunggahnya ke server web dan mengirimkan URL kepadanya.
Ini benar-benar untuk keamanan, karena penghalang harga biasanya yang menghentikan aplikasi jahat dari didistribusikan melalui web. Belum lagi menjaga sebagian besar unduhan aplikasi di App Store.
Saya sudah mendaftar untuk program pengembang? Bagaimana saya mendistribusikannya sekarang?
Anda harus memiliki server web HTTPS (dan sertifikat SSL tempat Anda dapat membuat root sendiri). Anda juga harus menambahkan UDID mereka ke profil Pengembang Anda (saya tidak yakin bagaimana melakukannya). Anda harus menggunakan Xcode untuk membuat IPA (Produk> Arsip> Ekspor> Simpan untuk Penempatan Ad-hoc> Masuk dengan Apple ID> Ikuti instruksi) dan Anda akan mendapatkan Plist dan file IPA. Letakkan keduanya di server Anda dan ubah nilainya dalam file Plist agar sesuai dengan URL HTTPS di server Anda. Kemudian Anda menggunakan tautan khusus untuk menautkan ke manifes Plist, dan itu akan muncul meminta pengguna untuk menginstal aplikasi Anda. Jika semuanya berjalan dengan baik, pengguna akan memiliki aplikasi Anda. Anda juga harus kode metode pembaruan Anda sendiri jika Anda menginginkannya.
Jika ini adalah aplikasi yang ingin Anda distribusikan pada titik ini, mungkin lebih masuk akal untuk benar-benar meletakkannya di App Store, atau jika ini untuk pengujian beta gunakan TestFlight. Jika Anda memiliki akun pengembang, Anda dapat menggunakan TestFlight dan lewati semua hal ini untuk pengujian aplikasi. Yang Anda butuhkan hanyalah surel mereka dan agar mereka menginstal aplikasi TestFlight dari App Store. TestFlight dapat dikelola dari iTunes Connect.
sumber
xcodebuild
perintah yang akan membuat arsip .ipa serta menandatangani dan menyediakan aplikasi jika Anda menggunakan-exportProvisioningProfile
bendera (lihat komentar Pankaj Rathor).Pada dasarnya, seseorang harus menandatangani aplikasi. Anda bisa mendapatkan file IPA, tetapi itu tidak akan berjalan pada perangkat yang sewenang-wenang. Fokuslah pada hal itu dan Anda akan dengan cepat memutuskan apakah Anda ingin menanggung kerumitan setiap orang menggunakan Xcode atau jika membayar untuk Apple untuk menandatangani aplikasi Anda masuk akal.
Jika Anda mengandalkan iOS 9 yang bukan pengembang menandatangani dengan ID Apple lama, penguji Anda semua harus masuk dengan ID Apple Anda untuk menjalankan aplikasi.
Anda dapat membayar Apple untuk menangani akun dan menandatanganinya dengan membayar selama satu tahun akun pengembang. Kemudian Anda dapat mengirim email, membuka aplikasi di server mana pun, menggunakan TestFlight atau metode lainnya yang lebih mudah bagi Anda selain membagikan ID Apple Anda kepada penguji / pengguna aplikasi.
Anda selalu dapat mengirim kode sumber ke saudara Anda jika ia memiliki Xcode, tetapi Anda menyebutkan bahwa maksudnya adalah tidak memiliki seseorang yang memiliki Mac untuk menginstal dan menandatangani aplikasi.
Memecah penjara lebih mudah daripada memalsukan rantai sertifikat Apple, tetapi saya tidak merekomendasikan hal itu.
sumber