Xcode 6 - Bagaimana cara memilih profil penandatanganan sertifikat / penyediaan untuk distribusi Ad-Hoc?


143

Untuk mendistribusikan aplikasi ke penguji kami, kami menggunakan Xcode, yang kami lakukan menggunakan proses berikut:

  • Aplikasi arsip
  • Bagikan untuk Ad-Hoc
  • Pilih profil penyediaan
  • Simpan .ipa ke folder

Tetapi dengan Xcode 6 , alur kerja ini sedikit berubah. Saya masih dapat memilih opsi distribusi Ad-Hoc, tetapi saya tidak dapat memilih profil penyediaan yang saya inginkan. Ini memberi kami kendali atas sertifikat penandatanganan yang digunakan dan konfigurasi profil penyediaan (kami menggunakan pemberitahuan push).

Secara default iPhone distributionidentitas penandatanganan digunakan dan beberapa jenis XC Ad Hocprofil penyediaan dibuat, yang dapat dilihat pada gambar di bawah ini: Mengekspor IPA Jika Anda mengklik panah di dekat profil penyediaan, itu membuka folder dengan profil penyediaan.

Jadi pertanyaan saya adalah:

Apakah ada cara di Xcode 6 untuk memilih profil penyediaan yang digunakan dengan distribusi Ad Hoc?

Terima kasih!


Adakah yang tahu kalau ini sudah diperbaiki? Apakah ada cara untuk mendistribusikan build ke pengguna iOS 7 untuk menguji pemberitahuan push?
haupman

menggunakan versi GM Xcode 6, edisi yang sama ...
Chris Chen

Jadi kita masih belum punya solusi yang bagus untuk ini? jawaban di bawah tidak bekerja untuk saya. Bisakah kita menggunakan profil pencadangan XC ?? Saya tidak ingin kehilangan seminggu menunggu ulasan apel. Terima kasih
Miles M.

2
Saya mempunyai masalah ini hari ini dan sepertinya Xcode hanya menggunakan profil distribusi yang menggunakan semua perangkat yang Anda daftarkan secara online.
HackingOtter

1
Serius? Kami tidak dapat memilih file penyediaan? Saya percaya Yossarian hidup.
ajbraus

Jawaban:


52

Saya menghadapi masalah yang sama, diselesaikan menggunakan command line "xcodebuild" tool script, yang sudah diinstal dengan Xcode 6 (tidak perlu menginstal ulang Xcode 5).

http://www.thecave.com/2014/09/16/using-xcodebuild-to-export-a-ipa-from-an-archive/

Script di terminal:

xcodebuild -exportArchive -archivePath $projectname.xcarchive -exportPath $projectname -exportFormat ipa -exportProvisioningProfile 'Provisioning Profile Name'

1
ini bekerja untuk saya! jawaban lain menggunakan xcodebuildtidak memiliki -exportProvisioningProfilesaklar.
bunnyhero

6
Perhatikan bahwa ini tidak akan berfungsi dengan baik jika aplikasi Anda menggunakan ekstensi, kerangka kerja tertanam atau pustaka.
clarkcox3

4
Ini membantu saya. Terima kasih! Jadi Apple memperbarui XCode untuk menghasilkan XC Prov Profil jelek tetapi lupa tentang XCodeBuild. Kami beruntung kali ini. Oh! Bagaimana Apple membuat kita menderita!
kamyFC

1
Saya menetapkan ini sebagai jawaban yang diterima. Jawabannya mungkin tidak berfungsi untuk semua kasus, tetapi dengan modifikasi tertentu xcodebuild dapat digunakan untuk menyelesaikan masalah ini (inilah yang kami lakukan pada server CI kami).
Legoless

1
Saya berharap saya telah belajar 3 jam sebelumnya bahwa xcodebuild sekarang juga dapat mengekspor ke format ipa! Saya membuang banyak waktu untuk mencoba xcrun untuk menanamkan profil penyediaan yang diberikan, tetapi itu tidak akan bekerja pada Xcode 6. xcodebuild melakukannya! Terima kasih.
Oscar Hierro

31

Saya memiliki masalah serupa ketika mengirimkan ke The App Store. Saya membuat arsip, lalu mengklik "kirim" dan Xcode ingin secara otomatis masuk dengan profil bawaan "XC com. *", Dan bukan profil eksplisit yang sudah ada.

Untuk mengatasinya, saya baru saja membuat ulang profil di Portal Pengembang Apple:

1) Buka developer.apple.com dan temukan profil penyediaan distribusi yang ingin Anda gunakan.
2) Pilih, klik "Edit", beri nama lagi profil, dan klik "Hasilkan".
3) Unduh profil bawaan ke Desktop dan seret ke ikon Xcode 6.
4) Mulai ulang Xcode 6.
5) Buka jendela penyelenggara dan klik "Kirim" pada arsip yang Anda buat. Xcode akan secara otomatis memilih profil eksplisit Anda daripada yang umum.


Hai, apakah ada pernyataan resmi tentang perubahan ini?
jujur

Tidak yang saya tahu. Saya mencoba membandingkan profil lama & baru dalam editor teks untuk melihat apakah saya bisa melihat perubahan dalam format, tetapi saya tidak melihat sesuatu yang signifikan
GingerBreadMane

2
Saya skeptis tetapi ini berhasil untuk saya. Saya baru saja beralih ke Xcode 6 dan mencoba untuk menampilkan build ad hoc pertama saya
Newtz

Sampai sekarang saya menggunakan profil penyediaan Pembangunan. Apakah ini masih dapat digunakan atau saya perlu membuat profil distribusi?
Legoless

Ya Legoless, Anda harus membuat profil Distribusi untuk mengekspor bangunan. Anda masih dapat menggunakan profil Pengembangan untuk melakukan debug ketika perangkat Anda terhubung ke Mac Anda.
codeburn

27

Setelah Anda berada di Organizer

  • Pilih bangunan ad-hoc dan klik "Ekspor ...."
  • Pilih "Simpan untuk Penempatan Ad Hoc" -> Selanjutnya
  • Alih-alih memilih organisasi dari tarik turun, pilih "Gunakan aset penandatanganan lokal" -> Pilih
  • Ekspor dan simpan .ipa seperti sebelumnya.

Tentu saja Anda harus membuat, mengunduh, dan memasang profil penyediaan ad-hoc.


5
Memecahkan masalah berkat jawaban ini, dan jawaban ini . Profil penyediaan harus ditautkan ke ID Aplikasi Eksplisit, yang menggunakan pengidentifikasi bundel yang sama dengan aplikasi Anda. ID Aplikasi wildcard tidak akan berfungsi. Anda kemudian perlu memilih "Gunakan aset penandatanganan lokal" saat mengekspor aplikasi.
Sarah Elan

@SarahElan menggabungkan dua jawaban dan menulis yang baru ... terima kasih
YaBoiSandeep

Menurut pendapat saya dan tentang pengalaman saya, saya pikir ini adalah jawaban terbaik. Terima kasih.
Basem Saadawy

17

Tampaknya profil penyediaan yang dihasilkan terakhir menang saat ini. Jadi, Anda dapat membuat ulang profil yang Anda inginkan dan mengunduhnya dan Xcode akan menggunakannya.

Pendekatan yang sedikit lebih baik: tetapkan profil prov yang diinginkan di target Anda dan gunakan baris perintah untuk membangun ipa Anda, yang berfungsi juga.

Ini skripnya, saya menggunakan:

#!/bin/sh

# Current as working as of 2014/09/22
# Xcode 6

OUTPUTDIR="$HOME/build"
APPNAME="your-app"
SCHEME="your-app"
APP_WORKSPACE="$HOME/Path/To/your-app.xcworkspace"

rm "$OUTPUTDIR/$APPNAME.ipa" #deletes previous ipa
xcodebuild -workspace "$APP_WORKSPACE" -scheme "$SCHEME" archive -archivePath "$OUTPUTDIR/$APPNAME.xcarchive"
xcodebuild -exportArchive -exportFormat ipa -archivePath "$OUTPUTDIR/$APPNAME.xcarchive" -exportPath "$OUTPUTDIR/$APPNAME.ipa" 

dan pengaturan saya:

Pengaturan Xcode


Apakah ada cara yang lebih mudah?
Timur Bernikovich

Saya pikir itu karena MacOS 10.0. masih dalam versi beta.
Timur Bernikovich

1
Masalah dengan menggunakan profil Ad Hoc XC adalah bahwa mereka selalu menyertakan semua perangkat - menghilangkan opsi untuk menonaktifkan beberapa perangkat yang dapat Anda lakukan dengan profil manual.
Jonny

Profil XC Ad Hoc hanyalah sebuah contoh. Anda dapat menggunakan profil apa pun yang Anda suka.
Thorsten

Anda harus menghapus ekstensi '.ipa' dari argumen ke -exportPath, karena ekstensi sudah ditambahkan secara otomatis oleh xcodebuild.
Oscar Hierro

8

Saya tidak bisa mengetahuinya - dapatkan sedikit ketika mengirimkan ke AppStore, di mana ia default ke profil wildcard.

Saya akhirnya membangun Xcode 6, lalu kembali ke jendela Organizer Xcode 5 untuk pengiriman. Dengan begitu itu akan meminta Anda untuk memilih profil untuk masuk.


Ini adalah solusi yang saya lakukan. Tapi saya benar-benar ingin menyingkirkan Xcode 5 sekarang. Saya sedang berpikir untuk menggunakan xcrun dan baris perintah sekarang.
Legoless

Saya memang mencoba semua solusi yang disarankan saya temukan, namun ini adalah satu-satunya yang benar-benar berfungsi.
HunTer DRF

8

Dalam Xcode 6 (setidaknya 6,1 saya gunakan sekarang) ketika Anda melakukan ekspor untuk ad hoc, xcode 6 akan secara otomatis memindai jika ada profil penyediaan berisi semua perangkat yang terdaftar di akun pengembang dan pada saat yang sama cocok dengan bundel ID . Jika tidak, itu akan menggunakan profil ketentuan XC. Karena itu, jika Anda ingin menggunakan profil Anda sendiri, misalnya, untuk tujuan pemberitahuan push, Anda harus memilih semua perangkat di profil Anda di portal pengembang apple. Saya kira itulah alasan mengapa beberapa orang membuat ulang profil akan bekerja dan beberapa tidak.

btw, gunakan skrip dapat mengekspor dan mengunggah ke testflight, tetapi perangkat tidak bisa mengunduhnya. mungkin di suatu tempat saya salah. jika ada yang tahu mengapa itu, tolong beri tahu saya. tks


Terima kasih! Ini berhasil bagi saya. Saya mengedit profil untuk memasukkan semua perangkat, mengarsip ulang aplikasi, dan biola, menggunakan profil yang tepat.
Erik Villegas

Ini persis seperti itu dan kedengarannya seperti bug bagi saya atau bahwa sekarang Apple memperkenalkan TestFlight untuk mendistribusikan versi beta, distribusi AdHoc tidak mendapatkan perhatian yang sesuai. Apa yang terjadi pada saya persis seperti yang dijelaskan oleh @AlexHsieh; Saya membuat profil penyediaan saya seperti yang selalu saya lakukan sebelumnya, memilih hanya sebagian dari semua perangkat terdaftar saya dan ketika saya mencoba untuk menghasilkan IPA, Xcode tidak dapat menemukan profil penyediaan yang valid dan mencoba menggunakan XC yang dibuat secara otomatis ini (yang juga gagal dalam kasus saya). Cara mengatasinya adalah menambahkan semua perangkat terdaftar saya ke profil penyediaan.
jjramos

7

Ini bekerja untuk saya:

  1. klik "Lihat Akun .." dalam dialog ".. pilih Tim Pengembang ..".
  2. klik "Lihat Detail .." dan temukan profil penyediaan XC Ad Hoc.
  3. klik kanan pada profil itu dan pilih "Show in Finder".
  4. hapus profil yang dipilih.
  5. kembali ke dialog di langkah 1.
  6. klik "Pilih".
  7. klik panah di dekat profil penyediaan untuk membuka direktori profil penyediaan.
  8. hapus lagi profil generik seperti pada langkah 4.
  9. klik tombol "Sebelumnya" dari dialog "Kirim [nama aplikasi] ke Apple:".
  10. pilih lagi "Save for Ad Hoc Deployment"
  11. klik lagi tombol "pilih".

sekarang Anda akan melihat nama profil penyediaan yang tepat.


Saya tidak mencoba yang pertama. Tapi yang ini berhasil untukku. Terima kasih. =]
Glauco Neves

5
Tidak bekerja untuk saya. Bahkan setelah menghapus profil di langkah 4 dan 8, profil-profil itu dibuat ulang dan secara otomatis dipilih lagi di langkah 11.
Chun

1
Tidak berfungsi untuk saya karena setiap kali saya harus mengklik pilih akun (saya punya banyak akun untuk mengirimkan aplikasi ke klien saya) profil XC Generated dibuat kembali. PITA dari Apple.
wuf810

Saya akan menambahkan bahwa sebelum mengikuti langkah-langkah ini dengan XCode 6, Anda harus menghapus XC: * profil penyediaan dari akun pengembang apple Anda. Setelah langkah 4, saya akan kembali ke dialog Lihat Detail dan tekan tombol segarkan untuk memastikan bahwa XC: * profil tidak lagi ada. Juga, gunakan pengaturan build Thorsten untuk memastikan Anda memilih profil yang benar. Bekerja untuk saya dua kali.
Android Noob

Saya memiliki masalah yang sama dengan @Chun dan (@) wuf810. Sialan itu .mobileprovisi terus mendapatkan diciptakan kembali. Apa yang saya lakukan adalah menjaga jendela direktori "Provisioning Profiles" tetap terbuka dan teruskan langkah-langkah dari (@) user3382891- menghapus catatan .mobileprovision secepat mereka sedang diciptakan kembali. Akhirnya Xcode memilih profil penyediaan saya yang benar. Sekarang saya ke masalah berikutnya ...
Kerris

6

Saya punya solusi untuk ini yang bekerja untuk saya.

Saya sudah menginstal Xcode 6 dan Xcode 5.1.1, Xcode 6 ada di Aplikasi dan Xcode 5.1.1 ada di direktori lain. Ketika saya ingin membangun, saya menggunakan Xcode 6 untuk membuat Arsip. Tetapi Anda juga dapat melihat Arsip yang dibuat di Xcode 5.1.1 jadi saya menggunakan Xcode 5.1.1 untuk mendistribusikan .ipa Ad Hoc menggunakan profil penyediaan yang ingin saya gunakan. Jadi bangun menggunakan Xcode 6 tetapi distribusikan menggunakan Xcode 5.1.1.


saya tidak dapat mengunggah build ke testflight dengan cara ini.
hardik hadwani

Jika Anda menggunakan profil penyediaan yang sama untuk membangun dan mendistribusikan, maka Anda harus dapat mengunggah bangunan Anda untuk menguji penerbangan dengan cara ini. Periksa ulang bahwa profil penyediaan yang Anda gunakan untuk membangun sama dengan profil yang Anda gunakan untuk mendistribusikan.
Adam Freeman


3

Jawaban dari @MrPatol tidak berhasil untuk saya. Skenario kerja saya untuk Xcode 6.3.2

Di Pusat Anggota -> Profil Penyedia iOS

  • Hapus profil penyediaan yang ditetapkan secara default ketika Anda mencoba membangun aplikasi (mis. "XC ..."). Buat profil penyediaan sementara (bukan produksi) dengan nama pendek.

Di Utilitas Konfigurasi iPhone -> Provisioning Profiles

  • Hapus profil penyediaan yang sama (mis. "XC ...")

Dalam Xcode -> Organizer

  • Pilih bangunan ad-hoc dan klik "Ekspor ...." Pilih "Simpan untuk Penempatan Ad Hoc" -> Selanjutnya
  • Pilih organisasi dari drop down
  • Periksa apakah profil penyediaan ad-hoc baru Anda dipilih secara otomatis
  • Ekspor dan simpan .ipa seperti sebelumnya.

2

Inilah dua poin kunci yang memecahkan masalah bagi saya.

  • Saat Anda membuat profil penyediaan, itu harus dikaitkan dengan ID Aplikasi Eksplisit yang menggunakan pengidentifikasi bundel yang sama dengan aplikasi Anda. ID Aplikasi wildcard tidak akan berfungsi.
  • Saat Anda mengekspor aplikasi untuk penerapan ad-hoc, pilih Gunakan aset penandatanganan lokal di dropdown dan klik Pilih.

Xcode kemudian akan menemukan profil penyediaan yang benar dengan mencocokkan ID Aplikasi dengan pengidentifikasi bundel aplikasi.


1

Bahkan, Anda perlu membuat profil Distribusi baru, khusus untuk Penyebaran Ad Hoc. Ini dapat ditemukan di pusat anggota klasik, tetapi ini adalah jenis sertifikat baru.

Anda kemudian dapat memilih perangkat mana yang dapat digunakan untuk menguji aplikasi seperti yang Anda lakukan dengan profil pengembang.

Dan sertifikat yang baru dibuat akan tersedia ketika Anda mengekspor paket Anda dari Penyelenggara dengan cara biasa.

Atau Anda dapat menggunakan solusi TestFlight yang disediakan oleh Apple dengan iOS 8 untuk memungkinkan pengguna Anda memiliki akses ke pra-rilis.

masukkan deskripsi gambar di sini


Ya tapi seperti yang Anda tunjukkan ini berarti hanya iOS8. Apple sangat bodoh memaksa pengguna Testflight hanya untuk iOS8. Untuk sementara waktu namun basis terinstal terbesar masih akan iOS7, jadi apel seharusnya diizinkan untuk itu.
wuf810

1

Saya memiliki masalah yang sama, akhirnya saya menyelesaikannya dengan memperbaharui profil yang ingin saya gunakan di Xcode 6 termasuk semua perangkat yang telah saya daftarkan di akun Dev iOS saya, melakukannya dengan cara itu, ketika memilih ekspor itu menunjukkan profil yang benar dan saya dapat melakukan ekspor Ad Hoc dengan Xcode 6 tanpa menggunakan skrip. Semoga ini bisa membantu.


1
Ini berfungsi, tetapi hanya jika Anda setuju dengan profil penyediaan yang berisi semua perangkat yang terdaftar di akun dev iOS Anda. Untuk menggunakan hanya sebagian perangkat di profil penyediaan saya harus menggunakan teknik ini: stackoverflow.com/a/26296138/71262
Oran Dennison

0

Saya telah terjebak untuk sementara waktu dengan ini ,, tetapi menggunakan Crashlytics menyelesaikannya, membangun didistribusikan menggunakan profil yang dipilih dalam pengaturan build proyek Xcode Anda.

semoga membantu seseorang.


0

Masalah yang hampir sama. Setelah membuat arsip untuk distribusi (Produk> Arsip), Anda mengekspor arsip (klik Ekspor ...) dan pilih "Simpan untuk Penggunaan Perusahaan"; lalu "Next". Anda kemudian memilih default "Tim Pengembangan" (mis. Nama organisasi) dan klik "Pilih". Akhirnya Anda akan disajikan dengan tampilan ringkasan yang juga mencantumkan profil penyediaan yang secara otomatis ditemukan Xcode (mungkin dibuat saat itu juga) untuk Anda. MUNGKIN ini menjadi profil penyediaan yang salah (biasanya profil penyediaan wildcard, seperti "XC: *") dan MUNGKIN terjadi karena sudah ada profil penyediaan wildcard di portal pengembang.

Saya menggunakan tiket dukungan untuk ini dan hanya mendapatkan tautan ini kembali https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/ConfiguringPushNotifications/ConfiguringPushNotifications.html#//apple_ref/doc/uid/TP40012582 -CH32-SW1 . Tidak terlalu membantu.

Saya telah menemukan bahwa solusi MrPatol juga bekerja untuk Enterprise Deployment dan menyelesaikan masalah bagi kami. Saya pertama kali masuk ke portal pengembang dan secara manual membuat profil penyediaan yang cocok dengan aplikasi saya. Kemudian mengunduh dan menginstal profil penyediaan yang baru dibuat secara manual.


0

Di xcode 7, saya tidak dapat memilih provisi adhoc

Agenda -> Unggah ke App Store & Agenda -> Validasi

Tapi saya bisa memilih melalui Organizer -> Ekspor

Diedit:

Mengunggah aplikasi setelah mengekspor untuk adhoc ke app store untuk testFlight menyebabkan masalah lain yang dibahas di sini . Jadi, solusi untuk kedua masalah ini adalah satu. Buat penyediaan AppStore untuk dapat memilihnya melalui organizer dan memanfaatkan testFlight dengan mengunggah ke appstore.


0
  1. Saya pikir ini adalah cara yang tepat untuk menentukan opsi -exportOptionsPlist setelah Xcode 7. Ini akan memilih file ketentuan yang tepat seperti dalam ekspor GUI tidak peduli apa yang Anda tentukan dalam pengaturan proyek.

xcodebuild -exportArchive -archivePath $ Archive_Path -exportPath $ LOCAL_PACKAGE_DIR -exportOptionsPlist $ Export_Plist_Path

File optionPlist seperti ini,

<dict>
  <key>teamID</key>
        <string>MYTEAMID123</string>
        <key> teamID </key>
        <string>app-store</string>
        <key>uploadSymbols</key>
        <true/>
</dict>


<plist>

app-store, perusahaan, ad-hoc, pengembangan adalah alternatif

  1. Tetapi Anda mungkin menemukan kesalahan lain setelah di atas.

Domain Kesalahan = IDEDistributionErrorDomain Code = 14 "Tidak ada perangkat yang berlaku ditemukan." UserInfo = {NSLocalizedDescription = Tidak ditemukan perangkat yang berlaku.}

Ini masalah batu delima. Coba skrip shell ini,xcbuild-safe.sh

xcbuild-safe.sh xxxxNormalOptionsInXcodebuild bla...
  1. Tunggu sebentar, kesalahan aneh lain datang.

xcbuild-safe.sh: baris 62: shell_session_update: perintah tidak ditemukan

Apa sih shell_session_update? Mari kita mengatasinya. Cukup tentukan fungsi sebelum cmc xcodebuild yang asli, yaitu pada baris 60 atau 61.

function shell_session_update() { :; }

-4

Untuk menjawab pertanyaan spesifik Anda, tidak ada cara untuk memilih profil penyediaan untuk digunakan. Apa yang kamu coba lakukan? (mis. apa yang ingin Anda pilih agar profil yang dibuat secara otomatis tidak?)


1
Misalnya memiliki daftar UDID spesifik untuk aplikasi itu. Saya sedang mengembangkan aplikasi untuk banyak klien dan saya tidak bisa menggabungkannya. Ada beberapa cara untuk mengatasi hal ini, tentu saja, tetapi semuanya jauh lebih rumit daripada hanya memilih profil penyediaan yang ingin saya gunakan
Lope

Pasti ada cara untuk memilih profil penyediaan untuk digunakan. stackoverflow.com/a/26296138/71262
Oran Dennison

1
@ Lope Jika klien memiliki salah satu aplikasi Anda dan profil terkait yang diinstal, mereka dapat menginstal salah satu aplikasi Anda (bahkan jika profil aplikasi lain tidak mengandung perangkat mereka). Kebingungan ini adalah salah satu alasan utama kami ingin menjauhkan pengembang dari menentukan secara manual profil dan daftar perangkat mereka. (yaitu banyak orang tampaknya mengandalkan rasa aman palsu sebagai alasan utama mereka ingin secara manual menentukan profil)
clarkcox3

@ clarkcox3 yah itu bahkan lebih buruk, saya ingin menjaga agar klien tidak dapat saling melihat aplikasi lain
Lope

@Lope: Saya tidak mengetahui cara untuk mendistribusikan file ad hoc ipa yang akan membuat semua aplikasi Anda tersedia untuk penguji Anda. Dengan kata lain, Anda harus secara eksplisit memberikan kepada penguji Anda aplikasi yang Anda ingin mereka uji, kan? Pemisahan fisik itu akan mencegah mereka menggunakan aplikasi lain. (Bukannya mereka bisa pergi ke toko dan mendapatkan semuanya, ya?) Apakah ada cara lain di mana penguji Anda bisa mendapatkan akses ke semua aplikasi Anda tanpa izin Anda ???
leanne
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.