3 回答

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個(gè)贊
一旦我們切斷了,我們不能運(yùn)行任何腳本更因?yàn)樗鼤?huì)嘗試刪除未使用的架構(gòu)不是現(xiàn)有的切片,因?yàn)閤code每次都不會(huì)重新嵌入二進(jìn)制文件。想法是 - 在構(gòu)建存檔時(shí)只刪除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
如果不是為模擬器運(yùn)行(這意味著目標(biāo)文件夾不像“Debug-iphonesimulator”),這個(gè)腳本只是從胖二進(jìn)制文件(如果存在)中刪除i386和x86_64片。
對(duì)不起,我不熟悉shell腳本,所以可能有人可以用更優(yōu)雅的方式編寫它。但它有效)

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