如何解决Crashlytics 不适用于 Swift Package Manager iOS 14.6
使用 XCode10.5.1,iOS 14.6,Swift5.4.2,
使用 Swift Package Manger (SPM) 将 Firebase 依赖项添加到我的项目中 - 我尝试在我的 iOS 设备上使用 Google Crashlytics。
我在几篇文章(例如 this one)中看到,为了让 Crashlytics 通过 SPM 工作,您需要在 Xcode 中添加一个 Build 运行脚本,如下所示:
${BUILD_DIR%Build/*}SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run
现在因为我确实有两个不同的配置定义(DEV 和 PROD),所以我需要让这个运行脚本知道这一点。
我的脚本如下所示:
if ["${CONFIGURATION}" == "Release"] || ["${CONFIGURATION}" == "Debug"]; then
${BUILD_DIR%Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run
elif ["${CONFIGURATION}" == "ReleaseDev"] || ["${CONFIGURATION}" == "DebugDev"]; then
${BUILD_DIR%Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run -gsp ${PROJECT_DIR}/iOS/SupportFiles/GoogleService-InfoDev.plist
fi
但是 Crashlytics 仍然不起作用!
问题 NR1:Crashlytics 与 SPM 一起使用的运行脚本是什么样的?
问题 NR2:特别是,我如何改进我的运行脚本以明确区分 DEV 和 PROD 环境。 (到目前为止,我需要使用 CONFIGURATION
来解决这个问题)。
解决方法
这是通过 Swift 包管理器(即不通过 Cocoapod)使用时,Xcode 中 Crashlytics 的一个工作示例:
我找到了解决方案 - 运行脚本的语法错误。
正确的是:
echo "Configuration = $CONFIGURATION";
if [ $CONFIGURATION == 'Debug' ] || [ $CONFIGURATION == 'Release' ]; then
echo "PROD";
${BUILD_DIR%Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run -gsp ${PROJECT_DIR}/iOS/SupportFiles/GoogleService-Info.plist;
elif [ $CONFIGURATION == 'DebugDev' ] || [ $CONFIGURATION == 'ReleaseDev' ]; then
echo "DEV";
${BUILD_DIR%Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run -gsp ${PROJECT_DIR}/iOS/SupportFiles/GoogleService-InfoDev.plist;
fi
当然,Debug
、Release
、DebugDev
和 ReleaseDev
取决于您自己在 Xcode 中对配置的命名。
这样,两个配置 DEV 和 PROD 都可以与 Google Crashlytics 配合使用。该脚本可确保在发生崩溃时将必要的 dSYM 文件发送给 Google。
要验证脚本是否已执行,您可以按照 Xcode 中 report Navigator
下的回显打印(即查看屏幕截图)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。