无法从https://settings.crashlytics.com/spi/v2/platforms/android/apps/检索设置

时间:2018-03-09 10:58:16

标签: android firebase crashlytics google-fabric

我正在尝试新的Firebase / Crashlytics设置,似乎遇到了一个奇怪的问题。

  • 我有一个Android代码库,有多种产品口味,每种口味都是一个单独的应用程序。
  • 所有这些应用都在Fabric中注册(过去)
  • 所有这些应用都已添加到Firebase中
  • 两者之间的所有链接似乎都很好(从Fabric端以及Firebase端,它表示它已全部链接起来)
  • 我从清单文件中删除了Fabric API密钥,并将相应的插件/依赖项等添加到两个gradle文件中

我尝试根据Firebase说明发送测试崩溃报告。

  1. 我对其中一种产品口味非常好,所以我认为一切都很好。 然而,
  2. 其他产品风格不会发送崩溃报告,我在日志中收到此错误:
  3.   

    E / Fabric:无法从https://settings.crashlytics.com/spi/v2/platforms/android/apps/package名称/设置

    中检索设置

10 个答案:

答案 0 :(得分:21)

好吧,我认为我解决了这个问题,但解决方案似乎不应该是它的工作方式(至少我不认为)。

  • 转到Firebase控制台>项目设置>帐户关联>面料>选择应用并取消链接
  • Confim in Fabric>应用> Firebase - 它是未链接的
  • 转到Firebase>项目> Crashlytics(选择你想要的应用程序),你现在应该得到一个再次链接你的应用程序的对话框
  • 选择链接为新的Crashlytics(不是现有的)并按照指示
  • 之后一切都应该可以正常工作

所以基本上,从Fabric> Firebase屏幕 - 没有可见的链接,从Firebase>帐户链接> Fabric屏幕 - 也没有可见的链接。所以没有链接,但您的崩溃将在Firebase中显示。

答案 1 :(得分:7)

这比我弄清楚如何正确迁移需要花费很多时间。实际上你有两种方法可以做到:

  1. 执行干净迁移,无需保留Fabric Crashlytics的崩溃历史记录

    Firebase Crashlytics developer guide中描述了这种方式。您必须在此处从应用清单文件中删除com.crashlytics.ApiKey meta-data

    通过这种方式,不得将Fabric与Firebase链接,否则在Firebase或Fabric控制台中都不会显示崩溃。

  2. 使用Firebase链接Fabric并保留崩溃历史记录

    这种方式可能没有记录。 至关重要的是将com.crashlytics.ApiKey meta-data保留在您的清单中。然后,您需要将Fabric Crashlytics与Firebase相关联。您还可以启用将事件(以前称为Answers)转发到Firebase Analytics。这两个操作都显示在Fabric控制台中,在侧边菜单中查找Firebase。

    所有新崩溃报告都显示在Fabric控制台和Firebase控制台中。此链接还会将所有Fabric崩溃报告历史记录复制到Firebase。

    我认为此处不需要firebase-core工件,但我添加了它。我还使用了Fabric事件,因此在firebase-core Firebase Analytics中出现了额外的应用使用事件。

答案 2 :(得分:4)

转到项目设置并为您的Android应用添加SHA-1密钥。 之后,将google-service.json重新下载到您的来源。 这导致此错误消失

E/Fabric: Failed to retrieve settings from https://settings.crashlytics.com/spi/v2/platforms/android/apps/package name/settings

经过相当长的延迟后,您会在Firebase控制台中看到崩溃。

顺便说一句,这并不能帮助我使用在一个Google帐户下注册的应用,之后又转移到另一个帐户。为Firebase团队对此问题的回复进行了调整。

答案 3 :(得分:4)

我遇到了同样的问题,花了很多时间才弄清楚。 我通过转到FireBase Console > [my project] > Crashlytics解决了我的问题。在下拉菜单中,您需要选择您的应用。之后,将显示一个包含三个步骤的向导。 first step of setup

单击任何适合您的选项,我选择了第一个,因为它是一个新应用。之后,出现第二步。

second step of setup

现在是重要的部分。 确保您单击链接以转到文档!将打开一个新的浏览器标签。如果您已经像我一样完成了项目设置,则可以将其关闭。之后,您将自动转到第三个选项。大多数情况下,我从未单击链接,因为我已经完成了安装。一旦我做完,我就再也没有注意到第三个选项可用,因为我在另一个选项卡上。结果,我再也看不到第三个选项。

third step of setup 此时,您应该打开您的应用程序,它将自动连接到Firebase,没有任何问题。

编辑:尝试添加其他一些构建变体后,我发现在检索设置时仍然出现一些错误。我花了很多时间弄清楚如何解决它。我能想到的最好的事情是:

  1. 切换到构建变体
  2. 在gradle标签上执行一个汇编[YOUR_BUILD_VARIANT]。
  3. build>重建项目
  4. 从设备上删除旧应用(如果存在)。
  5. 安装应用程序并打开它。 有时这也行不通,我再次尝试了相同的步骤一到两次,然后突然开始起作用...

它还帮助我启用了架构和崩溃解析程序的其他调试日志记录。

adb shell setprop log.tag.Fabric DEBUG
adb shell setprop log.tag.CrashlyticsCore DEBUG

答案 4 :(得分:2)

在我的情况下,meta-data:io.fabric.ApiKey的位置错误。

  • app / src / main / AndroidManifest.xml

之前

<application
...>
    <activity
        ...>
        <meta-data
                android:name="io.fabric.ApiKey"
                android:value="xxxxxx" />
    </activity>
</application>

之后

<application
...>
    <activity
        ...>
    </activity>
    <meta-data
            android:name="io.fabric.ApiKey"
            android:value="xxxxxx" />
</application>

我希望这会有所帮助。

答案 5 :(得分:1)

我发现在转换为FirebaseCrashlytics之后,我必须在Firebase中注销并重新注册现有的应用程序。

请确保在运行应用程序之前先进行以下设置,以进行FirebaseCrashlytics的初始注册(控制台等待初始注册),否则它将无法注册: enter image description here

这些都不是显而易见的!

答案 6 :(得分:1)

升级到Firebase Crashlytics SDK AndroidiOS

您现在可以使用新的官方Firebase Crashlytics SDK在您的应用中设置Crashlytics,该SDK提供了改进的API,这些API与其他Firebase产品更加一致并且使用起来更加直观。本指南介绍了如何从Fabric Crashlytics SDK升级到新的SDK。它描述了新API附带的更改,更改的原因,以及在需要时如何更新代码。


Android

前提条件:将您的应用迁移到AndroidX

1。添加Firebase配置文件

  1. 打开您的Project Settings
  2. 点击下载google-services.json以获取您的Firebase Android配置文件。
  3. 将配置文件移动到应用程序的模块(应用程序级)目录中。

2。切换依赖项

(项目级别)/build.gradle

不推荐自:

buildscript {
  // ...

   repositories {
       // ...
       // Remove Fabric's Maven repository.
       maven { url 'https://maven.fabric.io/public' }
       // Add Google's Maven repository (if it's not there already).
       google()
   }

    dependencies {
        // ..

        // Add the Google Services Gradle plugin (if it's not there already).
        classpath 'com.google.gms:google-services:4.3.3'
       // Remove the Fabric Gradle plugin.
       classpath 'io.fabric.tools:gradle:1.31.2'
    }
}

收件人:

buildscript {
  // ...

   repositories {
       // ...

       // Add Google's Maven repository (if it's not there already).
       google()
   }

    dependencies {
        // ..

        // Add the Google Services Gradle plugin (if it's not there already).
        classpath 'com.google.gms:google-services:4.3.3'

        // Add the Firebase Crashlytics Gradle plugin.
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.1.0'
    }
}

(应用程序级)/build.gradle

最后,添加Firebase Crashlytics SDK。在您的应用程序级build.gradle中,将旧的Fabric Crashlytics SDK替换为新的Firebase Crashlytics SDK。为了获得Firebase Crashlytics的最佳体验,我们还建议将适用于Google Analytics(分析)的Firebase SDK添加到您的应用程序中(请确保添加版本17.2.3或更高版本,以获取无崩溃的实时用户和痕迹)。

不推荐自:

apply plugin: 'com.android.application'

// Apply the Google Services plugin (if it's not there already).
apply plugin: 'com.google.gms.google-services'
// Remove the Fabric plugin.
apply plugin: 'io.fabric'
dependencies {
    // Remove the Fabric Crashlytics SDK.
    implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
    // Recommended: Add the Google Analytics SDK.
    implementation 'com.google.firebase:firebase-analytics:17.4.1'
}

收件人:

apply plugin: 'com.android.application'

// Apply the Google Services plugin (if it's not there already).
apply plugin: 'com.google.gms.google-services'


// Add the Firebase Crashlytics plugin.
apply plugin: 'com.google.firebase.crashlytics'

dependencies {
    // Add the Firebase Crashlytics SDK.
    implementation 'com.google.firebase:firebase-crashlytics:17.0.0'

    // Recommended: Add the Google Analytics SDK.
    implementation 'com.google.firebase:firebase-analytics:17.4.1'
}

更新您的代码

  • Crashlytics.log现在是一个实例方法

从结构:Crashlytics.log("my message");

至Firebase Crashlytics SDK:

FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();
// To log a message to a crash report, use the following syntax:
crashlytics.log("E/TAG: my message");
  • 崩溃方法已删除

从结构:Crashlytics.getInstance().crash()

至Firebase Crashlytics SDK:

throw RuntimeException("Test Crash")

现在,FirebaseCrashlytics使用以下命令自动启动 新的Firebase Crashlytics SDK中定义的ContentProvider。去掉 对Fabric.with()的调用(如果存在)。如果您已经在使用Firebase Crashlytics,您的应用可能已经在使用自动启动功能,并且可能 不包含对Fabric.with()的调用。

GL

答案 7 :(得分:0)

我将这些答案发布给那些希望它能够正常运行而又无需从Firebase Crashlytics断开其应用程序的人。

要实现这一目标,他们必须遵循以下条件,

AndroidManifest中以metadata的形式添加Fabric API密钥。

<meta-data
          android:name="io.fabric.ApiKey"
          android:value="fabric_api_key"
/>

初始化Fabric

Fabric.with(this, new Crashlytics());

完成这两个步骤后,Crashlytics在不断开应用程序链接的情况下再次开始工作。

答案 8 :(得分:0)

我在新的Firebase SDK升级到17.0.0+版本中遇到了这个问题。

问题是我们使用多种口味时引起的。如果您使用的是单独的风味-调试并将其也链接到Firebase,而不是将google-services.json文件添加到应用根目录,则必须将风味特定的json文件添加到该风味的相应文件夹中-应用-> src->(风味文件夹)。

这将确保生成的代码具有适用于该风味的正确客户端ID。

这是一个愚蠢的错误,但是人们有机会错过它。

答案 9 :(得分:0)

首先,您必须在控制台中的项目的“ Crashlytics”选项卡中启用“ Crashlytics”(在添加crashlytics的所有依赖项之前或之后),或按照本文档中介绍的步骤进行操作 链接:
https://firebase.google.com/docs/crashlytics/get-started?authuser=0&platform=android