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 关注
- 967 浏览
添加回答
举报