Saat ini saya membangun semua aplikasi saya dengan hudson menggunakan xcodebuild diikuti oleh xcrun tanpa masalah
Saya telah menerima beberapa file IPA dari orang yang berbeda yang ingin saya tandatangani kembali dengan akun perusahaan alih-alih akun perusahaan (untuk app store, atau terkadang didistribusikan secara ad-hoc).
Masalah saya adalah ketika saya mencoba untuk mengundurkan diri dari aplikasi, itu tidak akan menginstal pada perangkat saya (dan itu harus karena itu adalah membangun Enterprise). Pesan kesalahan ada di perangkat (bukan di iTunes) dan itu memberi tahu saya bahwa itu tidak dapat menginstal aplikasi. Tidak ada informasi lagi yang diberikan.
Saya telah menemukan beberapa informasi, ( http://www.ketzler.de/2011/01/resign-an-iphone-app-insert-new-bundle-id-and-send-to-xcode-organizer-for- unggah / )
Dan ini mungkin saja terjadi. Masalah yang saya hadapi adalah sepertinya tidak menanamkan profil penyediaan seluler seperti yang saya lakukan dengan build normal (menggunakan xcrun) apakah ini mungkin untuk dikontrol dengan alat codesign, atau apakah mungkin untuk masuk kembali dengan xcrun ?
Dengan skrip pengunduran diri saya saat ini saya lakukan
- unzip app.ipa
- appname = $ (pays ls)
- xcrun -sdk iphoneos PackageApplication -s "$ provisioning_profile" "$ project_dir / Payload / $ appname" -o "$ project_dir / app-resigned.ipa" --sign "$ provisioning_profile" --embed "$ mobileprovision"
Saya telah melihat dalam file ipa yang dihasilkan dan tampaknya sangat mirip dengan aplikasi aslinya. File apa yang benar-benar harus diubah di sini? Saya awalnya berpikir bahwa _CodeSignature / CodeResources akan berubah, tetapi kontennya terlihat persis sama.
Pointer sangat dihargai.
/usr/bin/codesign -d --entitlements :entitlements.plist /Payload/appname.app
Lalu selama pengunduran diri yang mengundurkan diri--entitlements entitlements.plist
Jawaban atas pertanyaan ini sedikit kedaluwarsa dan kehilangan langkah-langkah kunci yang potensial, jadi ini adalah panduan yang diperbarui untuk menginstal aplikasi dari pengembang eksternal.
----- Cara Mengundurkan Aplikasi iOS -----
Katakanlah Anda menerima aplikasi (mis. MyApp.ipa) dari pengembang lain, dan Anda ingin dapat menginstal dan menjalankannya di perangkat Anda (dengan menggunakan ideviceinstaller , misalnya).
Siapkan Aset Penandatanganan Baru
Langkah pertama adalah mencapai Profil Penyedia yang mencakup semua perangkat yang ingin Anda instal dan jalankan. Pastikan profil tersebut berisi sertifikat yang telah Anda instal di Akses Keychain Anda (mis. Pengembang iPhone: Some Body (XXXXXXXXXX)). Unduh profil (MyProfile.mobileprovision) sehingga Anda dapat mengganti profil yang tertanam di aplikasi.
Selanjutnya, kami akan menyiapkan file hak untuk disertakan dalam penandatanganan. Buka terminal Anda dan jalankan yang berikut ini.
Ini akan membuat file xml yang menggambarkan Profil Penyedia Anda . Selanjutnya, kami ingin mengekstraksi hak menjadi file.
Ganti Profil Penyedia dan Pengunduran Diri Aplikasi
Jika Anda bekerja dengan file .ipa , pertama-tama, unzip aplikasi (jika Anda memiliki .app , Anda dapat melewati langkah ini).
Direktori kerja Anda sekarang akan berisi
Payload/
danPayload/MyApp.app/
. Selanjutnya, hapus file tanda tangan kode lama.Ganti profil penyediaan yang ada (mis. Embedded.mobileprovision) dengan milik Anda.
Sekarang tanda tangani aplikasi dengan sertifikat yang termasuk dalam profil penyediaan Anda dan daftar hak.plist yang Anda buat sebelumnya.
PENTING: Anda juga harus mengundurkan diri dari semua kerangka kerja yang termasuk dalam aplikasi . Anda akan menemukan ini di
Payload/MyApp.app/Frameworks
. Jika aplikasi ini ditulis dalam Swift atau jika ia menyertakan kerangka kerja tambahan ini harus diundurkan atau aplikasi akan menginstal tetapi tidak berjalan.Anda sekarang dapat memposting ulang aplikasi.
Selesai
Anda sekarang dapat menghapus
Payload
direktori karena Anda memiliki aplikasi asli Anda (MyApp.ipa) dan versi Anda yang sudah keluar (MyApp-resigned.ipa). Sekarang Anda dapat menginstal MyApp-resigned.ipa di perangkat apa pun yang termasuk dalam profil penyediaan Anda.sumber
Saya berhasil mengikuti jawaban ini, tetapi karena hak telah berubah, saya hanya menghapus
--entitlements "Payload/Application.app/Entitlements.plist"
bagian dari pernyataan kedua ke terakhir, dan itu bekerja seperti pesona.sumber
SecItemCopyMatching: missing entitlement
. Saya tidak punya file Entitlements.plist terpisah, sehingga untuk melestarikan hak saya menggunakan @ komentar LordT ini : pertama membuat file hak:echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>/usr/bin/codesign -d --entitlements - temp/Payload/$APP_NAME | sed -E -e '1d'" > temp/newEntitlements
, kemudian menggunakannya saat penandatanganan:--entitlements temp/newEntitlements
.Diperiksa dengan Mac OS High Sierra dan Xcode 10
Anda cukup menerapkan hal yang sama menggunakan aplikasi iResign .
Berikan path 1) .ipa
2) profil ketentuan baru
3) File hak (Opsional, tambahkan hanya jika Anda memiliki hak)
4) Bundel id
5) Sertifikat Distribusi
Anda dapat melihat file output .ipa disimpan setelah masuk kembali
Alat sederhana dan kuat
sumber
Tidak ada satu pun dari pendekatan pengunduran diri ini yang berhasil untuk saya, jadi saya harus mencari cara lain.
Dalam kasus saya, saya memiliki IPA dengan sertifikat yang kedaluwarsa. Saya dapat membangun kembali aplikasi, tetapi karena kami ingin memastikan bahwa kami mendistribusikan versi yang persis sama (hanya dengan sertifikat baru), kami tidak ingin membangunnya kembali.
Alih-alih cara pengunduran diri yang disebutkan dalam jawaban lain, saya beralih ke metode Xcode untuk membuat IPA, yang dimulai dengan .xcarchive dari build.
Saya menduplikasi .xcarchive yang ada dan mulai mengganti isinya. (Saya mengabaikan file .dSYM.)
Saya mengekstrak aplikasi lama dari file IPA lama (via unzipping; aplikasi itu satu-satunya di folder Payload)
Saya memindahkan aplikasi ini ke .xcarchive baru, dengan
Products/Applications
mengganti aplikasi yang ada di sana.Saya mengedit
Info.plist
, mengeditApplicationProperties/ApplicationPath
ApplicationProperties/CFBundleIdentifier
ApplicationProperties/CFBundleShortVersionString
ApplicationProperties/CFBundleVersion
Name
Saya memindahkan .xcarchive ke folder arsip Xcode, biasanya
/Users/xxxx/Library/Developer/Xcode/Archives
.Di Xcode, saya membuka jendela Organizer, mengambil arsip baru ini dan melakukan ekspor reguler (dalam hal ini Perusahaan).
Hasilnya adalah IPA bagus yang berfungsi.
sumber
Saya pikir yang paling mudah adalah dengan menggunakan Fastlane:
sumber
Dengan opsi pengunduran diri Fastlane, Anda dapat melakukannya dengan sangat mudah.
Anda dapat mengunduh profil menggunakan desahan juga, tepat sebelum perintah.
sumber
Terima kasih, Erik, karena memposting ini. Ini berhasil untuk saya. Saya ingin menambahkan catatan tentang langkah tambahan yang saya butuhkan. Di dalam "Payload / Application.app /" ada direktori bernama " CACertChains " yang berisi file bernama " cacert.pem ". Saya harus menghapus direktori dan .pem untuk menyelesaikan langkah-langkah ini. Terima kasih lagi! -
sumber
Jika Anda memiliki aplikasi dengan ekstensi dan / atau aplikasi arloji dan Anda memiliki beberapa profil penyediaan untuk setiap aplikasi ekstensi / tonton maka Anda harus menggunakan skrip ini untuk menandatangani ulang file ipa.
Menandatangani ulang skrip di Github
Berikut adalah contoh cara menggunakan skrip ini:
Anda juga dapat memasukkan profil penyedia ekstensi lainnya dengan menambahkannya dengan opsi -p lainnya.
Bagi saya - semua profil penyediaan ditandatangani oleh sertifikat / identitas penandatanganan yang sama.
sumber
fastlane sigh resign YourApp.ipa --signing_identity "iPhone Distribution: YourCompanyOrDeveloperName" -p <path_to_provisioning_profile_for_app>.mobileprovision -p <path_to_provisioning_profile_for_watchkitextension>.mobileprovision
sebagai gantinya.