我正在将Firebase Crashlytics(以及分析)集成到团队的应用程序中。由于各种原因,我们正在手动配置FIROptions
对象并调用-[FIROptions initWithGoogleAppId:GCMSenderID:]
,配置所需的属性,然后从那里调用-[FIRApp configureWithName:options:]
。这非常有效,我可以看到分析工作正常,并且崩溃已上传到我们的Crashlytics仪表板
但是,我无法进入构建阶段以成功上载生成的.dSYM
文件。建议的脚本是将其添加为构建过程的最后一步:
"${PODS_ROOT}/Fabric/run"
该阶段也应该作为输入文件传递给Info.plist
。但是,当我从包中删除GoogleService-Info.plist
时,构建失败并显示以下错误:Could not get GMP_APP_ID in Google Services file from build environment
这对我来说很有意义,因为它仍在寻找我删除的GoogleService-Info.plist
。我编写了自己的Python脚本,试图从我们的数据生成一个临时的.plist文件,该文件当前如下所示:
import subprocess
import tempfile
import plistlib
import pathlib
firebase_app_id: str = "<# OUR FIREBASE APP ID HERE #>"
with tempfile.TemporaryDirectory() as temp_folder, open(pathlib.Path(temp_folder) / "GoogleService-Info.plist", "wb") as temp_plist:
plistlib.dump({"GOOGLE_APP_ID": firebase_app_id}, temp_plist)
subprocess.run([f"{os.environ['PODS_ROOT']}/Fabric/upload-symbols", "--google-service-plist", temp_plist.name, "--build-phase", "--debug"], check=True)
在构建阶段运行此脚本会产生以下错误:Unable to read GoogleService-Info.plist at path /var/folders/4g/_p4pgc5d485gtcn_3dtys4y00000gn/T/tmp7m7r_0zj/GoogleService-Info.plist
我也尝试过生成普通的NamedTemporaryFile
,但这会导致相同的问题。不以构建阶段模式运行脚本,而是手动传递平台和符号文件会导致出现关于GMP_APP_ID
的第一个错误。我如何进行构建阶段以自动将调试符号上传到Crashlytics,而不必在项目中添加GoogleService-Info.plist
?
答案 0 :(得分:0)
我制作了一个可以将dSYM文件上传到Crashlytics的工具,
使用它来解决您的问题:
https://github.com/prsolucoes/fabric-upload-dsym
在“ dist” 文件夹中,您可以根据操作系统找到正确的版本。
使用方法
fabric-upload-dsym --bundleid=[YOUR-APP-BUNDLE] --fabricapikey=[YOUR-FABRIC-API-KEY] --file=[ZIPPED-DSYM-FILE]
用您的信息替换命令,例如:
[YOUR-APP-BUNDLE] = com.prsolucoes.myapp
[YOUR-FABRIC-API-KEY] = 12xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxbf
[ZIPPED-DSYM-FILE] = /tmp/yourapp/dsym.zip
谢谢。