使用CocoaPods集成Google Cast后,如何运行strip_unused_archs.sh?
解决CocoaPods集成Google Cast后无法运行strip_unused_archs.sh的问题
别担心,我之前也踩过这个坑!用CocoaPods集成Google Cast时,官方脚本的位置和手动集成差异很大,加上Pod目录结构偶尔会变,很容易找不到它。下面给你两种靠谱的解决思路:
方法一:定位Pods中自带的官方脚本
CocoaPods安装的Google Cast SDK其实已经包含了这个脚本,只是路径藏得比较深:
- 在Xcode项目导航栏里展开
Pods文件夹 - 找到
GoogleCast(或对应子库,比如GoogleCastCore,取决于你集成的SDK版本)目录 - 展开里面的
Scripts或Resources子文件夹,就能找到strip_unused_archs.sh
找到后,按以下步骤配置Run Phase:
- 选中你的App Target,进入
Build Phases标签 - 点击左上角的
+号,选择New Run Script Phase - 关键操作:把这个Run Script拖到
Embed Frameworks步骤的后面(必须先完成框架嵌入,再执行架构剥离) - 在脚本输入框里填写脚本的绝对路径,示例:
如果路径不对,根据你实际找到的位置调整即可。"${PODS_ROOT}/GoogleCast/Scripts/strip_unused_archs.sh"
方法二:手动创建脚本(更稳妥,避免Pod更新后路径变化)
如果找不到自带的脚本,或者怕Pod更新后路径变更,直接自己写一个更靠谱:
- 在你的项目根目录新建
Scripts文件夹,创建strip_unused_archs.sh文件 - 把官方脚本内容粘贴进去:
#!/bin/bash APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}" # 遍历App包内的所有framework,移除无用架构 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 "处理框架:$FRAMEWORK_EXECUTABLE_PATH" EXTRACTED_ARCHS=() for ARCH in $ARCHS do echo "提取架构:$ARCH" lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH" EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH") done echo "合并架构:${ARCHS}" lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}" rm "${EXTRACTED_ARCHS[@]}" echo "替换原可执行文件" rm "$FRAMEWORK_EXECUTABLE_PATH" mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH" done - 打开终端,给脚本添加执行权限:
chmod +x 你的项目路径/Scripts/strip_unused_archs.sh - 回到Xcode的Build Phases,添加Run Script Phase(同样要放在Embed Frameworks后面),然后填写脚本路径:
"${SRCROOT}/Scripts/strip_unused_archs.sh"
额外注意事项
- 仅在Release模式运行:如果不想Debug编译时浪费时间,可以在Run Script里加条件判断,只在Release模式执行:
if [ "${CONFIGURATION}" = "Release" ]; then # 这里放脚本内容或脚本路径 fi - 检查Shell设置:确保Run Phase的Shell设置为
/bin/bash(默认就是,但可以在Run Phase的下拉菜单里确认) - 验证生效情况:编译Release版本后,找到生成的App包,用
lipo -info命令检查框架架构,示例:
输出应该只有你需要的架构(比如lipo -info ~/Library/Developer/Xcode/DerivedData/你的项目/Build/Products/Release-iphoneos/你的App.app/Frameworks/GoogleCast.framework/GoogleCastarm64),没有模拟器的i386/x86_64。
内容的提问来源于stack exchange,提问作者Fayza Nawaz
相关产品推荐
相关产品推荐

