Questo è stato qualcosa che ho affrontato in uno dei miei sistemi di compilazione per lo stesso scopo ... facciamo un viaggio indietro nel tempo fino al primo giorno del "Programma per sviluppatori iPhone". Se fossi in giro per la comunità in quel momento, potresti ricordare che la toolchain era ... dovremmo dire meno amichevole ... di quanto lo sia oggi.
Quando si desidera creare per l'AppStore o per le build AdHoc è necessario creare questo file entitlements.plist, quindi incollare un blob di XML nel corpo di quel file. Quindi hai eseguito la build e in quel momento si è verificata quella che sembrava essere la magia e la pura presenza di quel file ha reso la costruzione funzionante, ti ha permesso di costruire manualmente il tuo IPA e continuare il lavoro come al solito. Ora che siamo un po 'più vecchi e, si spera, un po' più saggi che in quei primi giorni dell'SDK, siamo arrivati a riconoscere che il blob XML magico non era in realtà così magico - il "get-task-allow" key è un'impostazione per indicare se il binario dovrebbe consentire ad altri processi (come forse un debugger) di collegarsi al binario. Quando si firmano app utilizzando un profilo di provisioning di sviluppo, questa chiave sarà impostata su "true" (e quindi permetterà a LLDB di collegarsi e interagire con la propria app) ... e naturalmente quando si firmano app utilizzando un profilo di provisioning di distribuzione, questa chiave verrà impostata a 'falso'.
Apple ha fornito alcuni aggiornamenti in Tech Note TN2250 sulla lettura del XML (e per estensione dei diritti) di Profili di fornitura:
sicurezza CMS -D -i /path/to/the.app/embedded. mobileprovision
Ciò restituirà l'XML nel profilo Provisioning - da lì si può analizzare la coppia di valori chiave per 'get-task-consentire' e l'uso che il valore per determinare se il profilo di provisioning è sviluppo o la distribuzione .
Sono assolutamente d'accordo che sarebbe bello avere uno strumento che ce lo dirà direttamente, quindi non dobbiamo annusare il profilo per trovare indizi, ma allo stesso tempo, almeno, abbiamo un alto livello di affidabilità, anche se in modo indiretto per fare quella distinzione prima di scappare e creare una build che non possiamo usare.
Buona fortuna e fammi sapere se hai bisogno di ulteriori chiarimenti o hai altre domande.
fonte
2013-04-28 22:54:27
Questa è una domanda interessante, +1. –
Ovviamente gli utenti di 'testflightapp.com' lo fanno per i file .ipa, ma non so nemmeno come differenziare adhoc/appstore quello che stai facendo. Penso che gli strumenti da riga di comando di XCode dovrebbero includere uno "strumento per il rilascio di profili di fornitura" e questo dovrebbe essere fatto per noi. È solo una ricca fonte di confusione dell'utente. Grazie Apple. –
Hi Warren P, fyi tutto quello che sto facendo per rilevare un profilo adhoc rispetto ad appstore sta verificando la presenza della chiave 'ProvisionedDevices' nel plist del profilo, poiché i profili appstore non hanno alcun dispositivo predisposto. Potrebbe non essere infallibile, ma per il sistema che sto lavorando al suo interno serve lo scopo. Spero che questo sia utile. –