使用Carthage迁移FirebaseCrashlytics时缺失run/upload_symbols脚本求助
解决Carthage下FirebaseCrashlytics缺失run/upload-symbols脚本的问题
我之前用Carthage迁移FirebaseCrashlytics的时候也踩过这个坑!原因很简单:Carthage默认只会把.framework文件拉取到项目依赖目录里,而Firebase的这两个关键脚本是和framework放在同级目录的,不会被自动导入到项目中。给你几个实测有效的解决方案:
方案一:手动拷贝脚本(快速解决)
- 找到Carthage下载的FirebaseCrashlytics资源包(一般在
Carthage/Build/iOS目录下,或者你手动下载的对应版本压缩包) - 解压后,把根目录下的
run和upload-symbols脚本拷贝到你的项目目录里(建议新建一个Scripts文件夹统一存放,避免杂乱) - 在Xcode的Build Phases中配置Run Script时,直接引用拷贝后的脚本路径,示例:
上传符号的脚本同理,记得同步配置好"${PROJECT_DIR}/Scripts/run"GoogleService-Info.plist的路径参数。
方案二:自定义Carthage构建脚本(自动同步)
如果不想每次更新依赖都手动拷贝,可以写个简单脚本自动同步:
- 在项目根目录创建
carthage-build.sh文件 - 写入以下内容,构建完成后自动复制脚本到指定目录:
#!/bin/bash carthage update "$@" # 复制run和upload-symbols到项目Scripts目录 cp -r Carthage/Build/iOS/FirebaseCrashlytics.framework/../{run,upload-symbols} "${PROJECT_DIR}/Scripts/" - 给脚本添加执行权限:
chmod +x carthage-build.sh - 以后用
./carthage-build.sh代替原生的carthage update/carthage bootstrap命令,就能自动同步脚本了。
方案三:使用XCFramework格式依赖(推荐)
如果你使用的是较新版本的Firebase和Carthage,试试切换到XCFramework格式:
- 执行构建命令:
carthage update FirebaseCrashlytics --use-xcframeworks - 此时你会在
Carthage/Build/FirebaseCrashlytics.xcframework的同级目录找到run和upload-symbols脚本 - 在Xcode的Build Phases里直接引用这个路径即可,示例:
这个方法最省心,XCFramework的结构会把脚本和框架放在同一层级,Carthage会完整拉取整个目录。"${PROJECT_DIR}/Carthage/Build/run"
另外提个小细节:如果配置后脚本提示权限问题,可以在Run Script的开头加一句chmod +x "${PROJECT_DIR}/Scripts/run"来确保脚本可执行。
内容的提问来源于stack exchange,提问作者drasick
相关产品推荐
相关产品推荐

