Android 如何为调试和发布模式设置Firebase Crashlytics

Android 如何为调试和发布模式设置Firebase Crashlytics,android,firebase,crashlytics,android-productflavors,Android,Firebase,Crashlytics,Android Productflavors,我想为调试和发布模式设置crashlytics,但在firebase文档中找不到合适的信息 目前,该应用程序在一个项目中,只有一个crashlytics用于调试和发布。我无法使用与前一个相同的软件包创建另一个应用程序。 另一个选择是使用与第一个相同的包创建另一个项目,但由于api键和其他功能,我需要创建一个项目 我有两个想法,但没有解决方案: 一个项目->两个应用程序(使用相同的软件包?->目前无法运行)->两个google-services.json和flavors 一个项目->一个应用->两

我想为调试和发布模式设置crashlytics,但在firebase文档中找不到合适的信息

目前,该应用程序在一个项目中,只有一个crashlytics用于调试和发布。我无法使用与前一个相同的软件包创建另一个应用程序。 另一个选择是使用与第一个相同的包创建另一个项目,但由于api键和其他功能,我需要创建一个项目

我有两个想法,但没有解决方案:

  • 一个项目->两个应用程序(使用相同的软件包?->目前无法运行)->两个google-services.json和flavors
  • 一个项目->一个应用->两个用于调试和发布的crashlytics设置(如何做到?)

  • 有没有人有一些可以帮助解决这个问题的建议

    这两种选择都是可能的。然而,第一个项目将导致两个独立的Firebase项目,这是较少可管理的。最好只使用一个Firebase项目和同一个应用程序

    简言之:

    包标识符应该不同,以便在一个项目中对调试和发布变量进行区分。我们可以通过使用构建类型来区分这一点

    接下来,可以将第二个标识符添加到Firebase项目中。Crashlytics将在应用程序中区分它们


    为了实现这一目标,我们可以采取以下措施

    1.在Firebase控制台中 a。转到项目设置

    b。添加具有以下配置的附加Android应用程序:

    • 应用程序标识符:
      .debug
    • 名称://(任何内容),请确保在结尾处使用类似于
      Debug
      的标记
    c。注册此应用程序

    d。下载
    googleservices.json
    文件,我们将在下一步需要它

    e。转到左侧菜单中的Crashlytics选项卡

    f。为这两个应用程序启用Crashlytics

    • 在第二步按
      Next
    • 忽略第三步,构建代码将启用它
    2.安卓源码 a。将
    googleservices.json
    文件放在项目中(在
    app
    文件夹下)->覆盖旧文件

    b。打开
    app/build.gradle
    文件

    • android
      块中,将显示
      buildTypes
    • 对于
      debug
      生成类型,添加
      applicationIdSuffix.debug'
      (如果文件中不存在调试类型,则添加该类型)
    • 这将导致调试生成类型在调试生成的实际包标识符之后具有
      .debug
    • 发布版本将不受此影响
    c。结果,它应该如下所示:

    android {
        // ...
    
        buildTypes {
            debug {
                applicationIdSuffix '.debug'
            }
            release {
                // ...
            }
        }
    }
    
    3.完成! 发生崩溃,将导致Firebase Crashlytics中相应的应用程序崩溃。在页面的左上角有一个下拉列表,其中两个项目都位于该页面的左上角

    现在,Crashlytics在发送崩溃报告时将自动使用正确的Firebase应用程序。这是可行的,因为
    googleservices.json
    实际上包含这两种构建类型的配置。Crashlytics将根据包标识符使用正确的


    最后注意:不要忘记在Firebase控制台的Crashlytics选项卡上启用Crashlytics(如步骤1f中所述)

    尝试使用不同的程序包名称创建不同的应用程序。调试。并在src/debug文件夹中使用调试应用程序google-services.json。你的应用程序的build.gradle将如下所示--debug{\n applicationIdSuffix.debug“\n debugable true}--我没有足够的时间尝试它。请尝试并告知:)@Slashbin它不起作用,因为我不能在一个android应用程序中有两个程序包名称。但公认的答案是相同的。有了这个额外的标识符,它似乎可以正常工作:)其他firebase产品,如推送通知,这一策略在那里也会起作用吗?是的,其他产品(如推送通知)也可以很好地使用此配置。由于Firebase项目具有相同的服务器密钥,推送对于这两种构建类型都可以正常工作