Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Sì, è possibile, ma in genere è necessario firmare nuovamente il .app
bundle dopo aver apportato la modifica.
Si noti che la modifica del .ipa
file non è necessaria in uso normale. Questo articolo viene fornito esclusivamente a scopo informativo.
Esempio: rimozione di un file da un .ipa
archivio
Per questo esempio si presuppone che il nome del progetto Xamarin.iOS sia iPhoneApp1
e che generated session id
sia cc530d20d6b19da63f6f1c6f67a0a254
Compilare il
.ipa
file come di consueto da Visual Studio.Passare all'host di compilazione Mac.
Trovare la compilazione nella
~/Library/Caches/Xamarin/mtbs/builds
cartella . Puoi incollare questo percorso nel Finder > Vai > alla cartella per esplorare la cartella nel Finder. Cercare la cartella corrispondente al nome del progetto. All'interno di tale cartella cercare la cartella corrispondente agenerated session id
della compilazione. Questa sarà probabilmente la sottocartella con l'ora di modifica più recente.Aprire una nuova
Terminal.app
finestra.Digitare
cd
nella finestra Terminal.app, quindi trascinare e rilasciare lagenerated session id
cartella nellaTerminal.app
finestra:Digitare la chiave restituita per modificare la directory nella
generated session id
cartella .Decomprimere il
.ipa
file in una cartella temporaneaold/
usando il comando seguente. Modificare iAd-Hoc
nomi eiPhoneApp1
in base alle esigenze per il progetto specifico.ditto -xk bin/i Telefono/Ad-Hoc/i Telefono App1-1.0.ipa old/
Mantenere aperta la
Terminal.app
finestra.Eliminare i file desiderati da
.ipa
. È possibile spostarli nel Cestino usando Finder oppure eliminarli nella riga di comando usandoTerminal.app
. Per visualizzare il contenuto delPayload/iPhone
file nel Finder, fare clic sul file e selezionare Mostra contenuto pacchetto.Usando lo stesso approccio generale del passaggio 3, trovare il file di log in
~/Library/Logs/Xamarin/MonoTouchVS/
con il nome del progetto e nelgenerated session id
nome:Aprire il log di compilazione del passaggio 10, ad esempio facendo doppio clic su di esso.
Trovare la riga che include
tool /usr/bin/codesign execution started with arguments: -v --force --sign
.Digitare
/usr/bin/codesign
nella finestra Terminal.app del passaggio 8.Copiare tutti gli argomenti a partire
-v
dalla riga nel passaggio 12 e incollarli nella finestra di Terminal.app.Modificare l'ultimo argomento in modo che sia il
.app
bundle che si trova all'interno dellaold/Payload/
cartella e quindi eseguire il comando ./usr/bin/codesign -v --force --sign SOME_LONG_STRING in/iPhone/Ad-Hoc/iPhoneApp1.app/ResourceRules.plist --entitlements obj/iPhone/Ad-Hoc/Entitlements.xcent old/Payload/iPhoneApp1.app
Passare alla
old/
directory in Terminale:cd old
Comprimere il contenuto della directory in un nuovo
.ipa
file usando ilzip
comando . È possibile modificare l'argomento"$HOME/Desktop/iPhoneApp1-1.0.ipa"
in modo da restituire il.ipa
file ovunque si desideri:zip -yr "$HOME/Desktop/iPhoneApp1-1.0.ipa" *
Messaggi di errore comuni
Se viene visualizzato Invalid Signature. A sealed resource is missing or invalid.
, significa in genere che qualcosa è stato modificato all'interno del .app
bundle e che il .app
bundle non è stato firmato correttamente in seguito. Si noti anche che se si vuole creare un oggetto .ipa
con un profilo di distribuzione, è necessario compilare l'originale .ipa
con un profilo di distribuzione. In caso contrario, l'oggetto Entitlements.xcent
non sarà corretto.
Per fornire un esempio concreto di come può verificarsi questo errore, se si esegue il comando seguente codesign --verify
nella finestra del terminale dopo il passaggio 9, verrà visualizzato l'errore insieme alla causa esatta dell'errore:
$ codesign -dvvv --no-strict --verify old/Payload/iPhoneApp1.app
old/Payload/iPhoneApp1.app: a sealed resource is missing or invalid
file missing: /Users/macuser/Library/Caches/Xamarin/mtbs/builds/iPhoneApp1/cc530d20d6b19da63f6f1c6f67a0a254/old/Payload/iPhoneApp1.app/MyFile.png
E il processo di verifica dell'App Store segnala un messaggio di errore simile:
ERRORE ITMS-90035: "Firma non valida. Una risorsa sealed è mancante o non valida. Il file binario nel percorso [i Telefono App1.app/i Telefono App1] contiene una firma non valida. Assicurarsi di aver firmato l'applicazione con un certificato di distribuzione, non un certificato ad hoc o un certificato di sviluppo. Verificare che le impostazioni di firma del codice in Xcode siano corrette a livello di destinazione (che eseguono l'override di tutti i valori a livello di progetto). Assicurarsi inoltre che il bundle che si sta caricando sia stato compilato usando una destinazione di rilascio in Xcode, non una destinazione del simulatore. Se si è certi che le impostazioni di firma del codice sono corrette, scegliere "Pulisci tutto" in Xcode, eliminare la directory "build" nel Finder e ricompilare la destinazione di rilascio. Per altre informazioni, consultare https://developer.apple.com/library/ios/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html"