2012-03-10 2 views
9

Ho scoperto che Xcode 4.3.1 ha un problema serio che convalida le app con risorse all'interno di una struttura di directory all'interno di un pacchetto di applicazioni.XCode 4.3.1 interrompe la convalida delle app con le directory aggiunte per riferimento. Qualche soluzione?

Le app possono passare la convalida all'interno del processo Xcode "Build for Archive" - ​​non riesce solo quando la convalida viene eseguita tramite Organizer, che è necessario salvare per la presentazione ad hoc o App Store.

Dopo aver passato ore a cercare di rintracciare la solita firma del codice problemi di titolarità, alla fine ho notato la seguente riga nella console di sistema quando l'esportazione non riesce:

3/10/12 2: 32: 48,450 PM [ 0x0-0x261261] .com.apple.dt.Xcode:/Users/chris/Library/Developer/Xcode/Archives/2012-03-10/Copertura 3-10-12 2.32 PM.xcarchive/Products/Applications/Coverage.app/Piastrelle/T-Mobile-roam/4: È una directory

La directory "Piastrelle" è stata aggiunta al mio progetto tramite "Crea riferimento cartella per eventuali cartelle aggiunte".

Ho scoperto che rimuovere la directory Tiles consente all'applicazione di creare e convalidare. L'aggiunta di nuovo risultati in questo errore del segno di codice.

Sembra che l'aggiunta di un albero di directory a più livelli svuota completamente il processo di convalida ei messaggi di errore inviano gli sviluppatori a un inseguimento selvaggio cercando di rintracciare i problemi di firma e autorizzazione del codice che non rappresentano un problema.

Non ho mai avuto problemi con versioni precedenti di Xcode - questo sembra essere un nuovo bug grave in Xcode 4.3.1.

Esiste una soluzione alternativa che ci consenta di inviare aggiornamenti alla nostra app?

Note:

Questo thread sembra correlato: https://devforums.apple.com/message/630800

Questa domanda tocca un problema simile così: Xcode 4.3: Codesign operation failed (Check that the identity you selected is valid)

+0

Ho lo stesso problema e sto cercando una soluzione alternativa e, durante l'attesa per il fissaggio. – pasine

+0

Questo problema continua con Xcode 4.3.2. – ThomasW

risposta

15

ho passato una giornata cercando di isolare questo bug, e io l'ho finalmente inchiodato.

Il firmatario del codice in XCode 4.3.1 durante la convalida per l'App Store o il salvataggio per le induzioni di distribuzione AdHoc ogni volta che nel bundle è presente una sottodirectory con lo stesso nome della relativa directory principale.

Ad esempio:

test/test/file.x -- FAIL 
test/test2/file.x -- WORKS 

questo sembra essere di nuovo in Xcode 4.3.1, e si spera sarà risolto al più presto.

UPDATE: Ho ricevuto risposta dal supporto Apple DTS che conferma il problema e indica che non vi è alcuna soluzione nota ancora oltre a rinominare le directory nel pacchetto.ugh

5

Forse ho trovato una soluzione:

  1. Organizzatore aperto;
  2. Fare clic con il tasto destro sull'archivio che si desidera esportare e selezionare "Mostra in Finder";
  3. Fare clic con il tasto destro sul file xcarchive e selezionare "Mostra contenuto pacchetto";
  4. Vai a Prodotti/Applicazioni;
  5. Creare una cartella e denominarla Payload;
  6. trascinare il file .app nella cartella (non copiarlo, dal momento che invaliderebbe la firma);
  7. Zip la cartella;
  8. Rinominare il file .zip .ipa

Ha funzionato per me.
Fammi sapere se va bene anche per te.

+0

Non funziona per me. Durante la convalida ricevo il messaggio 'Il file" VOL.AT.app "non può essere aperto perché non esiste tale file. – mwidmann

+0

hai lasciato la cartella originale lì? Alla fine della soluzione, la cartella originale deve essere esattamente come l'hai trovata. – pasine

+0

Ho lavorato per me ma spero che Apple esca presto con una soluzione –

1

Ho avuto lo stesso problema. La soluzione era rimuovere i file che iniziano con "._".

Attenzione, questi file sono nascosti, anche quando si visualizzano i file nascosti!

Nel mio caso, credo che questi file sono stati generati da Photoshop.

+0

Mi hai salvato la vita, grazie! – ocean

+0

Dove hai trovato questi file? Nella cartella del tuo progetto? Nella cartella build? Se i file sono nascosti anche quando visualizzo file nascosti, come li trovo? –

+0

Li ho trovati con i file di tracciamento con git. Non sono stati visualizzati nel Finder, nemmeno con i file nascosti visualizzati. –

1

Ho avuto lo stesso problema e risolto in questo modo:

C'era uno script (sotto fasi di creazione), che ha cercato di "ripulire" i quadri, per la rimozione di elementi apparentemente non necessari, come ad esempio le intestazioni .

Tuttavia, questo distrugge la struttura di base del quadro, che probabilmente ha portato a non essere scoperti più correttamente, impedendo la firma o verificarne il funzionamento.

Ad esempio, il "headers" cartella e collegamento simbolico non dovrebbe essere rimosso, solo i file * .h all'interno della cartella intestazioni!

Quindi, controllare se la cartella .framework contiene la struttura di base che assomiglia a questo:

mylib.framework/ 
    mylib  -> symlink to Versions/Current/mylib 
    Headers -> symlink to Versions/Current/Headers 
    Resources -> symlink to Versions/Current/Resources 
    Versions/ 
    A/ 
     Headers/ 
     Resources/ 
     mylib 
    Current -> symlink to A 
+0

Questo ha funzionato per me, grazie. Nel mio caso il problema era un 'Info mancante.file plist' all'interno della cartella 'Resources'. – zoul

0

Abbiamo appena incontrato questo in cui in qualche modo, il nostro .app stava ottenendo altri .app s integrato nel suo fagotto. Presumibilmente la firma del codice stava soffocando sull'app nidificata.