Kesalahan Codesign: Profil penyediaan tidak dapat ditemukan setelah menghapus profil yang kadaluwarsa

500

Mencoba membangun kembali aplikasi yang baru saja berfungsi kemarin. Mendapat pesan bahwa profil telah kedaluwarsa, jadi saya menghapusnya dari iPod dan dari iTunes. Ketika saya memilih profil baru (satu dengan * di pengidentifikasi), saya sekarang mendapatkan kesalahan:

Kode Tanda Kesalahan: Profil Penyedia (string panjang) tidak dapat ditemukan.

Apa yang saya lewatkan? Saya melihat melalui pertanyaan terkait dan belum melihat skenario ini.

quantumpotato
sumber

Jawaban:

856

Terkadang file proyek xcode Anda kacau, terutama jika Anda memiliki proyek lama dan pertama kali membuatnya dengan versi xcode / iphone SDK yang lebih lama. Yang perlu Anda lakukan adalah membuka file proyek dalam editor teks, mencari 'string panjang' dari kesalahan Anda dan menghapus baris itu secara manual. Faktanya, Anda harus melanjutkan dan menghapus garis apa pun yang menunjuk ke profil penyediaan apa pun. Kemudian buka kembali proyek dalam xcode, buka pengaturan dan pilih kembali profil baru Anda. Ini membersihkan masalah seperti itu sebagian besar waktu. Baris yang mengarah ke profil penyediaan akan terlihat seperti ini:

PROVISIONING_PROFILE = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
Brad The App Guy
sumber
210
File .xcodeproj sebenarnya adalah direktori, seperti bundel aplikasi, Jika Anda mengklik kanan di finder, Anda dapat memilih tampilkan isi paket, dan kemudian Anda akan melihat beberapa file di dalamnya (atau di terminal cukup masukkan ke dalamnya). File proyek sebenarnya adalah yang ada di sana dengan ekstensi .pbxproj. Setelah Anda membukanya dengan editor teks, baris yang Anda cari harus dimulai dengan 'PROVISIONING_PROFILE = atau' '"PROVISIONING_PROFILE [sdk = iphoneos *]" "='. Hapus semua itu dan kemudian Anda harus baik.
Brad The App Guy
2
Saya menemukan bahwa, di samping yang di atas, saya harus menghapus semua profil saya, mengunduhnya kembali dari portal penyediaan, dan mengimpornya kembali ke XCode. Kemudian, di Pengaturan Bangun / Penandatanganan Kode, pilih profil yang tepat untuk semua konfigurasi bangunan.
Jay Imerman
11
Masih saran yang berharga dengan XCode4 pada 2012. Terima kasih!
Alexey Rusakov
6
... aaaa dan saran yang masih berharga dengan Xcode6 pada tahun 2014! Terima kasih banyak!
Tom van Zummeren
4
Satu-satunya hal yang berfungsi untuk saya: Preferensi -> Akun -> Lihat detail -> Refresh. Itu memuat ulang semua profil penyediaan dari portal dev. Semoga ini bisa membantu seseorang
blackhawk4152
129

Berikut adalah solusi sederhana yang bekerja untuk saya dan yang tidak memerlukan pengeditan manual file proyek:

Di XCode, di panel "Grup & File", perluas "Target" dan klik dua kali pada target aplikasi Anda. Ini memunculkan panel Info untuk target. Di bagian "Bangun", periksa bagian "penandatanganan kode" untuk profil lama mana pun dan ganti dengan profil yang benar.

Perhatikan bahwa ini berbeda dari mengklik dua kali pada ikon proyek Anda dan mengubah profil dari sana. Cukup mengagumkan :)

Ori

Ori
sumber
1
Terima kasih! Saya akan coba ini lain kali :)
quantumpotato
6
dan pastikan untuk memilih konfigurasi build yang tepat terlebih dahulu :)
Johnus
1
Ini tidak selalu berhasil. Terkadang Anda masih harus masuk dan mengubahnya secara manual seperti yang ditunjukkan pada jawaban pertama.
SpaceTrucker
Hanya catatan lain untuk menggemakan SpaceTrucker: metode ini tidak selalu berhasil. Jawaban yang diterima menjamin bahwa Xcode akan berhenti mencari profil hantu itu.
Simone Manganelli
Saya menemukan bahwa, di samping yang di atas, saya harus menghapus semua profil saya, mengunduhnya kembali dari portal penyediaan, dan mengimpornya kembali ke XCode. Kemudian, di Pengaturan Bangun / Penandatanganan Kode, pilih profil yang tepat untuk semua konfigurasi bangunan.
Jay Imerman
76
  1. Properti Proyek & Target -> "Jangan Tanda Kode" -> OK -> cmd + S (atau cmd + B);
  2. Properti Proyek & Target -> "Profil Provisi Anda" -> OK

  3. Semuanya bekerja lagi!

pengguna732414
sumber
4
Ini adalah satu-satunya solusi yang berfungsi untuk saya (Menggunakan XCode4). Membangun aplikasi dengan "Jangan Tanda Kode" dipilih adalah langkah wajib bagi saya.
Chazbot
Ini sepertinya solusi yang lebih baik daripada solusi dengan 200+ upvotes, karena Xcode mungkin mengubah cara menulis file proyeknya di masa depan.
Danyal Aytekin
1
Ini adalah solusi yang tepat yang bekerja untuk saya di Xcode 4.2
Selvin
10

Saya setuju dengan jawaban Brad, bahwa Anda dapat memperbaiki masalah ini dengan mengedit target / proyek Anda dengan tangan, menghapus semua baris seperti ini:

PROVISIONING_PROFILE = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";

Namun, dalam Xcode 4.2 dan yang lebih baru, ada cara yang jauh lebih mudah untuk mengakses teks ini dan memilih dan menghapusnya. Di Project Navigator di sebelah kiri, pilih proyek Anda (baris paling atas dari Project Navigator). Sekarang cukup pilih View> Editor Versi> Tampilkan Editor Versi. Ini menampilkan proyek Anda sebagai teks, dan Anda dapat mencari PENYEDIAAN dan menghapus baris yang merepotkan, di sana di panel editor Xcode.

matt
sumber
Setelah ini, Anda tidak perlu menutup dan membuka proyek. Pendekatan yang lebih baik :)
viral
6

Hanya melihat variasi pada masalah ini: Saya masuk ke file project.pbxproj seperti catatan Brad Smith di atas, kecuali dalam hal ini semua baris PROVISIONING_PROFILE tampaknya benar, tanpa ada kemunculan string profil "buruk" yang XCode tidak bisa dapat ditemukan.

Namun, perbaikannya sama: menghapus SEMUA baris PROVISIONING_PROFILE di project.pbxproj, meskipun mereka tampak "bagus" dalam teori, dan kemudian membuka kembali proyek dalam XCode.

theevank
sumber
4

Untuk mencapai solusi Brad sepenuhnya di Terminal, gunakan perintah ini

  1. cd [Xcode project parent]
  2. vi [Xcode project name].xcodeproj/project.pbxproj
  3. /[offending provisioning profile] [Enter]
  4. dd - hapus seluruh baris
  5. Tekan n hingga tidak ada lagi yang ditemukan
  6. Ctrl + x untuk menyimpan dan menutup
MechEngineer
sumber
3

Dalam kasus saya masalahnya diselesaikan dengan membuka Window -> Organizer, memilih perangkat saya dan menghapus Profil Provisioning lama di bawah panel "Provisioning" di sebelah kanan. Yang lama sudah ditandai dengan simbol "x" merah tetapi iPhone masih menggunakannya.

Selain profil itu, juga yang baru muncul (dengan nama yang sama) dan setelah meluncurkan kembali aplikasi saya menjalankannya dengan lancar.

tumpukan-o-frankie
sumber
+1, terkadang saya tidak dapat menginstal karena profil kedaluwarsa - bahkan dengan pengidentifikasi yang sama! - Ada di perangkat saya.
quantumpotato
Yang ini bekerja untuk saya, tetapi saya juga harus meluncurkan kembali XCode untuk membuatnya berfungsi.
Matt
3

Hanya menghabiskan satu jam atau lebih melakukan ini dan dengan bantuan saran Brad dan beberapa perubahan tambahan semuanya bekerja.

Saya telah melakukan ini dengan menggunakan hal berikut: 10.7.3, Xcode 4.3.2, iOS 5.1 btw.

1) Klik kanan pada Anda myapp.xcodeprojdan pilih konten paket

2) buka project.pbxprojdengan editor teks (jangan rekomendasikan textedit karena dapat merusak format)

3) Gulirkan sepenuhnya ke bawah sampai Anda menemukan /* Begin XCBuildConfiguration section */

4) Perhatikan bahwa Anda memiliki bagian debug dan rilis

5) Di bagian rilis, lihat CODE_SIGN_IDENTITY& "CODE_SIGN_IDENTITY[sdk=iphoneos*]"akan terlihat seperti ini:

CODE_SIGN_IDENTITY = "iPhone Distribution: MyCompany LLC";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: MyCompany LLC";

6) Lihatlah PROVISIONING_PROFILEdan "PROVISIONING_PROFILE[sdk=iphoneos*]"mereka akan terlihat seperti ini:

PROVISIONING_PROFILE = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";

Ini harus sesuai dengan profil penyediaan Anda dalam Xcode. Untuk melihat apakah cocok dengan Xcode terbuka> Window> Organizer> Devices> Provisioning Profiles> Klik kanan pada profil> Reveal in Finder> Nama file .mobileprovision adalah id profil Anda.

7) Gulir ke bawah di dalam project.pbxprojdan temukan instance kedua dari bagian rilis. Contoh kedua dari bagian rilis harus diakhiri dengan komentar yang mengatakan/* End XCBuildConfiguration section */

8) pastikan bahwa bagian kedua cocok dengan bagian pertama sehingga CODE_SIGN_IDENTITY, "CODE_SIGN_IDENTITY[sdk=iphoneos*], dan PROVISIONING_PROFILEsemua diisi.

bobbypage
sumber
2

Satu saran yang akan saya buat karena belum ada yang mengatakannya: TOLONG TOLONG TOLONG buat cadangan seluruh file .xcodeproj Anda sebelum Anda mulai mengubah isinya. Mengacaukan file proyek dan tidak memiliki cadangan akan menyebabkan pengalaman yang sangat sangat tidak menyenangkan.

Mampu mundur dari edit bisa menjadi anugerah.

Richard Brown
sumber
Ya, inilah mengapa para dewa SCM membuat kontrol sumber.
Br.Bill
1

Saya baru saja mengalami masalah ini di XCode4 saya. Untuk memperbaikinya, Anda harus memasukkan semua ketentuan yang benar ke dalam konfigurasi Debug dan Release.

Saya mencoba mengirim (dengan mengarsipkan) aplikasi saya. Jadi saya hanya mengubah ketentuan Debug menjadi "Don't Code Sign", dan ketentuan Release ke ketentuan appstore aplikasi saya.

Ini memperbaikinya dan memungkinkan saya untuk mengarsipkan secara normal. Semoga itu bisa membantu.

GeneCode
sumber
1

Pilih baris dalam tanda kode yang kosong di bawah SDK iOS Apa pun dan pilih sertifikat yang tepat.

sunkencity
sumber
1

Solusi dari Brad Smith bekerja untuk saya, tetapi saya juga harus menghapus bidang CODE_SIGN_IDENTITY untuk membuatnya berfungsi.

jean_jean
sumber
Ini dilakukan secara manual dengan memodifikasi file proyek xcode dalam editor teks, dan saya sering harus melakukan ini untuk memulai lagi ketika saya masuk ke keadaan rusak. Mengetahui kedua hal yang bisa dihapus seringkali sangat membantu. Poin yang bagus.
Warren P
0

Sayangnya pendekatan ini tidak berhasil untuk saya. Tapi di sini adalah perbaikan yang bekerja untuk saya (untuk mendapatkan ini berfungsi, Anda memerlukan file proyek yang berfungsi pada Subversion atau lebih):

Saya memutar kembali ke versi kerja file proyek saya. Karena tidak mungkin untuk mengembalikan dengan Xcode ( Di mana ada opsi 'Kembalikan' di Kontrol Sumber Xcode 4? ) - Saya menggunakan Tortoise, mesin Windows saya dan Tutorial ini ( http://tortoisesvn.net/docs/nightly/TortoiseSVN_en /tsvn-howto-rollback.html ) untuk mengembalikan ke file proyek yang lebih lama.

Karena Tutorial tidak berhasil bagi saya, saya hanya menggunakan Tortoise untuk menyimpan revisi pekerjaan file proyek saya ke stik usb untuk port ke mac saya. Setelah itu saya mengganti file proyek yang rusak dengan yang lama, dibersihkan dan itu bekerja seperti pesona!

Chris Conway
sumber
0

Saya mengalami masalah karena saya memperbarui profil penyediaan AdHoc saya dengan beberapa perangkat baru untuk digunakan pada TestFlight. Diperkirakan ini terjadi karena xcode memiliki referensi lama ke profil penyediaan Anda baik dalam pengaturan kodeigning membangun untuk proyek atau target. Cara saya memperbaiki milik saya adalah dengan:

  1. Pergi ke kedua pengaturan target bangunan dan pengaturan proyek pembangunan, Di bawah penandatanganan kode mengubah semua profil penyediaan untuk sesuatu yang lain.
  2. Pergi ke perangkat / profil penyediaan di penyelenggara menghapus profil yang menyinggung, lalu klik tombol segarkan di kanan bawah.
  3. Kembali ke pengaturan target dan proyek build dan atur profil provisi Anda ke profil provisi yang baru (semoga) diperbarui.
George McKibbin
sumber
0

Setidaknya dalam Xcode 5, ini adalah hal yang memecahkan masalah bagi saya:

Di bawah profil penyediaan, pilih profil penyediaan yang melanggar dan kemudian pilih profil penyediaan yang valid di menu pull-down.

masukkan deskripsi gambar di sini

RawMean
sumber
0

Anda dapat menghapus referensi lama file penyediaan. Kemudian setelah mengimpor Profil penyediaan baru dan memilih pembangun Xcode.

annu
sumber