2010-02-01 16 views
5

Siamo finalmente arrivati ​​al punto di inviare la nostra prima app per iPhone all'app store (o provare), ma non riesco a convincere iTunes Connect ad accettare il caricare.Impossibile caricare il binario dell'applicazione su App Store

Ho tentato attraverso entrambi il sito Web ("Il file binario caricato non era valido. La firma non era valida o non era firmata con un certificato di invio Apple.") E il Caricatore applicazioni ("Info.plist non esegue non contiene CFBundleResourceSpecification ").

Dopo un sacco di lettura (compresa questions like these), rilettura, e googling, posso dire che:

  • sono sicuro che l'identificatore pacchetto corrisponde al AppID.
  • C'è un Icon.png, è un file PNG di 57x57 px, e questo è il nome esatto in Info.plist.
  • Sto facendo un dispositivo, non simulatore, build.
  • Il processo di firma ha esito positivo: i risultati di costruzione mostrano questo e l'esecuzione di codesign -vvvv MyApp.app indica nessun problema.
  • Non ci sono caratteri strani nel percorso del file ZIP.
  • Ho eliminato la cartella di build e ho ricostruito il file binario un bel po 'di volte.

Ora, è vero che in app costruita, l'Info.plist non contiene una chiave CFBundleResourceSpecification, ma non è affatto chiaro a me dove tale valore dovrebbe provenire da, o che altro ho bisogno di aggiungere per far funzionare questo (L'unico riferimento che posso trovare usando la ricerca di Apple è un po 'code signing release notes ... ma, come ho detto sopra, il passaggio per la firma del codice ha esito positivo, per quanto ne so.)

Qualcuno ha trovato una spiegazione per questo problema che non ho già menzionato?

EDIT: Ecco il (leggermente redatto) in uscita dal codice firma fase della compilazione, FWIW:

code signing screenshot http://img70.yfrog.com/img70/8988/codesign.png

+0

Sei stato in grado di caricare qualcosa prima? Sei sicuro che i tuoi certificati siano tutti validi e non siano scaduti? – fbrereto

+0

Inoltre, sei sicuro che stai creando 3.1.2 e non dici 3.2 beta? – Aaron

+0

@fbrereto questa è la nostra prima presentazione di app. Il profilo di distribuzione non è definitivamente scaduto. (E spero che se i certificati non fossero validi, il passo del codice del build non sarebbe verde.) –

risposta

10

Il problema sembra essere che stavo usando json-framework nella mia app e includendolo come SDK aggiuntivo per the instructions in the wiki. La mia ipotesi è che XCode sia stato confuso dalla presenza di> 1 SDK, e quindi non è stato possibile trovare il ResourceRules.plist predefinito come dovrebbe.

ho trovato due soluzioni (beh, soluzioni alternative, comunque):

  1. utilizzare il "Code Signing Regole di risorse Path" costruire impostazione (che è vuoto per impostazione predefinita) per specificare il percorso del file XCode dovrebbe usare : $(SDKROOT)/ResourceRules.plist. Funziona, e sembra ragionevolmente innocuo, ma è frustrante nel senso che XCode dovrebbe essere in grado di capirlo da solo. (Ho trovato questa soluzione in un file very old issue archiviato su json.)
  2. Non utilizzare l'approccio SDK. Invece, è sufficiente includere i file direttamente nel progetto e aggiornare le istruzioni #import con percorsi locali. Questo è l'approccio che ho preso, dato che abbiamo preso una decisione generale di piegare tutte le dipendenze esterne nel progetto stesso (in modo che altri sviluppatori abbiano meno configurazione da fare sulle loro macchine per essere operativi).

Non sono sicuro se si tratta di un bug in XCode, o qualcosa di sbagliato in JSON-framework ma ho filed an issue su quest'ultimo per ogni evenienza.

UPDATE, 30 giugno 2010: il problema che ho archiviato è stato chiuso e Brautaset prevede di rimuovere il supporto per l'opzione SDK nella prossima versione (2.3) del progetto. Inoltre, il code now lives on GitHub, anche se le pagine di codice di Google esistono ancora per ora.

+0

Ti amo davvero tanto. Sono appena stato colpito dallo stesso problema e mi ha sbattuto la testa per quasi un'ora. Ho anche installato Xcode 3.2.2 beta, quindi ho iniziato a contemplare la reinstallazione di tutti. Regola! –

+0

Ho avuto un problema molto simile con l'SDK della trama principale che stavo usando. L'impostazione del "Percorso delle risorse delle risorse per la firma del codice" come descritto sopra risolve il mio problema. Molte grazie. – aogan

0

Sei sicuro si sta costruendo con una distribuzione, al contrario di sviluppo , certificato e mobileprovision?

+0

Sì. L'identità della firma del codice è impostata sul nostro profilo di distribuzione e la fase di creazione della firma del codice mostra il nome del profilo corretto. –

0

Suppongo che tu stia caricando un file .zip.

Ho appena controllato un'app che ho caricato e CFBundleResourceSpecification è solo nelle versioni firmate (vale a dire le build del dispositivo).

+0

Sì, caricamento di un file ZIP. –

+0

Sono nello stesso processo quando creo un file .mobileprovision per la distribuzione dell'App Store. La sezione Dispositivi è disattivata Non posso selezionarne nessuna, perché? –

0

Stai facendo qualcuno del tuo edificio/copia/zipping dalla riga di comando? Se è così, devi stare molto attento ai collegamenti simbolici. Lo .app viene fornito con una sottodirectory come collegamento simbolico a un altro e, se lo si copia o lo si comprime senza i contrassegni corretti, verrà copiato il contenuto, il che equivale al codesigning.

Questo è successo a me - e la cosa peggiore è che le build ad-hoc funzionano bene senza il collegamento simbolico, quindi non si noterà il problema fino a quando non verrà creato l'app store.

+0

Esegue tutti i build tramite XCode, e ha provato a zippare entrambi dalla riga di comando e (di solito) tramite l'opzione del menu Comprimi del Finder. (Ho visto una serie di discussioni che menzionavano il problema del collegamento simbolico.) –

0

Questo messaggio può accadere per un altro motivo (come ho appena scoperto stamattina): se il tuo progetto ha più Info.plists in esso, l'Uploader dell'applicazione potrebbe scoprire la "errata" Info.plist e confondersi.

Questo mi stava accadendo perché una parte automatizzata della build stava creando un Info.plist in un pacchetto inserito nel progetto.

Punta di cappello a qui per la soluzione: http://infinite-sushi.com/2010/08/the-case-of-the-missing-cfbundleresourcespecification/

1

Per me, dopo aver controllato tutte le cose (codesign, il file icona ...), ma non è possibile caricare la vostra applicazione, cercare di eliminare il file incorporato . Ricorda di copiare file.app per comprimere la tua app.

0

Per me la soluzione era la creazione di una certificazione di distribuzione a: Apple Developer Provisioning Portal.

+0

Questo è certamente un passaggio necessario per inviare * qualsiasi * * all'App Store, ma anche uno atteso e ben documentato. Non è la causa della confusione originale qui. –

Problemi correlati