2012-03-08 12 views
23

Sto provando a ottenere la mia applicazione, che non appare nel Dock, per avere un'opzione da avviare all'accesso. Ciò è complicato e comporta la creazione di una seconda applicazione di supporto che viene aggiunta come elemento di avvio. Questa app helper è responsabile solo dell'avvio dell'app principale e quindi dell'uscita.Problema di firma del codice per il progetto con destinazioni multiple

Ho seguito le istruzioni here e here e funziona come un incantesimo - il problema è, ovviamente, la firma del codice. Ho due obiettivi; la destinazione dell'app helper viene copiata nella sottodirectory Contents/Library/LoginItems del bundle principale in fase di compilazione. Ogni pacchetto ha un proprio identificativo fagotto e propria implementazione profilo di provisioning, ma quando ho convalidare il mio archivio per l'App Store, ottengo il seguente errore:

Invalid provisioning profile. The provisioning profile included in the bundle BUNDLE NAME [BUNDLE NAME.app] is invalid. For more information, visit the Mac OS Developer Portal. 

Se rimuovo il pacchetto di supporto dal mio obiettivo principale, non c'è problema. Sembra che la presenza di un altro profilo di provisioning stia risolvendo l'errore.

Come posso includere due pacchetti firmati e passare la convalida?

+0

Ho esattamente lo stesso problema ... – mirosval

+0

Per ora, ho disabilitato il sandboxing. È una "soluzione" molto temporanea che funzionerà solo fino a quando Apple non risolverà Xcode o smetterà di respingere la scadenza della sandboxing. –

+0

Questo non risolve il problema per me, io ancora non passo la convalida se disattivo diritti, passerò solo se rimuovo l'app helper stessa ... – mirosval

risposta

8

sono stato finalmente in grado di risolvere questo problema utilizzando codesign sul computer di un collega (ci deve essere stato qualcosa di sbagliato con il mio portachiavi) e l'eliminazione del file embedded.provisionprofile dal app helper aggiungendo il seguente script run:

if [ -f "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Contents/embedded.provisionprofile" ]; 
then 
    rm "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Contents/embedded.provisionprofile" 
    echo "Removed embedded provisioning profile." 
else 
    echo "No profile found" 
fi 
3

È necessario utilizzare lo stesso certificato di produzione del Mac App Store per firmare sia l'app helper che l'applicazione principale. Non ho provato questo in Xcode - abbiamo un'app helper che è una risorsa bundle, ma la nostra firma del codice è uno script da riga di comando. Non abbiamo avuto problemi con il sistema di app store.

Non sono sicuro del motivo per cui si è terminato con un profilo di provisioning nel prodotto creato e non penso sia necessario per l'invio di app store. Si può provare a utilizzare codesign manualmente:

codesign -f -s "3rd Party Mac Developer Application: My Company" \ 
    -i "com.mycompany.loginitem" \ 
    --entitlements path/to/loginitem.entitlements" \ 
    path/to/appname.app/Contents/Library/LoginItems/loginitem.app 

codesign -f -s "3rd Party Mac Developer Application: My Company" \ 
    -i "com.mycompany.appname" \ 
    --entitlements path/to/app.entitlements" \ 
    path/to/appname.app 
+0

Due problemi: se guardo nel bundle, vedo infatti un file 'embedded.provisionprofile', e se provo a usare' codesign', ottengo il seguente errore: 'formato file oggetto non riconosciuto, non valido o non adatto '. Qualche idea su questo? –

+0

Non penso di aver visto quell'errore. Stai firmando un pacchetto '.app' o è solo un eseguibile? Ricordo di aver avuto problemi durante il tentativo di firmare direttamente un eseguibile, ma sembra anche che per me funzioni bene. Il profilo non dovrebbe essere necessario (almeno non abbiamo avuto problemi con questo) - cosa succede se lo rimuovi e prova a firmare? – wbyoung

+1

Ash Furrow - hai mai risolto questo? – tomtaylor

0

ho avuto lo stesso problema. Invece di rimuovere embedded.provisionprofile dall'app helper, ho appena disattivato il provisioning (Profilo di provisioning: nessuno) lasciando l'identificazione del codice e le autorizzazioni in atto. Ho inviato la mia app per la revisione senza problemi.

Problemi correlati