2013-10-03 7 views
8

Recentemente mi sono imbattuto in un problema piuttosto strano con Xcode che si verifica quando creo un IPA e provo a installarlo, ho provato l'installazione utilizzando Xcode, iTunes e iPhone Utility Configurazione, tutti che danno lo stesso erroreL'installazione di IPA genera un errore "Una risorsa firmata è stata aggiunta, modificata o cancellata"

A signed resource has been added, modified, or deleted. 

posso mettere a punto con successo l'applicazione sul mio telefono utilizzando XCode, è solo quando provo ad installare un'IPA vedo l'errore.

Ho provato decomprimere l'IPA e l'esecuzione dello strumento di convalida codesign, che getta in sulla seguente risposta:

a sealed resource is missing or invalid In architecture: armv7 
resource missing: 
/Users/dev1/Documents/PoleTester.app/Settings.bundle/._Root.plist 

Questo mi ha portato a guardare il file Settings.bundle e garantire che è in fase di incluso nel costruire, quale è. È interessante notare che, se rimuovo il file Settings.bundle, costruisco un IPA e tento di installarlo sul mio iPhone, l'installazione ha esito positivo, tuttavia questo non serve in quanto ho bisogno del file Settings.bundle che si installa con l'app.

Ulteriori indagini su alcuni dei miei precedenti progetti XCode hanno dimostrato che è possibile creare un IPA, con il file Settings.bundle incluso, e installarlo correttamente. Tuttavia, se faccio una semplice modifica al file Settings.bundle, come ad esempio l'aggiunta o la rimozione di una fila, costruire un IPA e quindi tentare di installarlo ho la

"A signed resource has been added, modified, or deleted" error. 

Sono ad un po 'di perdita di ciò che sta causando questo errore e perché il file Settings.bundle sta causando il fallimento dell'installazione.

Qualcuno ha visto questo errore prima o potenzialmente far luce su cosa lo sta causando?

sto usando Xcode 4.6.3 e un iPhone 4 esecuzione iOS 6.1.3.

risposta

2

È un po 'tardi, ma oggi ho riscontrato esattamente lo stesso problema con Xcode 5.0.1.

Secondo https://developer.apple.com/library/ios/technotes/tn2318/index.html, "la risorsa mancante: my.app/ *.". Errore potrebbe essere causato da:

Il file con prefisso "._" è considerato un file AppleDouble e può deriva dalla copia della cartella del progetto Xcode non compresso su un disco formattato non HFS +. I file AppleDouble devono essere rimossi utilizzando il comando 'dot_clean'. La cartella del progetto Xcode è l'argomento di dot_clean come illustrato di seguito.

passi ho fatto per risolvere questo:

  • Run "dot_clean/path/to/My_Xcode_Project" nel Terminal
  • Aprire Xcode nuovo

    1. Chiudere Xcode e fare una nuova build

    Stranamente la maggior parte di questi file * * non sembra causare alcun problema eccetto quelli all'interno di Settings.bundle (Quasi tutti i file nella mia directory ne avevano uno, ma solo un ho aggiunto Settings.bundle, l'IPA non è riuscito a installare).

  • 19

    Clean Build Folder (⌘⌥⇧-K) ha risolto per me 3 volte su 3.

    +12

    Vuoi sapere cosa è fantastico? Devo farlo con ogni build in xcode 6b5. – mmr

    +0

    @mmr Per quello che vale, ho scoperto che se sto provando su un dispositivo con iOS 8 questo succede sempre. Ma non succede quando esegui il test su un dispositivo con iOS 7. Curioso se hai un widget nella tua app? – Awesomeness

    +0

    @ Awesomeness-- Questa è la ragione per cui sto usando la beta, sì. Penso che ci sia ancora un po 'di lavoro in termini di integrazione dei widget nei progetti. Come mai un widget dovrebbe mai essere firmato diversamente dall'app principale? – mmr

    3

    Mi sono appena imbattuto in questo problema utilizzando Xcode 6 beta 6 installando sul mio iPhone 5 con iOS 8 beta 5. L'app che sto costruendo usa un'estensione Today (ovvero widget).

    Sembra che il problema sia dovuto al fatto che non ho impostato correttamente le dipendenze. Ho un framework di terze parti (Alamofire) impostato come parte del progetto come dipendenza del progetto complessivo, ma non come dipendenza dal widget di oggi. Potrei costruire bene, ma durante l'installazione sul dispositivo otterrei l'errore "La risorsa firmata è stata ...".

    Aggiungendo Alamofire come dipendenza dal widget Oggi questo ha risolto il problema.

    1

    Nel mio caso, ciò che ha aiutato è stato l'aggiunta di uno script bash in fasi di creazione (appena prima di "compilare i sorgenti"):

    find ~/Library/Developer/Xcode/DerivedData -name "YouAppName.appex" | xargs -I % find % -type f -maxdepth 1 | xargs rm 
    

    Che questo script fa, è quello di pulire i file in dir appex del progetto (ad esempio le attività), ma lasciando sottodirectory (es. storyboard compilato). In effetti, l'utilizzo di questo script durante la creazione è molto più veloce da eseguire rispetto alla pulizia completa del progetto.

    Problemi correlati