2016-02-06 7 views
9

私のアプリをApp Storeにアップロードしようとしたときに、次のエラーが発生しました:エラーITMS-90087、エラーITMS-90209、& ERROR ITMS-この質問Submit to App Store issues: Unsupported Architecture x86で概説し、問題を試してみて、修正するために、以下に示すスクリプトを使用:実行スクリプトで追加した後にXcodeプロジェクトをビルドする際にエラーが発生しました:致命的なエラー:lipo:入力ファイル

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 

は、今私は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 

修正方法はありますか?

答えて

9

まあ、Boltsフレームワークは太ったバイナリ(つまり、複数のアーキテクチャのバイナリを含んでいない)なので、抽出とマージが失敗するようです。私は、最も簡単な解決策は、x86_64アーチのバイナリに付属している特定のフレームワークに対してのみスクリプトを実行することだと思います。 fatバイナリは 'file'コマンドを使って識別できます。

+6

これを読んだあとで、1つのフレームワークだけがApp Storeにアップロードの問題を引き起こしていたので、スクリプトを実行するために必要なフレームワークでなければなりません。だから私はスクリプト内の行を "$ APP_PATH" -name '* .framework' -type d | -r FRAMEWORKは、エラーを引き起こす1つのフレームワーク、すなわち "$ APP_PATH" -name '[frameworkname] .framework' -type d | read-FRAMEWORK – SamoanProgrammer

+0

x86_64エラーが発生した特定のフレームワークに対してのみスクリプトを実行することで、私の問題も解決しました。 – AtWork

+0

私の場合、上記のスクリプトは最初の試行で動作します。その後、そこにないアーキテクチャのスライスを削除しようとしているというエラーが表示されます。 Xcode(Shift + Command + K)でCleanコマンドを使用する場合にのみ、私はそれを再び有効にすることができます。 [ビルド]または[実行]をクリックすると、再び動作します。どのようにこの問題を回避するためのアイデア? –

1

「インストール時にのみスクリプトを実行する」オプションはどうでしょうか?

+0

それは私のために働いたが、App Storeにアプリをデプロイする際に何か問題があるのを恐れている。 – iNasir

4

スクリプトを編集して、フレームワークがFATであるかどうかを確認しました。そうであれば、スキップします。

関連する問題