Errore di progettazione del codice: impossibile trovare il profilo di provisioning dopo aver eliminato il profilo scaduto


500

Ho provato a ricostruire un'app che funzionava proprio ieri. Ho ricevuto il messaggio che un profilo era scaduto, quindi l'ho rimosso dall'iPod e da iTunes. Quando ho scelto un nuovo profilo (uno con un * nell'identificatore), ora ricevo un errore:

Errore segno codice: impossibile trovare il profilo di provisioning (stringa lunga).

Cosa mi sto perdendo? Ho esaminato le domande correlate e non ho già visto questo scenario.

Risposte:


856

A volte il tuo file di progetto xcode viene incasinato, specialmente se hai un vecchio progetto e lo hai creato per la prima volta con una versione precedente di xcode / iphone sdk. Quello che devi fare è aprire il file di progetto in un editor di testo, cercare la "stringa lunga" dal tuo errore e cancellare manualmente quella riga. In effetti, dovresti semplicemente andare avanti e cancellare qualsiasi riga che punti a qualsiasi profilo di provisioning. Quindi riapri il progetto in xcode, vai alle impostazioni e seleziona nuovamente il tuo nuovo profilo. Questo risolve problemi come quello il più delle volte. Le linee che puntano ai profili di provisioning saranno così:

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

210
Il file .xcodeproj è in realtà una directory, come un bundle di applicazioni. Se fai clic con il pulsante destro del mouse nel Finder, puoi selezionare mostra il contenuto del pacchetto, quindi vedrai diversi file all'interno (o nel terminale solo cd in esso). Il file di progetto effettivo è quello che contiene l'estensione .pbxproj. Una volta aperto con un editor di testo, le righe che stai cercando dovrebbero iniziare con 'PROVISIONING_PROFILE = o' '"PROVISIONING_PROFILE [sdk = iphoneos *]" =' '. Elimina tutti quelli e poi dovresti essere bravo.
Brad The App Guy,

2
Ho scoperto che, oltre a quanto sopra, ho dovuto eliminare tutti i miei profili, scaricarli nuovamente dal portale di provisioning e reimportarli in XCode. Quindi, in Impostazioni build / Firma codice, selezionare il profilo corretto per tutte le configurazioni build.
Jay Imerman,

11
Ancora un prezioso consiglio con XCode4 nel 2012. Grazie!
Alexey Rusakov,

6
... aaaae ancora preziosi consigli con Xcode6 nel 2014! Grazie mille!
Tom van Zummeren,

4
L'unica cosa che ha funzionato per me: Preferenze -> Account -> Visualizza dettagli -> Aggiorna. Ciò ha ricaricato tutti i profili di provisioning dal portale di sviluppo. Spero che questo aiuti qualcuno
blackhawk4152,

129

Ecco una soluzione più semplice che ha funzionato per me e che non richiede la modifica manuale del file di progetto:

In XCode, nel riquadro "Gruppi e file", espandi "Target" e fai doppio clic sul target della tua app. Questo fa apparire il riquadro Informazioni per la destinazione. Nella sezione "Build", controlla la sezione "firma del codice" per tutti i vecchi profili e sostituisci con quello corretto.

Si noti che questo è diverso dal doppio clic sull'icona del progetto e dalla modifica del profilo da lì. Abbastanza sorprendente :)

O io


1
Grazie! Ci proverò la prossima volta che succede :)
quantumpotato

6
e assicurati di selezionare prima la configurazione di build corretta :)
Johnus,

1
Questo non funziona sempre. A volte devi ancora entrare e cambiarlo manualmente come mostrato nella prima risposta.
SpaceTrucker,

Solo un'altra nota per fare eco a SpaceTrucker: questo metodo non sempre funziona. La risposta accettata garantisce che Xcode smetterà di cercare quel profilo fantasma.
Simone Manganelli,

Ho scoperto che, oltre a quanto sopra, ho dovuto eliminare tutti i miei profili, scaricarli nuovamente dal portale di provisioning e reimportarli in XCode. Quindi, in Impostazioni build / Firma codice, selezionare il profilo corretto per tutte le configurazioni build.
Jay Imerman,

76
  1. Proprietà progetto e destinazioni -> "Non codificare il segno" -> OK -> cmd + S (o cmd + B);
  2. Proprietà di progetto e destinazioni -> "Profilo di fornitura" -> OK

  3. Tutto funziona di nuovo!


4
Questa è l'unica soluzione che ha funzionato per me (utilizzando XCode4). Costruire l'app con l'opzione "Non codificare" è stato un passaggio obbligatorio per me.
Chazbot,

Questa sembra una soluzione migliore di quella con oltre 200 voti, perché Xcode potrebbe cambiare il modo in cui scrive il suo file di progetto in futuro.
Danyal Aytekin,

1
Questo è il sollution corretto che ha funzionato per me in Xcode 4.2
Selvin

10

Sono d'accordo con la risposta di Brad, che puoi risolvere questo problema modificando manualmente il tuo obiettivo / progetto, eliminando qualsiasi riga come questa:

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

Tuttavia, in Xcode 4.2 e versioni successive, esiste un modo molto più semplice per accedere a questo testo e selezionarlo ed eliminarlo. Nel Project Navigator a sinistra, seleziona il tuo progetto (la riga più in alto del Project Navigator). Ora scegli semplicemente Visualizza> Editor versione> Mostra editor versione. In questo modo il tuo progetto viene visualizzato come testo e puoi cercare PROVISIONING ed eliminare la riga problematica, proprio lì nel riquadro dell'editor di Xcode.


Successivamente non è necessario chiudere e aprire il progetto. Approccio migliore :)
virale,

6

Ho appena visto una variazione su questo problema: sono entrato nel file project.pbxproj secondo le note di Brad Smith sopra, tranne in questo caso tutte le righe PROVISIONING_PROFILE sembravano corrette, senza che si verificasse la stringa del profilo "errata" che XCode non poteva trovare.

Tuttavia, la correzione era la stessa: eliminando TUTTE le righe PROVISIONING_PROFILE in project.pbxproj, anche se in teoria sembravano "buone", e quindi riaprendo il progetto in XCode.


4

Per ottenere la soluzione di Brad interamente in Terminale, utilizzare questi comandi

  1. cd [Xcode project parent]
  2. vi [Xcode project name].xcodeproj/project.pbxproj
  3. /[offending provisioning profile] [Enter]
  4. dd - elimina l'intera riga
  5. Premere n fino a quando non ne vengono più trovati
  6. Ctrl + x per salvare e chiudere

3

Nel mio caso il problema è stato risolto aprendo Window -> Organizer, selezionando il mio dispositivo e rimuovendo il vecchio profilo di provisioning sotto il pannello "Provisioning" sulla destra. Il vecchio era già contrassegnato con un simbolo "x" rosso ma l'iPhone lo stava ancora utilizzando.

Oltre a quel profilo, appariva anche quello nuovo (con lo stesso nome) e dopo aver semplicemente riavviato l'applicazione l'ho fatto funzionare senza problemi.


+1, a volte non sono stato in grado di installare a causa di un profilo scaduto, nemmeno con lo stesso identificatore! - era sul mio dispositivo.
quantumpotato,

Questo ha funzionato per me, ma ho anche dovuto riavviare XCode per farlo funzionare.
Matt

3

Ho passato circa un'ora a fare questo e con l'aiuto dei consigli di Brad e alcune modifiche aggiuntive ha funzionato.

Ho fatto questo usando il seguente: 10.7.3, Xcode 4.3.2, iOS 5.1 btw.

1) Fai clic con il tasto destro del mouse sul tuo myapp.xcodeproje seleziona il contenuto del pacchetto

2) apri project.pbxprojcon un editor di testo (non raccomandare textedit in quanto potrebbe rovinare la formattazione)

3) Scorri fino in fondo fino a trovare /* Begin XCBuildConfiguration section */

4) Nota che hai sezioni di debug e rilascio

5) Nella sezione di rilascio dai un'occhiata CODE_SIGN_IDENTITYe "CODE_SIGN_IDENTITY[sdk=iphoneos*]"dovrebbe essere simile a questo:

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

6) Dai un'occhiata PROVISIONING_PROFILEe "PROVISIONING_PROFILE[sdk=iphoneos*]"dovrebbero apparire così:

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

Questo dovrebbe corrispondere al tuo profilo di provisioning in Xcode. Per vedere se corrispondono, apri Xcode> Finestra> Organizer> Dispositivi> Profili di provisioning> Fai clic destro sul profilo> Rivela nel Finder> Il nome file di .mobileprovision è l'ID del tuo profilo.

7) Scorri verso il basso in project.pbxproje trova una seconda istanza della sezione di rilascio. La seconda istanza della sezione di rilascio dovrebbe terminare con un commento che dice/* End XCBuildConfiguration section */

8) assicurarsi che la seconda sezione corrisponda alla prima sezione in modo che CODE_SIGN_IDENTITY, "CODE_SIGN_IDENTITY[sdk=iphoneos*], e PROVISIONING_PROFILEsiano tutti compilati.


2

Un suggerimento che farò dato che nessuno lo ha ancora detto: PER FAVORE, PER FAVORE, PER FAVORE, fai un backup di tutto il tuo file .xcodeproj PRIMA di iniziare a modificarne il contenuto. L'avvitamento del file di progetto e la mancanza di backup comporteranno un'esperienza molto spiacevole.

Essere in grado di uscire da una modifica può essere una manna dal cielo.


Sì, è per questo che gli dei SCM hanno fatto il controllo del codice sorgente.
Br .ill

1

Ho appena riscontrato questo problema nel mio XCode4. Per risolverlo, è necessario inserire tutte le disposizioni corrette nella configurazione Debug e Release.

Stavo cercando di inviare (archiviando) la mia app. Quindi cambio semplicemente le disposizioni di debug su "Non firmare il codice" e la disposizione di rilascio sulla disposizione dell'app store della mia app.

Questo risolve il problema e mi consente di archiviare normalmente. Spero che aiuti.


1

Seleziona le righe nella codifica che sono vuote in Any SDK iOS e seleziona il certificato giusto.


1

La soluzione di Brad Smith ha funzionato per me, ma ho anche dovuto rimuovere il campo CODE_SIGN_IDENTITY per farlo funzionare.


Questo viene fatto manualmente modificando il file di progetto xcode in un editor di testo e spesso ho dovuto farlo per ricominciare da capo quando mi trovo in uno stato rotto. Conoscere entrambe le cose che possono essere rimosse è spesso molto utile. Buon punto.
Warren P,

0

Purtroppo questo approccio non ha funzionato per me. Ma ecco una soluzione che ha funzionato per me (per farlo funzionare hai bisogno di un file di progetto funzionante su Subversion o giù di lì):

Ho eseguito il rollback a una versione funzionante del mio file di progetto. Dato che non è possibile ripristinare con Xcode ( Dov'è l'opzione 'Ripristina' nel controllo del codice sorgente di Xcode 4? ) - Ho usato Tortoise, la mia macchina Windows e questo tutorial ( http://tortoisesvn.net/docs/nightly/TortoiseSVN_en /tsvn-howto-rollback.html ) per ripristinare un file di progetto precedente.

Poiché il Tutorial non ha funzionato per me, ho appena usato Tortoise per salvare la revisione funzionante del mio file di progetto su una chiavetta USB per portarlo sul mio mac. Dopo di che ho sostituito il nuovo file di progetto rotto con quello vecchio funzionante, pulito e ha funzionato come un incantesimo!


0

Ho riscontrato problemi perché ho aggiornato il mio profilo di provisioning AdHoc con alcuni nuovi dispositivi da utilizzare su TestFlight. Presumibilmente ciò sta accadendo perché xcode ha un vecchio riferimento al profilo di provisioning nelle impostazioni di build della firma del codice per il progetto o le destinazioni. Il modo in cui ho risolto il mio era di:

  1. Vai sia alle impostazioni di compilazione di destinazione sia alle impostazioni di compilazione del progetto, in Firma codice modifica tutti i profili di provisioning in qualcos'altro.
  2. Vai a dispositivi / profili di provisioning nell'organizzatore elimina i profili offensivi, quindi fai clic sul pulsante di aggiornamento in basso a destra.
  3. Torna alla destinazione e alle impostazioni di compilazione del progetto e imposta i profili di provisioning sui profili di provisioning appropriati (si spera) appena aggiornati.

0

Almeno in Xcode 5, questa è la cosa che ha risolto il problema per me:

In Profilo di provisioning, selezionare il profilo di provisioning offensivo, quindi selezionare un profilo di provisioning valido nel menu a discesa.

inserisci qui la descrizione dell'immagine


0

È possibile rimuovere il vecchio riferimento al file di provisioning. Quindi, dopo aver importato il nuovo profilo di provisioning e aver selezionato il builder Xcode.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.