Xcode 5: Kesalahan hak penandatanganan kode

149

Saya telah membangun aplikasi baru yang akan mendukung iOS 7. Saya mendapatkan XCode 5 GM baru dan mencoba untuk menandatangani aplikasi saya menggunakan profil penyediaan baru dan sertifikat distribusi, tetapi saya mengalami masalah dengan distribusi. Saya terus-menerus mendapatkan kesalahan berikut:

"Kepemilikan Penandatanganan Kode Tidak Valid. Kepemilikan dalam tanda tangan bundel aplikasi Anda tidak cocok dengan yang ada dalam profil penyediaan. Menurut profil penyediaan, bundel berisi nilai kunci yang tidak diperbolehkan: '[XXXX.com.sample .company] 'untuk kunci' grup akses-kunci ".

Juga kesalahan yang sama untuk nilai kunci yang disebut application-identifier.

Tangkapan layar kesalahan ini:

masukkan deskripsi gambar di sini

Benjamin de Bos
sumber

Jawaban:

208

Solusinya terletak pada opsi baru di Xcode 5 yang mengatakan profil penyediaan. Cukup atur profil penyediaan target proyek ke yang tepat dan itu akan berhasil.

masukkan deskripsi gambar di sini

Benjamin de Bos
sumber
6
Untuk menambah jawaban ini - Saya memiliki tipe Distribusi dan Rilis untuk profil penyediaan. Saya mendapatkan kesalahan yang sama dan itu karena saya memiliki profil pengembangan yang ditetapkan untuk tipe rilis (saya pikir saya menggunakan tipe distribusi dan tidak melihat tipe rilis). Setelah saya atur ke profil distro saya, itu berhasil.
Bek
4
Untuk memperjelas jawaban ini lebih lanjut, saya telah mencoba untuk menetapkan profil penyediaan saya dan identitas penandatanganan kode di baris tingkat atas masing-masing, menggunakan tampilan Gabungan. Melakukannya masih tetap mengembalikannya ke <Nilai ganda>. Namun, ketika saya memperluas kedua baris, saya melihat subkunci "Any iOS SDK" untuk setiap konfigurasi semua diatur ke Tidak ada, meskipun baris Debug / Rilis memang mencantumkan profil / identitas penandatanganan yang tepat. Pengarsipan dalam keadaan ini masih memberi saya kesalahan, sampai saya secara eksplisit mengatur semua baris "Any iOS SDK" ke nilai yang tepat.
qix
1
Kami menghabiskan waktu berhari - hari untuk yang ini! hal buruk tentang ini kita masih harus memilih profil yang sama lagi ketika membangun IPA. Bagaimana Anda menemukan ini, Benjamin?
cregox
2
Sayangnya, itu tidak berhasil untuk saya. Saya memeriksa profil saya di situs web developer.apple.com dan saya mengaktifkan Game Center dan In App purchase. Saya juga tidak menggunakan dan bertanya-tanya apakah itu bisa menjadi masalah.
JScarry
4
Untuk menambahkan klarifikasi lebih lanjut, perhatikan bahwa Xcode memungkinkan Anda memilih Menyediakan informasi profil untuk proyek dan target . Anda harus memastikan bahwa Anda mengubah pengaturan untuk target bukan hanya proyek.
Brian Stormont
55

Jika Anda seperti saya dan Anda pikir Anda telah mencoba SEMUA , mengarsipkan proyek Anda lebih dari sepuluh kali, membenturkan kepala Anda pada keyboard dan masih mendapatkan kesalahan ini. Tolong lakukan sendiri bantuan dan cukup Restart XCode , itu berhasil untuk saya. Suatu saat Apple ... Aku membencimu.

VGruenhagen
sumber
saya memang membangun dua aplikasi berbeda dalam satu sesi xcode dan mendapat 1000 kesalahan. memulai kembali bekerja. Terima kasih!
donmarkusi
Ini juga berhasil bagi saya. Saya menggunakan Xcode 6.3. Saya tidak dapat memilih akun dev apel untuk penandatanganan kode. Pesan kesalahan yang sama sekali tidak terkait ditampilkan setiap kali "id aplikasi ios 'xxxxxxxxx' tidak mendukung perubahan pada fitur peta". Restart xcode sederhana telah memperbaikinya untuk saya.
Sahil
3
Jika saya dapat membesarkan Anda 1000 kali, saya akan melakukannya. Ini berhasil untuk saya. Ini terjadi pada XCode 7.1.
Manu Kanthan
25

Saya telah melalui banyak langkah di atas tetapi yang akhirnya berhasil bagi saya adalah menyegarkan profil saya di Xcode. Tidak yakin mengapa itu perlu karena profil distribusi aplikasi saya sudah muncul dalam daftar. Berikut langkah-langkahnya:

  1. Preferensi Xcode
  2. Tab akun
  3. Pilih ID Apple Anda
  4. Tekan tombol Lihat Detail di panel detail ID Apple
  5. Tekan tombol Refresh di sudut kiri bawah
Joe Regan
sumber
2
Setelah Anda melakukan ini, Anda juga harus menjalankan kembali perintah Bangun dan Arsip untuk memastikan profil baru diterapkan. (Setidaknya, itu penting bagi saya.)
Brent Royal-Gordon
12

Dalam kasus saya, saya mengaktifkan kapabilitas yang sama di Xcode yang ada di layanan Aplikasi di developer.apple.com. Itu berhasil untukku

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

novecapa
sumber
Ini yang berhasil bagi saya - tidak dapat mematikannya di pusat pengembang, dan sepertinya iOS 7.0 mengkompilasi dengan Xcode 5.1.1 mengharuskan mereka Aktif.
Matt H
6

Dalam kasus saya (maaf) saya beralih "Tim" ke "Tidak ada" di -> Umum -> Identitas

Dalam kasus lain, saya perlu mengubah identitas ini dari "Tidak Ada" ke akun pengembang yang mengelola identitas dan profil.

Xcode terkadang sangat kacau dengan penandatanganan kode, sepertinya. Atau, kita hanya manusia biasa saja tidak cukup pintar untuk memahami apa yang dilakukannya, tentu saja. Jangan menyerah, kita semua akan melalui beberapa siksaan penandatanganan kode kadang-kadang!

RickJansen
sumber
Wow, Anda menyelamatkan malam saya, terima kasih. Tapi ... mengapa itu berhasil?
Martin
Mengapa itu berhasil ... Saya pikir Xcode adalah produk yang sangat kompleks, dan identitas dan hal-hal profiling ketentuan telah berbulu sejak awal. Saya pikir tidak ada yang memiliki pemahaman penuh tentang antar-hubungan lagi. Bukan saya. Terkadang ini coba-coba, seperti yang ditunjukkan utas ini.
RickJansen
5

Dalam kasus saya, saya harus menetapkan Profil Provision untuk Rilis yang benar, dan kemudian harus memulai ulang Xcode. Sebelum memulai kembali, itu memiliki profil ketentuan yang sama, dan tidak berfungsi. Jadi, terkadang restart bisa membuat keajaiban. Mungkin ini membantu seseorang.

Beny Boariu
sumber
3

Jika seseorang menggunakan GameCenter maka periksa bagian ini di target Anda. Saya bekerja dengan beberapa proyek lama dan ada 2 kesalahan (tetapi semuanya bekerja dengan baik). Menonaktifkan dan mengaktifkannya kembali menyelesaikan masalah ini.masukkan deskripsi gambar di sini

Kemungkinan besar tindakan ini menambahkan hak Game Center ke ID Aplikasi dan menanganinya sendiri.

berilium
sumber
3

1. Buka folder proyek, hapus file * .entitlements. 2.Kemudian lanjutkan ke target proyek xcode -> build settings -> hak penandatanganan kode - hapus nilai 3.Clean 4.Run

Vlad 25 WLD
sumber
3

Ah, kesalahan yang mulia ini. Bagi saya setiap kali saya melihat kesalahan ini saya memeriksa hal-hal berikut:

1. Izinkan XCode untuk mengakses info profil penyediaan Anda sepanjang waktu - Jika XCode terus bertanya kapan Anda memulai untuk memiliki akses ke file pribadi komputer Anda sehingga dapat memperoleh informasi profil penyediaan dengan opsi untuk selalu memungkinkan akses, tidak sekarang, atau hanya satu kali - setel ke SELALU MENGIZINKAN akses

2. Jika Anda memiliki file hak lama yang menendang di sekitar proyek Anda singkirkan mereka dan tanda-tanda mereka - jika Anda melihat file .entitlements dalam proyek Anda hapus (atau setidaknya hapus referensi untuk itu jika Anda tidak yakin Anda siap untuk langsung menghapusnya), lalu pastikan baris 'Hak Penandatanganan Kode' di bawah bagian 'Penandaan Kode' di Bangun Pengaturan kosong

3. Periksa Layanan Aplikasi Anda secara online dan cocokkan dengan Layanan Anda di XCode untuk aplikasi - Buka Apple Member Center dan periksa ID Aplikasi untuk aplikasi Anda, klik pada aplikasi untuk melihat 'Layanan Aplikasi' dan melihat apa yang Anda telah memeriksa, kemudian pergi ke XCode dan periksa bagian 'Kemampuan' Anda untuk memastikan keduanya memiliki daftar layanan Apple yang sama di kedua

4. Pastikan Anda menetapkan Profil Penyedia yang valid untuk aplikasi Anda sebelum memvalidasi - periksa profil penyediaan Anda untuk aplikasi di Pusat Anggota Apple, pastikan itu tidak kedaluwarsa, memiliki ID Aplikasi yang tepat dengan id bundel dan distribusi yang benar . Unduh dan klik pada profil penyediaan baru untuk memastikan XCode memilikinya, atau buka XCode> Preferensi> Akun> klik pada akun Anda dan 'Lihat Detail' lalu klik tombol sudut bawah untuk Menyinkronkan semua profil ke XCode. Anda harus memiliki profil yang tersedia untuk dipilih sekarang di bagian 'Penandatanganan Kode'. Setelah Anda memiliki profil penyediaan yang benar, maka Anda dapat mengatur garis 'Identitas Penandatanganan Kode' ke opsi yang benar untuk profil penyediaan tersebut.

Catatan - jika melakukan sertifikat distribusi, dapat membantu untuk mengatur semua baris 'Identitas Penandatanganan Kode' ke identitas yang Anda gunakan untuk distribusi termasuk jalur debug

5. JIKA SEMUA GAGAL GAGAL - Bersihkan proyek Anda dan Mulai Ulang XCode dan beberapa sihir Apple mungkin akan berfungsi dengan baik saat Anda membuka proyek berikutnya dan mencoba memvalidasi

ColossalChris
sumber
2

Jika Anda sedang membangun proyek 3.1.5 lama, Xcode 5 memiliki beberapa bug yang sayangnya membuat jawaban Benjamin tidak mungkin, karena tidak ada profil Provisioning untuk dipilih. Setelah sekian jam membaca file proyek Xcode yang tersiksa saya menemukan solusi ini yang bekerja untuk saya:

  • Di panel Utilities (ke kanan) di Xcode 5, di bawah Dokumen proyek, ubah dari yang kompatibel dengan Xcode 3.1 ke yang kompatibel dengan Xcode 3.2.
  • Masukkan nama organisasi Anda.
  • Tutup proyek.
  • Buka file proyek Anda, mis open -a TextEdit path/to/name.xcodeproj/project.pbxproj
    • Hapus dua klausa Distribusi ( isa=XCBuildConfiguration).
    • Hapus dua baris yang menyertainya dalam buildConfiguration (satu dalam PBXNativeTargetdan satu dalam PBXProject XCConfigurationLists)

Sekarang Anda siap untuk membuka kembali, mengarsipkan, dan mengirimkan ke App store - voila! Berhasil lagi!

Bagaimana cara kerjanya

Saya berasumsi ini berfungsi karena Apple di suatu tempat di sepanjang garis memutuskan untuk menghentikan kebutuhan untuk konfigurasi distribusi yang terpisah, yang merupakan hal yang baik. Ketika saya mengarsipkan, Xcode secara otomatis menandai tanda-tanda untuk distribusi. Itulah cara yang seharusnya diimplementasikan sejak awal, hanya memalukan bahwa Apple tidak dapat membuat migrasi otomatis bagian dari IDE; alih-alih mereka memaksa kami pengembang untuk menghabiskan waktu puluhan tahun untuk membuat hal ini bekerja.

Jonas Byström
sumber
2

Saya telah berjuang dengan masalah ini selama lebih dari satu hari sekarang, mencoba semua jenis solusi yang disarankan di sini dan di tempat lain di internet. Tidak ada yang berhasil ...

Tapi, akhirnya saya berhasil menyelesaikan masalah!

Masalah yang saya miliki adalah dengan aplikasi lama yang belum saya sentuh lebih dari 3 tahun, dan sekarang saya akan merilis pembaruan yang telah lama ditunggu. Sejak saya merilis aplikasi, Apple telah memperbarui cara kerja sertifikat dan Id Aplikasi. Mereka telah memperkenalkan konsep Id Tim yang tampaknya direkomendasikan untuk digunakan. Secara khusus, situs "Sertifikat, Identifikasi & Profil" Apple, telah melihat banyak perubahan sejak saat itu.

Di sana saya menyadari bahwa Profil Penyedia yang saya gunakan untuk Distribusi App Store terhubung ke App Id ED8xxxxxxx.com.rostsolutions.*tetapi melihat App Id untuk game yang akan saya kirimkan. Saya perhatikan bahwa App Id itu ATMxxxxxxx.com.rostsolutions.Swisch. Jadi awalan App Id tidak cocok! Tampaknya itu adalah akar masalahnya. Jadi yang saya lakukan adalah membuat Profil Penyedia baru yang terhubung ke App Id ATMxxxxxxx.com.rostsolutions.Swisch. Dengan menggunakan Profil Penyedia tersebut, saya berhasil mengirimkan aplikasi saya ke App Store dan sekarang saya hanya memastikan bahwa segala sesuatu berfungsi dengan baik di sisi Apple.

(Saya pertama kali mencoba menghubungkan ke profil Provisioning baru ke ID wildcard ATMxxxxxxx.com.rostsolutions.*, tetapi itu sepertinya tidak berhasil).

Tapi yang membingungkan saya adalah ketika saya melihat Aplikasi lama di iTunes Connect dan pergi ke Binary Details, dikatakan bahwa App Id-nya ED8xxxxxxx.com.rostsolutions.Swisch. Jadi mengapa halaman "Sertifikat, Identifikasi & Profil" mencantumkan Id Aplikasi ATMxxxxxxx.com.rostsolutions.Swisch?

Daniel
sumber
Terima kasih telah memposting Daniel ini. Saya melihat perilaku serupa yang mencegah digunakannya sertifikat dan profil. Setiap kali saya mengunduh sertifikat atau mengizinkan Xcode melakukannya, ID tim 'hantu' muncul yang 'merusak' kemampuan iCloud (penggunaan) dalam kasus saya. Belum ada resolusi untuk saya.
David
OH TUHAN! Omong kosong yang sama ini terjadi pada kami dengan lebih dari 50 aplikasi! Ugh, tim hantu membunuh kita. Kenapa Apple Kenapa! ????
Sukima
2

Masalah saya terpecahkan dengan menghapus ID Apple saya dari Preferences-> Akun dan kemudian menambahkannya kembali. Lalu semua file profil penyediaan saya muncul di panel utilitas Lihat Rincian. Saya keliru memilih "Mac Provisioning Profile: *" daripada profil penyediaan distribusi yang sebenarnya untuk proyek berpikir bahwa itu adalah seleksi umum. File penyediaan harus spesifik untuk proyek. Oh, dan BTW, pastikan profil penyedia Anda memiliki hak yang benar (misalnya, Maps). Saya berhasil merilis aplikasi dengan OSX Maps tanpa hak dan Apple menyetujuinya - tetapi tidak ada Maps yang muncul di versi produksi!

Brainware
sumber
1

Dalam kasus saya, saya memiliki masalah yang sama, solusi saya adalah mengubah 'Profil Penyedia Rilis' di Pengaturan Bangun sebelum melakukan Arsip. Saya melakukan ini dua kali, satu untuk distribusi App Store, dan satu lagi untuk distribusi Ad Hoc. Saya juga menambahkan komentar pada arsip saya. Kesimpulan saya adalah bahwa ada sesuatu yang rusak tentang "tanda tangan arsip".

Hector
sumber
1

Ada tutorial yang sangat bagus untuk menyelesaikan masalah itu di situs web ini .

Dikatakan bahwa masalah ini dapat terjadi ketika Projects Bundle Identifier Anda berbeda dengan yang Anda masukkan di Situs iTunes Connect .

130e13a
sumber
1

Saya pikir xcode 5 menggunakan "rilis" alih-alih "distribusi" yang dapat Anda buat sendiri.

superarts.org
sumber
1

Jika semua di atas tidak berhasil (dalam kasus saya setelah beberapa hari tidak berhasil mencoba semuanya) Saya hanya punya satu aplikasi Mac. HATI-HATI DENGAN REVOKE!

1) Cabut dengan tangan semua "Distribusi Aplikasi Mac" & "Distribusi Pemasang Mac"
2) Bersihkan sertifikat dan kunci terbuka yang relevan di Keychain ( Peringatan: ekspor sebelum dihapus)
3) Mulai ulang Xcode 4) Buka pengembang (di Safari) .apple .com -> sertifikat dll. 5) Buat CertificateSigningRequest.certSigningRequest di Keychain-> Certificate assistant
6) Buat dengan tangan di developer.apple.com baik "Distribusi Aplikasi Mac" & "Distribusi Pemasang Mac" dengan * .certSigningRequest
7 Anda) Profil -> Distribusi -> buat / perbaiki provisi kustom untuk AppStore (Saya secara khusus menamainya sebagai "profil provisi Mac untuk AppStore"
8) Xcode -> Pengaturan -> Akun -> Akun Anda -> Akun Anda ->Refresh 9) Xcode Clean -> Archive -> Validate

MENANGKAN
sumber
1

Saya telah berjuang dengan masalah yang sama (saya membangun untuk distribusi Ad-Hoc). Satu-satunya hal yang telah berubah sejak penerapan terakhir yang berhasil, adalah menambahkan dua perangkat ke profil penyediaan.

Setelah memeriksa dua dan tiga pengaturan semua pembangunan, saya membuat ulang profil penyediaan (tanpa mengubah apa pun), diunduh ulang dan itu bekerja dengan baik.

Jadi perhatikan untuk diri sendiri: jika tidak ada penjelasan logis, Anda selalu dapat mencoba voodoo IT lama yang baik.

Saya juga merekomendasikan Utilitas Konfigurasi iPhone , yang meskipun namanya, berguna untuk memeriksa profil bawaan yang Anda miliki di komputer.

Tomek Cejner
sumber
1

GALAT ITMS-9000: “Bundel ini tidak valid. Aplikasi dan pembaruan aplikasi baru yang diajukan ke App Store harus dibangun dengan versi publik (GM) XCode 5.1.1 atau lebih tinggi dan iOS 7 SDK. Jangan mengirimkan aplikasi yang dibuat dengan perangkat lunak beta.

hi0001234d
sumber
0

Jika beberapa pengembang menggunakan akun pusat anggota yang sama. Salah satunya tidak dapat menggunakan sertifikat yang dibuat oleh orang lain karena mereka menggunakan permintaan sertifikat yang dibuat menggunakan komputer mereka.

Anda perlu menggunakan sertifikat yang dibuat oleh Anda (permintaan sertifikat dibuat menggunakan komputer Anda).

Alternatif, suruh mereka mengirimi Anda Profil Pengembang. tidak yakin namanya. untuk menggunakan sertifikat yang dibuat di komputer lain.

hasan
sumber
0

Kepemilikan penandatanganan kode terjadi karena sumber daya Anda tidak mengandung file Entitlements dalam sumber daya, Cukup buka pengaturan bangunan dan cari Penandatanganan kode yang menghapus entri untuk debug dan lepaskan, bangun proyek lagi Anda akan melihat tidak ada kesalahan. Bersulang

Syaikh Syaikh
sumber
-1

Saya memiliki masalah yang sama, tetapi tidak ada yang ditulis di sini yang berfungsi untuk saya. Namun, saya menemukan cara sederhana yang bekerja untuk saya. Inilah cara melakukannya:

1) Dalam pengaturan membangun Proyek dan Target Anda, pilih "Tidak Ada" untuk semua profil Penyediaan, dan pilih "Jangan Tanda Kode" untuk semua Identitas Penandatanganan Kode.

2) Sekarang, pilih Target Anda dan pergi untuk membangun pengaturan. Dalam pengaturan Pelepasan Identitas Penanda Kode, pilih "Distribusi iOS" untuk "SDK iOS Apa Saja". Dan kemudian, dalam pengaturan Provisioning Profile Release, pilih profil distribusi Anda untuk "Any iOS SDK". Setelah itu pengaturan Kode Penandatanganan Identitas Rilis Anda akan secara otomatis berubah menjadi "Distribusi iPhone".

3) Arsipkan bangunan Anda dan validasi. Sekarang seharusnya berfungsi dengan baik. Itu dia!

jimpavloff
sumber