在没有GoogleService-Info.plist

时间:2019-06-19 16:12:37

标签: python ios xcode firebase crashlytics

我正在将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

1 个答案:

答案 0 :(得分:0)

我制作了一个可以将dSYM文件上传到Crashlytics的工具,

使用它来解决您的问题:
https://github.com/prsolucoes/fabric-upload-dsym

“ dist” 文件夹中,您可以根据操作系统找到正确的版本。

  • Windows
  • macOS
  • Linux

使用方法

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

谢谢。