3 回答

TA貢獻1777條經驗 獲得超3個贊
一旦我們切斷了,我們不能運行任何腳本更因為它會嘗試刪除未使用的架構不是現有的切片,因為xcode每次都不會重新嵌入二進制文件。想法是 - 在構建存檔時只刪除i386和x86_64切片,所以我修改了腳本:
echo "Target architectures: $ARCHS"APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORKdoFRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"echo $(lipo -info "$FRAMEWORK_EXECUTABLE_PATH")FRAMEWORK_TMP_PATH="$FRAMEWORK_EXECUTABLE_PATH-tmp"# remove simulator's archs if location is not simulator's directorycase "${TARGET_BUILD_DIR}" in*"iphonesimulator") echo "No need to remove archs" ;;*) if $(lipo "$FRAMEWORK_EXECUTABLE_PATH" -verify_arch "i386") ; then lipo -output "$FRAMEWORK_TMP_PATH" -remove "i386" "$FRAMEWORK_EXECUTABLE_PATH" echo "i386 architecture removed" rm "$FRAMEWORK_EXECUTABLE_PATH" mv "$FRAMEWORK_TMP_PATH" "$FRAMEWORK_EXECUTABLE_PATH" fi if $(lipo "$FRAMEWORK_EXECUTABLE_PATH" -verify_arch "x86_64") ; then lipo -output "$FRAMEWORK_TMP_PATH" -remove "x86_64" "$FRAMEWORK_EXECUTABLE_PATH" echo "x86_64 architecture removed" rm "$FRAMEWORK_EXECUTABLE_PATH" mv "$FRAMEWORK_TMP_PATH" "$FRAMEWORK_EXECUTABLE_PATH" fi ;;esacecho "Completed for executable $FRAMEWORK_EXECUTABLE_PATH"echo $(lipo -info "$FRAMEWORK_EXECUTABLE_PATH")done
如果不是為模擬器運行(這意味著目標文件夾不像“Debug-iphonesimulator”),這個腳本只是從胖二進制文件(如果存在)中刪除i386和x86_64片。
對不起,我不熟悉shell腳本,所以可能有人可以用更優雅的方式編寫它。但它有效)

TA貢獻1853條經驗 獲得超6個贊
如果您使用的是Carthage,那么您可能會遇到此問題,因為該項目是:
缺少
carthage copy-frameworks
構建階段。或者構建階段不包括所有框架(不完整列表)。
此操作將框架過濾為有效體系結構(代碼)列表。
設置復制框架構建階段
在應用程序目標的“構建階段”設置選項卡上,單擊“+”圖標并選擇“新建運行腳本階段”。創建一個運行腳本,在其中指定shell(例如:bin / sh),將以下內容添加到shell下面的腳本區域:
/usr/local/bin/carthage copy-frameworks
并在“輸入文件”下添加要使用的框架的路徑,例如:
$(SRCROOT)/Carthage/Build/iOS/Box.framework $(SRCROOT)/Carthage/Build/iOS/Result.framework $(SRCROOT)/Carthage/Build/iOS/ReactiveCocoa.framework
此腳本解決由通用二進制文件觸發的App Store提交錯誤,并確保在歸檔時復制必要的bitcode相關文件和dSYM。
- 3 回答
- 0 關注
- 1011 瀏覽
添加回答
舉報