Domanda

Siamo finalmente arrivati al punto di presentare la nostra prima app per iPhone da app store (o cercare di farlo), ma non riesco a ottenere iTunes Connect per accettare la carica.

Io ho tentato, sia attraverso il sito web ("Il binario che hai caricato non è valido.La firma non è valida o non è stato firmato con una Mela presentazione di certificato.") e l'Applicazione Loader ("Info.plist non contiene un CFBundleResourceSpecification").

Dopo un sacco di lettura (tra cui domande come queste), rileggere, e googling, posso dire che:

  • Sono sicuro che il bundle identifier partite AppID.
  • C'è un'Icona.png è un 57x57 px file PNG, e che il nome esatto della Info.plist.
  • Sto facendo un dispositivo, non un simulatore di costruire.
  • Il processo di firma riesce:la build risultati lo dimostrano, e in esecuzione codesign -vvvv MyApp.app indica l'assenza di problemi.
  • Non ci sono caratteri strani nel percorso del file ZIP.
  • Ho cancellato la cartella creata e ri-costruito i binari di un bel paio di volte.

Ora, è vero che in costruito app, l'Info.plist non contiene un CFBundleResourceSpecification chiave, ma non è affatto chiaro dove tale valore deve provenire da, o che cosa altro devo aggiungere per fare questo lavoro.(L'unico riferimento che posso trovare con Apple nella ricerca di alcuni la firma del codice note di rilascio...ma, come ho accennato sopra, la firma del codice passo è successo, per quanto posso dire.)

Qualcuno ha eseguito su qualsiasi spiegazioni per questo problema che non ho già detto?

EDIT: Ecco la (leggermente oscurati) uscita dalla firma del codice fase di compilazione, FWIW:

la firma del codice screenshot http://img70.yfrog.com/img70/8988/codesign.png

È stato utile?

Soluzione

Il problema sembra essere stato che stavo usando json-quadro nella mia app, e ha dato un ulteriore SDK per le istruzioni della wiki.La mia ipotesi è che XCode un po ' confusa dalla presenza di >1 SDK, e quindi non riusciva a trovare il default ResourceRules.plist come si suppone.

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

  1. Utilizzare il "Codice in Firma Risorsa Regole" del Percorso di costruire (che è vuoto per impostazione predefinita) per specificare il percorso del file XCode deve utilizzare: $(SDKROOT)/ResourceRules.plist.Questo funziona, e sembra ragionevolmente innocuo, ma è frustrante, nel senso che XCode dovrebbe essere in grado di capire questo fuori da solo.(Ho trovato questa soluzione in un molto vecchio problema archiviato in json-quadro.)
  2. Non utilizzare l'SDK di approccio.Invece, basta includere il file direttamente nel progetto e aggiornare il #import dichiarazioni con percorsi locali.Questo è l'approccio che ho finito per prendere, da quando abbiamo fatto la decisione generale di piegare tutte le dipendenze esterne al progetto stesso (in modo che altri sviluppatori hanno meno di configurazione a che fare con le loro macchine per l'esecuzione).

Io non sono sicuro se questo è un bug in XCode, o qualcosa di sbagliato con json-quadro, ma ho presentato un problema su questi ultimi, in caso di necessità.

AGGIORNAMENTO del 30 giugno 2010: il problema che ho presentato è stato chiuso, e il SignorBrautaset piani per rimuovere il supporto per l'opzione SDK nella prossima versione (2.3) del progetto.Inoltre, l' codice ora vive su GitHub, anche se il Codice di Google pagine esistono ancora, per ora.

Altri suggerimenti

Per me, dopo la verifica di tutte le cose (coprogettazione, l'icona del file...), ma non puoi caricare la tua App, per cercare di eliminare il Costruito File.Ricordate la copia del file.app per zip app.

Sei sicuro che si sta costruendo con la distribuzione di un, rispetto allo sviluppo, certificato e mobileprovision?

Presumo che stai caricando un .file zip.

Ho appena controllato un app che ho caricato, e CFBundleResourceSpecification è solo nelle versioni firmate (es.il dispositivo costruisce).

Stai facendo una qualsiasi di edificio/copia/zippare dalla riga di comando?Se è così, è necessario essere molto attenti circa i collegamenti simbolici.Il .app viene fornito con una sottodirectory un collegamento simbolico a un altro, e se lo si copia o zip senza diritto bandiere, sarà difficile-copiare il contenuto, che interferisce con il codesigning_emea.

Questo è accaduto a me - e la parte peggiore è, ad-hoc costruisce lavorare bene senza il collegamento simbolico, in modo che non si nota il problema fino a quando l'app store di costruire.

Questo messaggio può accadere per un altro motivo, come ho appena scoperto questa mattina):se il progetto contiene più Informazioni.plists in esso, l'Applicazione Uploader può scoprire la "sbagliato" Info.plist e confondersi.

Questo stava accadendo a me, perché un sistema automatizzato di parte della generazione è stata la creazione di un Info.plist in un bundle portati nel progetto.

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

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top