如何将Crashlytics与Android Instant Apps集成?

19
3个回答

21

是的,Crashlytics可以与Android Instant Apps一起使用,事实上,它目前是推荐的崩溃报告解决方案,因为它经过测试可以正常工作。

设置过程如下:

第1步

在您的基础功能模块中打开build.gradle文件,并按照公共文档站点上的步骤正常配置Crashlytics。

第2步

在您的基础功能模块build.gradle文件的顶级处添加以下Crashlytics标志:

...
android {
    ...
}
crashlytics { instantAppSupport true }
...

第三步(可选但建议)

根据文档,如果您的基础库项目中还没有Instant App库依赖项,请在build.gradle文件中添加它:

compile 'com.google.android.instantapps:instantapps:1.1.0'

注意:如果您尚未添加较新的maven.google.com仓库到您的Gradle文件中,请添加该依赖项才能使用此依赖(详见此处)。

在设置完Crashlytics后,在您的代码中设置一个布尔值来记录当前运行是否为即时应用程序:

Crashlytics.setBool("InstantApp", InstantApps.isInstantApp(context));

2017年8月更新 - 新的问题导致支持中断

最近的工具更新似乎引起了一个新问题,当使用Crashlytics和Instant Apps时会记录以下错误:new issue

此应用程序依赖于Crashlytics。请在https://fabric.io/sign_up注册并安装Android构建工具。请求团队成员邀请您加入此应用程序所在的组织。

在问题修复之前,请尝试以下临时解决方法:构建后,找到文件com_crashlytics_build_id.xml,打开它,复制包含您的Fabric密钥的<string>并将其粘贴到功能模块的正常strings.xml文件中。然后重新构建和运行。

2017年11月15日更新 - 问题已解决

上述问题现已在Fabric gradle插件v1.24.5中得到解决。因此您的gradle文件应为:

classpath 'io.fabric.tools:gradle:1.+'

您不需要做任何事情,只需要同步您的构建以获取具有修复程序的更新插件。


要使用compile 'com.google.android.instantapps:instantapps:1.0.0',不要忘记将maven { url 'https://maven.google.com' }添加到存储库中。 - LorenzoValentijn
4
按照所有步骤后,我的即时应用程序在启动时崩溃,并显示以下错误信息:此应用程序依赖于Crashlytics。请在https://fabric.io/sign_up注册并安装Android构建工具,并要求团队成员邀请您加入此应用程序的组织。 - Stepango
3
最近版本的Instant Apps / Studio似乎存在一个bug,会从生成的APK中剥离生成的Crashlytics密钥。在修复之前,请尝试以下的解决方法:构建完成后,找到文件"com_crashlytics_build_id.xml",打开它,将其中的<string />复制并粘贴到你的功能模块的strings.xml文件中。重新构建并运行。 - AdamK
1
字符串复制是可以工作的(至少没有编译错误),但每当清理项目时,它总是抱怨重复资源 :( - Elye
1
FYI,问题现在应该已经解决了,我也更新了答案。 - AdamK
显示剩余3条评论

2
除了已接受的答案之外,我还需要在应用程序(apk)模块的build.gradle文件中添加以下行才能使其运行。
repositories {
    maven { url 'https://maven.fabric.io/public' }
}

0

我刚刚测试了1.24.5版本,一切正常。

我能够像这样设置我的项目:

  1. 在基础模块中:https://fabric.io/kits/android/crashlytics/install
  2. 如何将Crashlytics与Android Instant Apps集成?
    • 添加到base/build.gradle:
      • crashlytics { instantAppSupport true }
      • compile 'com.google.android.instantapps:instantapps:1.1.0' (*1.0.0也可以)
    • 另外还要添加到基础模块的Application类中:
      • Crashlytics.setBool("InstantApp", InstantApps.isInstantApp(context));

我的测试即时应用程序已构建完成,我触发了一个崩溃,我的仪表板记录了它。

如果还有问题,请在Google问题跟踪器上报告,他们会重新打开以进行检查。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接