Xcode 5: errori di titolarità della firma del codice


149

Ho creato una nuova applicazione che supporterà IOS 7. Ho ottenuto il nuovo XCode 5 GM e ho provato a firmare le mie app utilizzando il mio profilo di provisioning e il certificato di distribuzione nuovi, ma ho problemi con la distribuzione. Ricevo costantemente il seguente errore:

"Diritti di firma codice non validi. I diritti nella firma del pacchetto app non corrispondono a quelli contenuti nel profilo di provisioning. Secondo il profilo di provisioning, il pacchetto contiene un valore chiave non consentito: '[XXXX.com.sample .company] 'per la chiave' keychain-access-groups ".

Anche lo stesso errore per un valore chiave chiamato application-identifier.

Schermata dell'errore:

inserisci qui la descrizione dell'immagine

Risposte:


208

La soluzione sta nella nuova opzione in Xcode 5 che indica il profilo di provisioning. Basta impostare il profilo di provisioning del target di progetto su quello giusto e funzionerà.

inserisci qui la descrizione dell'immagine


6
Per aggiungere a questa risposta, avevo entrambi i tipi di distribuzione e di rilascio per il profilo di provisioning. Ho avuto lo stesso errore ed era perché avevo impostato un profilo di sviluppo per il tipo di versione (avevo pensato di utilizzare il tipo di distribuzione e non avevo notato il tipo di versione). Una volta impostato questo sul mio profilo di distribuzione, ha funzionato.
Bek,

4
Per chiarire ulteriormente questa risposta, avevo cercato di impostare il mio profilo di provisioning e l'identità della firma del codice nella riga di livello superiore di ciascuno, utilizzando la vista Combinata. In questo modo è ancora tornato a <Valori multipli>. Quando ho espanso entrambe le righe, tuttavia, ho visto i sottotitoli "Any iOS SDK" per ogni configurazione tutti impostati su Nessuno, sebbene le righe Debug / Release elencassero il profilo / identità di firma corretti. L'archiviazione in questo stato mi ha comunque dato l'errore, fino a quando non ho impostato esplicitamente tutte le righe "Any iOS SDK" sui valori corretti.
qix,

1
Abbiamo trascorso giorni su questo! cosa negativa di questo dobbiamo ancora scegliere lo stesso profilo di nuovo quando si costruisce l'IPA. Come hai scoperto questo, Benjamin?
Cregox,

2
Sfortunatamente, non funziona per me. Ho controllato i miei profili nel sito Web developer.apple.com e ho abilitato l'acquisto di Game Center e In App. Nemmeno io uso e mi chiedo se questo potrebbe essere un problema.
JScarry,

4
Per aggiungere un ulteriore chiarimento, tieni presente che Xcode ti consente di scegliere Fornire informazioni sul profilo sia per un progetto che per una destinazione . Devi assicurarti di modificare le impostazioni per l' obiettivo non solo per il progetto.
Brian Stormont,

55

Se sei come me e pensi di aver provato TUTTO , archiviato il tuo progetto più di dieci volte, sbattuto la testa sulla tastiera e ancora ottenere questo errore. Per favore, fatevi un favore e semplicemente riavvia XCode , ha funzionato per me. A volte Apple ... ti odio.


ho creato due diverse app in una sessione di xcode e ho ricevuto 1000 errori. riavvio ha funzionato. grazie!
donmarkusi,

Questo ha funzionato anche per me. Sto usando Xcode 6.3. Non sono stato in grado di selezionare l'account di sviluppo Apple per la firma del codice. Il messaggio di errore totalmente non correlato veniva visualizzato ogni volta che "ID app iOS 'xxxxxxxxx' non supporta le modifiche alla funzione mappe". Un semplice riavvio di xcode lo ha risolto per me.
Sahil,

3
Se potessi votarti 1000 volte, lo farei. Questo ha funzionato per me. Questo è successo su XCode 7.1.
Manu Kanthan,

25

Ho seguito molti dei passaggi precedenti ma quello che alla fine ha funzionato per me è stato l'aggiornamento dei miei profili in Xcode. Non sono sicuro del motivo per cui era necessario poiché il profilo di distribuzione della mia app era già visualizzato nell'elenco. Ecco i passaggi:

  1. Preferenze Xcode
  2. Scheda Conti
  3. Seleziona il tuo ID Apple
  4. Premi il pulsante Visualizza dettagli nel pannello dettagli ID Apple
  5. Premi il pulsante Aggiorna nell'angolo in basso a sinistra

2
Una volta fatto questo, dovresti anche rieseguire il comando Build and Archive per assicurarti che il nuovo profilo sia applicato. (Almeno, questo era necessario per me.)
Brent Royal-Gordon,

12

Nel mio caso, ho attivato le stesse funzionalità in Xcode che in Servizi applicazioni in developer.apple.com. Questo funziona per me

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


Questo è ciò che ha funzionato per me: non è possibile disattivarli nel centro per sviluppatori e sembra che iOS 7.0 compilato con Xcode 5.1.1 li abbia richiesti.
Matt H,

6

Nel mio caso (scusate) ho cambiato "Squadra" in "Nessuno" in -> Generale -> Identità

In un altro caso, ho dovuto cambiare questa identità da "Nessuno" all'account sviluppatore gestendo identità e profili.

A volte Xcode fa un gran casino con la firma del codice. Oppure, noi semplici mortali non siamo semplicemente abbastanza intelligenti da capire cosa stia facendo, ovviamente. Non mollare, a volte stiamo tutti attraversando un po 'di tortura con la firma del codice!


Wow, mi hai salvato la serata, grazie. Ma ... perché ha funzionato?
Martin,

Perché ha funzionato ... Penso che Xcode sia un prodotto estremamente complesso, e le identità e il materiale di profilazione della fornitura sono stati pelosi sin dall'inizio. Penso che nessuno abbia più una piena comprensione delle interrelazioni. Io non. A volte si tratta di tentativi ed errori, come mostra questa discussione.
RickJansen,

5

Nel mio caso, ho dovuto impostare il profilo di provisioning corretto per il rilascio, quindi ho dovuto riavviare Xcode. Prima di riavviare, aveva lo stesso profilo di fornitura e non funzionava. Quindi, a volte un riavvio può fare miracoli. Forse questo aiuta qualcuno.


3

Se qualcuno usa un GameCenter, controlla questa sezione nel tuo target. Ho lavorato con qualche vecchio progetto e c'erano 2 errori (ma tutto ha funzionato bene). La disabilitazione e l'abilitazione ha risolto il problema.inserisci qui la descrizione dell'immagine

Molto probabilmente questa azione aggiunge il diritto di Game Center all'ID app e lo gestisce da solo.


3

1.Vai alla cartella del progetto, elimina i file * .entitlements. 2.Poi vai nel target del progetto xcode -> crea impostazioni -> diritti per la firma del codice - elimina i valori 3.Clean 4.Run


3

Ah, questo glorioso errore. Per me ogni volta che vedo questo errore, controllo le seguenti cose:

1. Consenti a XCode di accedere continuamente alle informazioni del tuo profilo di provisioning : se XCode continua a chiederti quando lo avvii per avere accesso ai file privati ​​del tuo computer in modo che possa ottenere informazioni sul profilo di provisioning con le opzioni per consentire l'accesso sempre, non ora, o solo una volta: impostalo su SEMPRE PERMESSO l'accesso

2. Se hai dei vecchi file di diritti che prendono a calci il tuo progetto, eliminali e qualsiasi segno di essi - se vedi un file .entitlements nel tuo progetto, cancellalo (o almeno rimuovi il riferimento ad esso se non sei sicuro sei pronto per eliminarlo definitivamente), quindi assicurati che la riga "Autorizzazioni per la firma del codice" nella sezione "Firma del codice" in Impostazioni build sia vuota

3. Controlla i tuoi servizi applicativi online e abbinali ai tuoi servizi in XCode per l'app : vai al Apple Member Center e controlla l'ID app per la tua app, fai clic sull'app per vedere i suoi "Servizi applicativi" e vedere cosa aver verificato, quindi vai su XCode e controlla la sezione "Funzionalità" per assicurarti che i due abbiano lo stesso elenco di servizi Apple su entrambi

4. Assicurati di assegnare un profilo di provisioning valido alla tua app prima di convalidare : ricontrolla il tuo profilo di provisioning per la tua app nell'Apple Member Center, assicurati che non sia scaduto, abbia l'ID app giusto con l'id bundle e la distribuzione corretti . Scarica e fai clic sul nuovo profilo di provisioning per assicurarti che XCode lo abbia, oppure vai su XCode> Preferenze> Account> fai clic sul tuo account e su "Visualizza dettagli", quindi fai clic sul pulsante nell'angolo in basso per sincronizzare tutti i profili su XCode. Dovresti avere il profilo disponibile per selezionare ora nella sezione "Firma del codice". Una volta ottenuto il profilo di provisioning corretto, è possibile impostare le righe "Identità firma codice" sull'opzione corretta per quel profilo di provisioning.

Nota: se si esegue un certificato di distribuzione, può essere utile impostare tutte le righe "Identità di firma codice" sull'identità utilizzata per la distribuzione, comprese le righe di debug

5. SE TUTTI I FALLI DI ELSE - Pulisci il tuo progetto e riavvia XCode e un po 'di magia di Apple potrebbe funzionare correttamente la prossima volta che apri il progetto e provi a convalidare


2

Se stai costruendo un vecchio progetto 3.1.5, Xcode 5 ha alcuni bug che purtroppo rendono impossibile la risposta di Benjamin, poiché non ci sono profili di provisioning tra cui scegliere. Dopo molte ore tarde di tormentata lettura dei file di progetto Xcode, ho trovato questa soluzione che ha funzionato per me:

  • Nel riquadro Utilità (a destra) in Xcode 5, in Documento del progetto, passare da Xcode 3.1 compatibile a Xcode 3.2 compatibile.
  • Inserisci il nome della tua organizzazione.
  • Chiudi il progetto.
  • Apri il tuo file di progetto, ad es open -a TextEdit path/to/name.xcodeproj/project.pbxproj
    • Rimuovere le due clausole Distribution ( isa=XCBuildConfiguration).
    • Rimuovi le due linee di accompagnamento in buildConfiguration (una in PBXNativeTargete una in PBXProject XCConfigurationLists)

Ora sei pronto per riaprire, archiviare e inviare all'App Store - voilà! Funziona di nuovo!

Come penso che funzioni

Presumo che funzioni perché Apple da qualche parte lungo la linea ha deciso di abbandonare la necessità di qualsiasi configurazione di distribuzione separata, il che è una buona cosa. Quando eseguo l'archiviazione, Xcode codifica automaticamente i segni per la distribuzione. Questo è il modo in cui avrebbe dovuto essere implementato in primo luogo, è solo un peccato che Apple non possa rendere la migrazione automatica parte dell'IDE; invece ci costringono sviluppatori a trascorrere decenni nell'uomo per far funzionare queste cose.


2

Sono stato alle prese con questo problema per più di un giorno, provando tutti i tipi di soluzioni suggerite qui e altrove su Internet. Niente ha funzionato ...

Ma finalmente sono riuscito a risolvere il problema!

Il problema che avevo era con una vecchia app che non toccavo da 3 anni e ora stavo per rilasciare un aggiornamento tanto atteso. Da quando ho rilasciato l'app, Apple ha aggiornato il funzionamento dei certificati e dell'ID app. Hanno introdotto il concetto di ID squadra che sembra essere raccomandato da usare. In particolare, il sito "Certificati, identificatori e profili" di Apple ha subito molti cambiamenti da allora.

Lì mi sono reso conto che il profilo di provisioning che stavo usando per la distribuzione dell'App Store era collegato all'ID app ED8xxxxxxx.com.rostsolutions.*ma guardando l'ID app per il gioco che stavo per inviare noto che l'ID app era ATMxxxxxxx.com.rostsolutions.Swisch. Quindi il prefisso ID app non corrisponde! Sembrava essere la radice del problema. Quindi quello che ho fatto è stato creare un nuovo profilo di provisioning collegato all'ID app ATMxxxxxxx.com.rostsolutions.Swisch. Usando quel profilo di provisioning ho inviato con successo la mia app all'App Store e ora incrocio le dita e tutto il resto funziona bene al fianco di Apple.

(Ho provato prima a connettermi al nuovo profilo di provisioning all'ID jolly ATMxxxxxxx.com.rostsolutions.*, ma non sembra funzionare).

Ma ciò che mi confonde è che quando guardo la vecchia app in iTunes si connette e passa a Dettagli binari, dice che l'ID app è ED8xxxxxxx.com.rostsolutions.Swisch. Allora perché la pagina "Certificati, identificatori e profili" elenca l'ID app come ATMxxxxxxx.com.rostsolutions.Swisch?


Grazie per aver pubblicato questo Daniel. Sto riscontrando un comportamento simile che impedisce l'utilizzo dei certificati e dei profili desiderati. Ogni volta che scarico un certificato o consento a Xcode di farlo, appare un ID team "fantasma" che "interrompe" la capacità di iCloud (utilizzo) nel mio caso. Nessuna risoluzione per me ancora.
David

OH MIO DIO! Questa stessa merda ci sta succedendo con oltre 50 app! La squadra fantasma ci sta uccidendo. Perché Apple Perché! ????
Sukima,

2

Il mio problema è stato risolto rimuovendo il mio ID Apple da Preferenze-> Account e quindi aggiungendolo di nuovo. Quindi tutti i file del mio profilo di provisioning sono stati visualizzati nel pannello Visualizza dettagli utilità. Stavo erroneamente scegliendo "Profilo di provisioning del team Mac: *" invece del profilo di provisioning di distribuzione effettivo per il progetto pensando che fosse una selezione generica. I file di provisioning devono essere specifici del progetto. Oh e BTW, assicurati che il tuo profilo di provisioning abbia i diritti corretti (ad esempio, Maps). Sono riuscito a rilasciare un'app con OSX Maps senza il diritto e Apple l'ha approvata - ma nessuna versione è stata mostrata nella versione di produzione!


1

Nel mio caso, ho avuto lo stesso problema, la mia soluzione era quella di cambiare il 'Profilo di provisioning di rilascio' nelle Impostazioni di compilazione prima di fare Archive. Lo faccio due volte, una volta per la distribuzione su App Store e un'altra per la distribuzione ad hoc. Aggiungo anche un commento sui miei archivi. La mia conclusione è che c'è qualcosa di rotto nella "ri-firma dell'archivio".


1

C'è un ottimo tutorial per risolvere quel problema su questo sito.

Dice che questo problema può verificarsi quando l'identificatore del bundle di progetti è diverso da quello inserito nel sito Web iTunes Connect .


1

Penso che xcode 5 usi "release" anziché "distribut" che potresti creare tu stesso.


1

Se tutto quanto sopra non ha funzionato (nel mio caso dopo un paio di giorni senza fortuna provare tutto) ho solo una applicazione Mac. ATTENZIONE CON RECESSO!

1) Revoca a mano tutti "Distribuzione app Mac" e "Distribuzione installatore Mac"
2) Pulisci i certificati e le chiavi aperte pertinenti nel Portachiavi ( Attenzione: esporta prima di eliminare)
3) Riavvia Xcode 4) Vai a (in Safari) developer.apple .com -> certificati ecc. 5) Crea CertificateSigningRequest.certSigningRequest in Keychain-> Certificate assistant
6) Crea a mano su developer.apple.com sia "Mac App Distribution" che "Mac Installer Distribution" con il tuo * .certSigningRequest
7) Provisioning Profili -> Distribuzione -> crea / correggi provisioning personalizzato per AppStore (lo chiamo appositamente "Profilo di provisioning Mac per AppStore"
8) Xcode -> Impostazioni -> Account -> Il tuo account ->Aggiorna 9) Xcode Clean -> Archive -> Convalida


1

Ho avuto problemi simili (stavo costruendo per la distribuzione ad hoc). L'unica cosa che è cambiata dall'ultima distribuzione riuscita è stata l'aggiunta di due dispositivi al profilo di provisioning.

Dopo aver ricontrollato e triplicato tutte le impostazioni di build, ho rigenerato il profilo di provisioning (senza modificare nulla), scaricato di nuovo e ha funzionato bene.

Quindi nota a te stesso: se non c'è una spiegazione logica, puoi sempre provare il buon vecchio voodoo IT.

Consiglio anche l' utilità di configurazione di iPhone , che nonostante il suo nome è utile per verificare quali profili di provisioning hai sul computer.


1

ERRORE ITMS-9000: “Questo bundle non è valido. Le nuove app e gli aggiornamenti delle app inviati all'App Store devono essere creati con versioni pubbliche (GM) di XCode 5.1.1 o successive e iOS 7 SDK. Non inviare app create con software beta.


0

Se più sviluppatori utilizzano lo stesso account del centro membri. Uno di loro non può utilizzare un certificato creato da altri perché ha utilizzato una richiesta di certificato creata utilizzando i propri computer.

È necessario utilizzare un certificato creato dall'utente (richiesta di certificato creata utilizzando il computer).

Alternativa, ha detto loro di inviarti il ​​profilo dello sviluppatore. non sono sicuro del nome. per utilizzare un certificato creato su un altro computer.


0

Le autorizzazioni per la firma del codice si verificano a causa della tua risorsa non contiene il file delle autorizzazioni nelle risorse, basta andare a compilare le impostazioni e cercare le autorizzazioni per la firma del codice eliminare la voce per il debug e il rilascio, costruire di nuovo il progetto vedrai che non c'è nessun errore. Saluti


-1

Ho avuto lo stesso problema, ma niente di scritto qui ha funzionato per me. Tuttavia, ho trovato un modo semplice che ha funzionato per me. Ecco come farlo:

1) Nelle impostazioni di creazione del tuo Progetto e dei tuoi Target, scegli "Nessuno" per tutti i profili di provisioning e scegli "Non firmare il codice" per tutte le identità di firma del codice.

2) Ora, scegli il tuo obiettivo e vai a costruire le impostazioni. Nell'impostazione Rilascio identità firma codice, selezionare "Distribuzione iOS" per "Qualsiasi iOS SDK". Quindi, nell'impostazione Rilascio profilo di provisioning, scegli il tuo profilo di distribuzione per "Qualsiasi iOS SDK". Successivamente l'impostazione di Rilascio dell'identità della firma del codice dovrebbe cambiare automaticamente in "Distribuzione iPhone".

3) Archivia la tua build e convalida. Ora dovrebbe funzionare bene. Questo è tutto!

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.