2012-06-14 9 views
44

Stiamo costruendo un'app per un'altra azienda. Tengono la chiave della firma e preferiscono non condividerla con noi.Creazione di applicazioni iOS utilizzando xcodebuild senza codesign

Dovrebbe essere possibile separare build e sign, ma come posso specificarlo sulla riga di comando di xcodebuild?

MODIFICA per quelli che vengono qui dalla ricerca. La risposta accettata è corretta - fa ciò che la domanda richiede. Tuttavia, l'immagine grande è che separa build e codesign (consentendo a uno sviluppatore che non ha la chiave di distribuzione di creare l'app). Le versioni più recenti di Xcode forniscono gli strumenti per questo. Questa non è una risposta rigorosa a questa domanda, quindi l'ho pubblicata come sintesi: https://gist.github.com/noamtm/5c3aaa0b615477162ccd.

+0

È questo quello che stai cercando? http://cydia.saurik.com/codesign.html – QED

+0

Dopo aver modificato le impostazioni, ecco come si controlla se il pacchetto di applicazioni è firmato o meno: 'codesign -dv/Applications/AppName.app' – Daniel

risposta

96

Per saltare la firma del codice è possibile eseguire una generazione manuale dalla console come questo:

xcodebuild clean build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO 

Utilizza inoltre i parametri -configuration, -target e -sdk al fine di definire le impostazioni di generazione.

Fare riferimento a questo stackoverflow answer per ottenere una descrizione dettagliata su come disabilitare la firma del codice all'interno di Xcode.

+0

Grazie. Non l'ho ancora testato, ma ha senso. – noamtm

+5

Funziona, ma il problema è che non è possibile generare i file richiesti di Entitlement e ResourceRules necessari per il comando 'codesign --entitlements ... --resource-rules ...'. Questo è particolarmente importante se intendi utilizzare iCloud. Non è banale generare questi file da soli. Vedi anche http://stackoverflow.com/questions/9280130/how-to-call-builtin-productpackagingutility-in-commandline. – Alexander

+1

grazie grazie grazie GRAZIE – liang

8

Sfortunatamente può essere difficile creare l'app in modalità di rilascio senza la firma del codice. Otterrete errori dal sistema di compilazione di questo tipo:

CodeSign error: code signing is required for product type 'Application' in SDK 
       'iOS 5.1' 

In questo caso, è necessario configurare il vostro target di utilizzare il jolly sviluppatore/squadra (*) firma identità in modalità di rilascio. L'app verrà firmata con questo al momento della creazione e potrai spedirla al tuo cliente in modo che possa rassegnarla. Questo è ciò che fa la maggior parte degli sviluppatori in outsourcing.

Potrebbe quindi essere possibile rimuovere le informazioni sulla firma del codice eliminando i vari file nell'app come _CodeSignature e utilizzando lo strumento codesign per rimuovere le informazioni dal binario dell'applicazione. Ma non sono sicuro di quanto sia facile. Non è davvero essenziale però. Non ci sono informazioni sensibili nel profilo di provisioning o informazioni di firma.

+0

Quindi questo sarebbe il processo per la costruzione di un .ipa da spedire a un cliente che utilizza Citrix/Zenprise per distribuire l'app ai propri dipendenti? Puoi commentare il mio post qui ?: http: // StackOverflow.it/questions/16089918/citrix-receiver-xenapp-xenmobile-zenprise-ipa-provisioning-and-deploying-an – whyoz

3

Nel Navigatore progetto, selezionare il progetto e aprire la sezione "Impostazioni di creazione" del progetto (e non una destinazione particolare).

In "Code Signing", trovare "Identificazione codice firma" e per entrambe le modalità di debug e rilascio impostare "Qualsiasi SDK iOS" su "Non firmare il codice".

5

Per evitare completamente il codice firma con Xcode 7, ho usato tutte le seguenti opzioni:

CODE_SIGN_IDENTITY="" 
CODE_SIGNING_REQUIRED="NO" 
CODE_SIGN_ENTITLEMENTS="" 
CODE_SIGNING_ALLOWED="NO" 

L'ultima opzione, CODE_SIGNING_ALLOWED="NO" sembrava fare il trucco.

+0

Solo volevo fare lo stesso Grazie per la condivisione. –

+0

Nota: non riesco ad ottenere l'aggiunta di diritti (gruppi di app) per un archivio creato senza di essi anche se eseguo codice con il file dei diritti desiderati. –

+0

Nota che non vorrei fare questo hack per le build di Archive. Voglio solo non incappare in un codesign quando eseguo/testare la mia app nel debug in simulatore. L'azione di archiviazione di solito richiede l'assegnazione di codici a te probabilmente non dovresti disabilitarla affatto. –

Problemi correlati