2012-06-27 12 views
17

Sto davvero impazzendo con questo problema! Ho un'app che contiene una semplice app Helper che gestisce l'elemento di accesso per l'app principale.Invia una app OSX con l'app helper nel suo pacchetto

Quando si tenta di inviare l'app vengono visualizzati errori relativi al profilo di provisioning e alle autorizzazioni. Sono sicuro che il problema è legato all'app Helper perché prima di quanto l'avessi aggiunto l'invio funzionava senza problemi.

Al momento l'app di supporto è firmata in codice e viene inserita in modalità sandbox come app principale.

Gli errori sono:

  • valido profilo di provisioning. Il profilo di provisioning incluso nel pacchetto non è valido

  • Diritti di firma di codice non validi. Le autorizzazioni nella firma del pacchetto dell'app non corrispondono a quelle contenute nel profilo di fornitura. Il bundle contiene una chiave che non è incluso nel profilo di provisioning 'com.apple.application-identifier' in 'myapp.app/Contents/Library/LoginItems/helper.app'

  • codice non valido I diritti di firma. Le autorizzazioni nella firma del pacchetto dell'app non corrispondono a quelle contenute nel profilo di fornitura. Il bundle contiene una chiave che non è incluso nel profilo di provisioning 'com.apple.application-identifier' in 'myapp.app/Contents/MacOS/myapp'

+0

Stai usando archiviazione iCloud nella tua app? – Tim

+0

No, non lo uso – MatterGoal

+0

Ma allora non dovresti aver bisogno di un profilo di provisioning?Forse ci sono voci nell'elenco "Contenitori iCloud" delle impostazioni di riepilogo obiettivo della tua app (principale/helper)? – Tim

risposta

20

Per chiunque altro imbattersi in questo problema, non c'è bisogno di codesign l'applicazione helper per la seconda volta, è sufficiente rimuovere la "embedded.provisionprofile" dall'applicazione helper nella xarchive e si può presentare alcun problema.

+4

Questo ha funzionato per me. Sia l'app principale che quella helper sono firmate in codice. Sia l'app principale che quella di supporto hanno profili di provisioning di distribuzione con ID bundle separati. Inizialmente ero in grado di creare e archiviare, ma ho riscontrato problemi durante la convalida. Dopo l'archiviazione, ho selezionato l'archivio e rivelato in Finder. Quindi, rimuovere manualmente embedded.provisionprofile dall'app HELPER in profondità nell'archivio. Quindi, di nuovo in Xcode, ri-validare e inviare l'archivio pulito. –

+0

Grazie Sean! Ha funzionato per me – Todd

+0

Grazie Sean, hai appena ucciso il mio mal di testa! –

6

L'unica soluzione che sembra risolvere questo problema era codesign e sandboxing l'applicazione helper da Xcode e poi:


Re-codesign l'applicazione helper dal terminal

codesign -f -s "3rd Party mac Developer Application:" -i "com.bundle.YOUR.HELPER" --entitlements path/to/helper/entitlements YEOR-HELPER.app



Rimuovere il profilo di provisioning da Helper app, l'aggiunta di un "Esegui script" in "Build Fasi"

rm"${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Contents/Library/LoginItems/YOUR-HELPER.app/Contents/embedded.provisionprofile" 

Con questa soluzione abbiamo presentato correttamente la nostra App.

+1

Che ne dici di entrambi automatici? 'rm "$ {} BUILT_PRODUCTS_DIR/$ {} CONTENTS_FOLDER_PATH /Library/LoginItems/YOURHELPER.app/Contents/$ {} EMBEDDED_PROFILE_NAME"' e ' codesign -f -s "$ {} CODE_SIGN_IDENTITY" -i "com .identifier.YOURHELPER "--entitlements" $ {SOURCE_ROOT} /Path/To/YOURHELPER.entitlements "" $ {BUILT_PRODUCTS_DIR}/$ {CONTENTS_FOLDER_PATH} /Library/LoginItems/YOURHELPER.app "' –

+1

Devi codificare esplicitamente il codice app di supporto ancora? La mia app helper ha il suo BundleID e non ho un profilo di provisioning di produzione per questo. Tuttavia, ho potuto archiviare l'app principale e ha superato il test iTC (stato modificato in "attesa di revisione"). Forse verrà rifiutato durante la revisione di Apple? : S –

+0

Grazie mille, hai reso la mia giornata. Sono stato alle prese con questi dannati errori di segno tutta la settimana. Ti darei +100 se potessi: D – Vlad

1

Ho avuto il 3 ° errore quando ho accidentalmente incluso alcuni file .a di terze parti nel mio target. (Sono necessari per la distribuzione non App Store ma ho dimenticato di escluderli per la build App Store). L'errore non è stato troppo utile per rintracciarlo!

0

sono stato finalmente in grado di risolvere il problema eliminando il 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 
Problemi correlati