I diritti non sono validi

Di recente, ho aggiornato il mio iPhone SDK OS dalla versione 2.2.1 alla versione 3.0. Successivamente, durante la creazione dell’applicazione, viene visualizzato un messaggio di errore relativo al profilo di provisioning scaduto. Così ho creato un nuovo profilo di provisioning.

Quindi ho effettuato la distribuzione della mia applicazione con il profilo di provisioning. Ma ricevo un errore in iTunes durante la sincronizzazione della mia applicazione su un dispositivo iPhone. Il messaggio di errore è “L’applicazione ‘iGVA’ non è stata installata su iPhone perché le autorizzazioni non sono valide.”

Ho controllato la firma del codice. Le autorizzazioni contengono il file plist authorization corretto.

Come può essere risolto?

La risposta di Michael sopra è azzeccata (o il link a cui punta è). Ecco i passaggi che ho dovuto fare per farlo funzionare:

  • Avere un certificato ad-hoc per il quale viene controllato l’UDID del dispositivo. Installa quel certificato trascinandolo sull’icona XCode.
  • Sul progetto, crea una configurazione di distribuzione e imposta i parametri di build sul dispositivo appropriato | distribuzione. In questo momento, costruiamo per Device 3.0 | Distribuzione.
  • Il mio progetto non includeva un file Entitlements.plist: dovevo aggiungerlo selezionando dal menu File | Aggiungi file | Sistema operativo IPhone | Entitlement e chiama il nuovo file Entitlements.plist
  • Il nuovo file plist ha solo una riga: imposta il valore di quella riga su deselezionata.
  • Nella configurazione di generazione del progetto, nella riga per le autorizzazioni di firma del codice, immettere il valore del nomefile Entitlements.plist.
  • Nell’identity framework di firma del codice, selezionare l’id quadro del certificato ad hoc (anche se ho scoperto che è ansible utilizzare anche l’identity framework del certificato di distribuzione)
  • ADESSO COSTRUISCI 🙂
  • Consegna il file dell’app risultante più il certificato ad hoc alla persona che ti ha fornito il suo UDID. Dovrebbe funzionare :).

Un file Entitlements.plist è richiesto per i tester che installano build ad-hoc. I modelli iOS predefiniti non ne includono uno. In XCode 3.2.4 ne crei uno come questo:

  1. Dal menu, scegli “File> Nuovo file …”
  2. Sotto Modelli iOS, c’è una sezione relativa alla firma del codice. Scegli l’icona del certificato denominata Entitlement. Denominare il file “Entitlements.plist”
  3. Seleziona Entitlements.plist nell’albero dei sorgenti.
  4. Scegli “Visualizza> Tipo di elenco di proprietà> Plista per gli utenti iPhone”
  5. Aggiungi una nuova chiave all’elenco delle proprietà (seleziona la riga superiore, premi invio)
  6. L’object sarà probabilmente chiamato “Può essere debugato”. In caso contrario, scegli quello tra le opzioni disponibili. Questo è equivalente a “get-task-allow”.

Se non ne hai ancora uno, crea un profilo di build “ad hoc”:

  1. Seleziona il tuo objective nell’albero dei sorgenti.
  2. Dal menu, scegli “File> Ottieni informazioni”
  3. Nell’ispettore. seleziona la scheda “Costruisci”.
  4. Sotto “Configurazione”, seleziona “Modifica configurazioni …”
  5. Seleziona la configurazione di ‘Rilascio’, fai clic su ‘Duplica’ nella parte inferiore dello schermo.
  6. Rinominare la nuova configurazione “Distribuzione ad-hoc”

Ora hai creato un Entitlements.plist, devi aggiungerlo alle impostazioni di generazione.

  1. Seleziona il tuo objective nell’albero dei sorgenti.
  2. Dal menu, scegli “File> Ottieni informazioni”
  3. Nell’ispettore. seleziona la scheda “Costruisci”.
  4. Assicurati che il selettore di configurazione sia impostato su “Distribuzione ad-hoc”
  5. Nel gruppo “Firma codice”, modifica il valore di “Autorizzazioni per la firma del codice” in “Entitlements.plist”. XCode potrebbe aver inserito un percorso relativo per te. Se è così, cambialo.

Nota: si verificheranno errori durante l’installazione dell’applicazione sul proprio dispositivo se si crea e si esegue con “Identificativi di firma del codice” impostato per altre configurazioni di build.

Infine, controlla che Entitlements.plist sia stato aggiunto alla tua destinazione.

  1. Seleziona Entitlements.plist nell’albero dei sorgenti.
  2. Dal menu, scegli “File> Ottieni informazioni”.
  3. Seleziona la scheda “Target”.
  4. Assicurati che la casella accanto al tuo objective sia selezionata.

Ora dovresti essere in grado di distribuire le tue build ad-hoc senza questo errore.

La maggior parte di questo è stata ricavata dalla Guida alla gestione dei diritti delle applicazioni di Apple, il resto da tentativi ed errori.

Sono rimasto anche un po ‘per questo e ho trovato la risposta in App e diritti ad hoc .

Potrebbe essere necessario assicurarsi che il percorso del file Entitlements.plist sia inserito nelle impostazioni del progetto in “Autorizzazioni per la firma del codice”.

Stavo diventando pazzo per questo. Finalmente, credo di averlo capito. Nelle impostazioni del progetto, stavo impostando le autorizzazioni e le funzionalità di firma del codice correttamente nella corretta configurazione Adhoc. Tuttavia, anche se tutto sembrava OK, quando ho controllato “Progetto -> Modifica Target attivo” la mia entity framework di firma del codice era ancora bloccata su “Sviluppatore iPhone”.

Dopo aver effettuato il passaggio alla corretta “Distribuzione iPhone” e ricompilato, Xcode mi ha chiesto di consentire la firma del codice per la prima volta. E tutto è stato compilato e trasferito sul mio telefono ora!

Spero che aiuti. Credo seriamente che questo problema sia un bug o un difetto da parte di Apple. Ho perso diverse ore per una cosa semplice, grazie al loro IDE non documentato …

Per l’amor di registrazione, visto che tutte queste meravigliose risposte non mi hanno aiutato, ho pensato di condividere il mio problema con le Entitlement.

Quindi sì, ho aggiunto UDID, ottenuto il provisioning, verificato sul telefono, nelle impostazioni di build, ecc.

Il mio problema tecnico (grazie a http://www.musicalgeometry.com/?p=1237 ) era che lo schema Ad Hoc era impostato come configurazione Ad Hoc solo per le impostazioni di esecuzione .

Per le impostazioni di archivio stava ancora puntando alla vecchia configurazione di Release.

(Queste impostazioni sono le tabs sul lato sinistro nella finestra dello schema di modifica.)

Esegui le impostazioni dell'app

Impostazioni di archiviazione

Se salvi qualcuno la mia frustrazione, ho fatto la mia parte.

Le titolarità per la firma del codice non sono più necessarie per i build Ad Hoc in Xcode 4 – vedere le note sui dettagli nella nota tecnica Apple TN2250

Devi anche assicurarti di avere un profilo di provisioning non scaduto, che mi ha penalizzato su questo per un po ‘(i profili di provisioning Ad Hoc sembrano scadere dopo un anno). Il messaggio di errore è lo stesso, ma non ha nulla a che fare con il non avere un file Entitlements.plist valido.

Assicurati di aver creato e archiviato “Crea” per “Dispositivo” e che la configurazione non sia “Debug”. Sembrerà creare l’archivio correttamente, ma non riuscirà a installare il .ipa il dispositivo se si è impostato su un profilo di debug quando si esegue il ‘Build and Archive’.

Questo problema potrebbe non avere nulla a che fare con il plist dei diritti di per sé. Ho due iPod Touches che uso per testare. Quando sono andato a sincronizzare le app con loro, si funzionava perfettamente, ma per l’altro ho ricevuto l’errore “le autorizzazioni non sono valide”. A quanto pare, un dispositivo (quello funzionante) aveva il file di provisioning mobile su di esso, mentre l’altro no. Questa è stata una chiara svista da parte mia. Tuttavia, ciò che mi ha gettato è che non ho mai aggiunto esplicitamente il file di provisioning al primo dispositivo. Non sono sicuro di come sia arrivato su quel dispositivo (sono ancora nuovo in questo – lol) – in passato l’ho sempre trascinato nell’Organizer con il dispositivo collegato, ma questa volta non l’ho fatto.

Quindi il profilo di provisioning e il codice xcode sono stati impostati perfettamente con gli ID corretti, ecc., Ma l’app non è ancora riuscita a sincronizzarsi. Ovviamente se il dispositivo non viene fornito correttamente, verrà visualizzato l’errore. Sarebbe bello se l’errore fosse più utile in questo caso.

Ho avuto questo in XCode 4. Ho provato a pulire, cancellare e ricreare il file dei diritti ma ancora nessuna gioia. Quindi ho cambiato il valore per “Può essere eseguito il debug” da SÌ a NO .. e ha funzionato. Ad ogni modo sembra funzionare bene ora, spero che questo aiuti!

Questo è successo anche a me, e le altre risposte non lo hanno risolto per me.

Dopo aver passato mezza giornata a build, installare, pulire, fare clic su inutilmente – ho finalmente cancellato Entitlements.plist dalla casella sotto Code Signing Entitlement, salvata e digitata di nuovo – voilà! Ha funzionato di nuovo! Non ho mai toccato il file degli Entitlement, solo l’impostazione.

Ho avuto lo stesso problema, usando Xcode 4. È risultato essere causato da una selezione errata per Identity nella finestra di dialogo “Condividi …” nella sezione (Archivi della sezione) di Organizer. La selezione corretta (per me) è: “Do not Re-sign”.

Ho avuto anche questo problema. Come si è scoperto, sicuramente avevo modificato una configurazione per supportare ad hoc, e sicuramente stavo costruendo usando la configurazione di distribuzione. MA. Non avevo modificato le proprietà della configurazione di distribuzione, ma il rilascio è (ho pensato che stavo modificando la distribuzione).

Questo potrebbe non essere. Ma anche se sei sicuro, controlla che stai usando la configurazione corretta e che questa configurazione sia regolata correttamente.

Dai documenti:

La creazione di un’app per la distribuzione Ad Hoc è simile alla creazione di un’app per la distribuzione dell’App Store, con l’eccezione di due passaggi aggiuntivi. Innanzitutto, è necessario creare un profilo Provisioning distribuzione ad hoc e aggiungere gli UDID dei dispositivi iOS che si desidera distribuire utilizzando il portale di provisioning del programma per gli sviluppatori iPhone. In secondo luogo, è necessario creare un file Entitlement per la firma del codice. Per informazioni su come creare un file Entitlement, leggere la sezione Managing Entitlements dell’applicazione della Guida allo sviluppo iOS.


Gestione dei diritti delle applicazioni

iOS consente l’accesso a risorse e funzionalità speciali, ad esempio se l’applicazione può essere sottoposta a debug, attraverso le proprietà denominate autorizzazioni. Per specificare le informazioni di authorization nella propria applicazione, si aggiunge un file di elenco di proprietà di concessione contenente le definizioni di authorization (coppie chiave / valore) per il progetto. Quando si crea l’applicazione, Xcode copia il file nel pacchetto di applicazioni generato.

Per aggiungere un file di proprietà-elenco delle autorizzazioni al progetto:

Nell’elenco Gruppi e file, selezionare il gruppo Risorse. Scegli Archivio> Nuovo file. Scegli il modello iOS> Code Signing> Entitlement. Denominare il file Entitlements.plist. (Puoi usare qualsiasi nome, assicurati che corrisponda al valore delle impostazioni di creazione dei diritti di firma del codice, come spiegato più avanti in questa sezione). Imposta il tipo del file di elenco di proprietà su Titolarità iPhone. Con il file selezionato nell’editor di testo, scegli Visualizza> Tipo di elenco di proprietà> Plist di diritti degli iPhone.

Aggiungi le voci dell’authorization al file. Per ogni proprietà dell’authorization è necessario definire:

Fai clic sui pulsanti Aggiungi figlio o Aggiungi fratello alla destra della riga selezionata. Il pulsante Aggiungi bambino ha tre linee che descrivono una gerarchia, il pulsante Aggiungi pari ha un segno più (+) su di esso. Scegli la proprietà dell’authorization dal menu a comparsa visualizzato. Se il diritto che devi aggiungere non appare nel menu, scegli Vista> Tipo elenco proprietà> Predefinito per Tipo file. Quindi immettere il nome e il tipo di chiave dell’authorization.

Inserisci il valore per la proprietà. Impostare le impostazioni di generazione dei diritti di firma del codice per la destinazione sul nome del file elenco di proprietà delle autorizzazioni appena aggiunte.


Una volta creato il file Entitlement e aggiunto all’impostazione di creazione dei diritti di firma del codice, aprire il file Entitlement e aggiungere o modificare la chiave get-task-allow e impostarla su false.

Oltre a comprimere il tuo pacchetto .app per distribuire il tuo build Ad Hoc ai tester, ecc. Si consiglia di comprimere anche il profilo di provisioning prima di distribuire perché determinati client e server di posta elettronica potrebbero danneggiare il profilo di provisioning.

Per informazioni sulla distribuzione Ad Hoc, leggi la sezione Pubblicazione delle applicazioni per i test nella Guida allo sviluppo iOS.

Ho appena trovato un’altra circostanza che causa questo problema. Devi assicurarti di includere il profilo di provisioning corretto. Ho un’applicazione che ha sia una versione per iPhone e iPod, sia una versione per iPad creata dallo stesso progetto. A quanto pare ho inviato il profilo ad hoc dell’iPad con la versione iPad dell’applicazione e non funziona. Peggio ancora, ho installato il profilo corretto localmente con Xcode , quindi tutto funziona correttamente sul mio computer.

Ho riscontrato un problema ogni volta che ho aggiunto un nuovo dispositivo nell’elenco dei dispositivi, quindi ho creato i nuovi profili selezionando i nuovi dispositivi e trascinandoli su Xcode e preparando la build.

Nel momento in cui utilizzo quella build per l’installazione del dispositivo, ottengo l’errore

I DIRITTI NON SONO VALIDI

Ho provato a risolverlo con tutti i modi in cui potevo pensare, ma non è emerso nulla di positivo. In ogni caso, devo creare il nuovo App-ID o dover ripetere l’intero processo di creazione dei profili. Quindi posso installare la build sul dispositivo.

fai in modo che Shure selezioni l’ identity framework di firma nei TARGET 😉