2016-02-06 8 views
9

Ho avuto i seguenti errori durante il tentativo di caricare la mia app su App Store ERRORE ITMS-90087, ERRORE ITMS-90209, & ERRORE ITMS-90125 come delineato in questo domanda Submit to App Store issues: Unsupported Architecture x86 e utilizzato lo script indicato di seguito per cercare di risolvere il problema:Errori durante la creazione di Xcode Project dopo l'aggiunta in Run Script errore fatale: lipo: file di input

APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}" 

# This script loops through the frameworks embedded in the application and 
# removes unused architectures. 
find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK 
do 
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable) 
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME" 
echo "Executable is $FRAMEWORK_EXECUTABLE_PATH" 

EXTRACTED_ARCHS=() 

for ARCH in $ARCHS 
do 
echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME" 
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH" 
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH") 
done 

echo "Merging extracted architectures: ${ARCHS}" 
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}" 
rm "${EXTRACTED_ARCHS[@]}" 

echo "Replacing original executable with thinned version" 
rm "$FRAMEWORK_EXECUTABLE_PATH" 
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH" 

done 

Ora sto ricevendo un sacco di errori che cercano di compilare il mio codice in Xcode.

Executable is /Users/[Username]/Library/Developer/Xcode/DerivedData/[AppName]-egnqksafjoylrcaxerbjrknmxdgl/Build/Products/Debug-iphoneos/[AppName].app/Frameworks/Bolts.framework/Bolts 
Extracting arm64 from Bolts 

fatal error: lipo: input file (/Users/[Username]/Library/Developer/Xcode/DerivedData/[AppName]-egnqksafjoylrcaxerbjrknmxdgl/Build/Products/Debug-iphoneos/[AppName].app/Frameworks/Bolts.framework/Bolts) must be a fat file when the -extract option is specified 

Merging extracted architectures: arm64 
fatal error: lipo: can't open input file: /Users/[Username]/Library/Developer/Xcode/DerivedData/[AppName]-egnqksafjoylrcaxerbjrknmxdgl/Build/Products/Debug-iphoneos/[AppName].app/Frameworks/Bolts.framework/Bolts-arm64 (No such file or directory) 

rm: /Users/[Username]/Library/Developer/Xcode/DerivedData/[AppName]-egnqksafjoylrcaxerbjrknmxdgl/Build/Products/Debug-iphoneos/[AppName].app/Frameworks/Bolts.framework/Bolts-arm64: No such file or directory 

Replacing original executable with thinned version 
mv: rename /Users/[Username]/Library/Developer/Xcode/DerivedData/[AppName]-egnqksafjoylrcaxerbjrknmxdgl/Build/Products/Debug-iphoneos/[AppName].app/Frameworks/Bolts.framework/Bolts-merged to /Users/[Username]/Library/Developer/Xcode/DerivedData/[AppName]-egnqksafjoylrcaxerbjrknmxdgl/Build/Products/Debug-iphoneos/[AppName].app/Frameworks/Bolts.framework/Bolts: No such file or directory 

Qualche idea su come risolvere?

risposta

9

Bene, sembra che il framework Bolts non sia un fat binary (cioè non contiene più binari di architetture), quindi l'estrazione e l'unione falliscono. Immagino che la soluzione più semplice sia quella di eseguire lo script solo per framework specifici forniti con un file binario per x86_64. Puoi identificare i binari grassi usando il comando 'file'.

+6

Dopo aver letto questo, mi sono reso conto dal momento che solo un framework stava causando il problema di caricamento su App Store, quindi questo dovrebbe essere solo il framework su cui ho bisogno di eseguire lo script. Così ho cambiato la riga nello script find "$ APP_PATH" -name '* .framework' -type d | mentre leggi -r FRAMEWORK per fare riferimento solo al framework che causa l'errore, trova "$ APP_PATH" -name '[frameworkname] .framework' -type d | while read -r FRAMEWORK – SamoanProgrammer

+0

Risolto il problema anche con l'esecuzione dello script solo per framework specifico per il quale si ottiene l'errore x86_64. – AtWork

+0

Per me, questo script funzionerà al primo tentativo. Successivamente, ricevo degli errori che indicano che sta tentando di rimuovere le sezioni per architetture che non sono presenti. Posso farlo funzionare di nuovo se e solo se uso il comando Clean in Xcode (Shift + Command + K). Quando faccio clic su Build o Run, funziona di nuovo. Qualche idea su come aggirare questo problema? –

1

Che ne dici di controllare l'opzione "Esegui script solo durante l'installazione"?

+0

Ha funzionato per me, ma temo qualsiasi problema durante la distribuzione dell'app nell'app store. – iNasir

4

Ho modificato lo script per provare ad identificare se il framework è FAT. Se lo è, quindi lo salta.

Problemi correlati