无法从 https://settings.crashlytics.com/spi/v2/platforms/android/apps/ 检索设置
Posted
技术标签:
【中文标题】无法从 https://settings.crashlytics.com/spi/v2/platforms/android/apps/ 检索设置【英文标题】:Failed to retrieve settings from https://settings.crashlytics.com/spi/v2/platforms/android/apps/ 【发布时间】:2018-08-17 22:25:20 【问题描述】:我正在尝试新的 Firebase/Crashlytics 设置,但似乎遇到了一个奇怪的问题。
我有一个包含多种产品风格的 android 代码库,每种风格都是一个单独的应用程序。 所有这些应用都在 Fabric 中注册(过去) 所有这些应用都添加到 Firebase 中 两者之间的所有链接似乎都正常(从 Fabric 方面以及从 Firebase 方面来看,它都表示已全部链接) 我从清单文件中删除了 Fabric API 密钥,并将适当的插件/依赖项等添加到两个 gradle 文件中我尝试按照 Firebase 说明发送测试崩溃报告。
-
我收到的其中一种产品口味非常好,所以我认为一切都很好。
然而,
其他产品风格不发送崩溃报告,我在日志中收到此错误:
E/Fabric:无法从 https://settings.crashlytics.com/spi/v2/platforms/android/apps/package 名称/设置中检索设置
【问题讨论】:
- 我遇到了同样的问题,原因是我没有连接到互联网。 嗨!当您更改为不同的口味时,您可以运行 ./gradlew assemble --refresh-dependencies 吗?让我知道这是否会导致崩溃上传。 :) 您好托德,谢谢您的建议。它似乎没有帮助。然而,我发现口味之间有一个区别。所有不向 Firebase 发送崩溃的条目在 Firebase 控制台中的 settings/accountlinking/fabric 下都有一个条目,但是,工作正常的条目没有链接条目,即使它显示为已链接Fabric。这让我相信这是 Firebase/Fabric 团队的事情。 我没有帐户链接,但是有一个集成选项卡,但不包含结构。 ps 我有所有者权限 【参考方案1】:好的,我想我解决了问题,但解决方案似乎不是它应该工作的方式(至少我不这么认为)。
转到 Firebase 控制台 > 项目设置 > 帐户关联 > Fabric > 选择应用并取消关联 确认 Fabric > App > Firebase - 已取消链接 转到 Firebase > 项目 > Crashlytics(选择您想要的应用程序),您现在应该会看到一个对话框以再次链接您的应用程序 选择链接为新的 Crashlytics(不是现有的)并按照说明进行操作 之后一切正常所以基本上,从 Fabric>Firebase 屏幕 - 没有可见的链接,从 Firebase>Account Linking>Fabric 屏幕 - 也没有可见的链接。所以没有链接,但您的崩溃将在 Firebase 中可见。
【讨论】:
我也有同样的问题。具有两种风味的应用程序。所以最后在 Firebase 我有 6 个应用程序。现在只有两个将数据跟踪到 Firebase Crashlytics。不幸的是,我无法跟随你的灵魂。在 Firebase 控制台 > 项目设置 > 帐户链接 > 我看不到 Fabric 选项。同样在 Fabric 中,我所有的应用程序都没有连接到 Firebase。此外,当我尝试连接它们时,Fabric 说有些已经连接。这让我发疯了......Confim in Fabric > App > Firebase - that it is unlinked
对我来说没有意义,但在做了所有其他事情之后它就起作用了。可惜这是最好的解决方案。
你帮我解决了一个长期头痛的问题。做得好。仅供参考,您可能会更新 firebaseconsole->project settings -> 在任何地方都没有帐户链接选项。幸运的是 Fabric-linked-apps->linked Apps Manage - 在 firebase 中将其打开到我无法找到的页面。但这成功了。他们让做这么简单的事情变得非常困难。 ;(
链接/取消链接对我的方案没有意义,因为 Fabric 帐户已被删除。从 Manifest 中删除 io.fabric.ApiKey 对我有用。
对我来说,我收到“无法检索设置”错误的原因是我没有在仪表板上初始化 Firebase。我模拟了我的第一次崩溃,它运行良好。【参考方案2】:
这花费了我很多时间,而不是弄清楚如何正确迁移。其实你有两种方法可以做到这一点:
执行干净迁移而不保留 Fabric Crashlytics 的崩溃历史记录
这种方式在Firebase Crashlytics developer guide 中有描述。您必须在此处从应用清单文件中删除 com.crashlytics.ApiKey
meta-data
。
通过这种方式,您不得将 Fabric 与 Firebase 关联,否则 Firebase 或 Fabric 控制台中不会显示崩溃。
将 Fabric 与 Firebase 关联并保留崩溃历史记录
这种方式可能没有记录在案。 Crucial 可将com.crashlytics.ApiKey
meta-data
保留在您的清单中。然后,您需要将 Fabric Crashlytics 与 Firebase 相关联。您还可以启用将事件(以前称为 Answers)转发到 Firebase Analytics。这两个操作都显示在 Fabric 控制台中,请在侧边菜单中查找 Firebase。
所有新的崩溃报告都会同时显示在 Fabric 控制台和 Firebase 控制台中。此链接还安排将所有 Fabric 崩溃报告历史记录复制到 Firebase。
我认为firebase-core
artifact 在这里没有必要,但我添加了它。我也在使用 Fabric Events,因此在 Firebase Analytics 中出现了 firebase-core
的其他应用使用事件。
【讨论】:
我们是否需要以第二种方式使用 Fabric 初始化 Crashlytics? (Fabric.with(this, Crashlytics())) 是的。我在我的应用程序中使用第二种方式:Fabric.with(this, Crashlytics.Builder().core(CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build()).build())
。这会初始化 crashlytics 并为调试构建禁用它。【参考方案3】:
我遇到了同样的问题,我花了很多时间才弄清楚。
我通过转到FireBase Console > [my project] > Crashlytics
解决了我的问题。在下拉列表中,您需要选择您的应用程序。之后,将显示一个包含三个步骤的向导。
点击任何适合您的选项,我选择了第一个,因为它是一个新应用程序。之后出现第二步。
现在重要的部分来了。 确保单击链接以转到文档!将打开一个新的浏览器选项卡。如果你已经像我一样完成了项目设置,你可以关闭它。之后,您将自动转到第三个选项。大多数时候我从不点击链接,因为我已经完成了安装。一旦我这样做了,我就再也没有注意到第三个选项可用,因为我在另一个选项卡上。结果我再也没有看到第三个选项。
此时您应该打开您的应用程序,它会自动连接到 Firebase,没有任何问题。
编辑:在我尝试添加一些其他构建变体后,我注意到在检索设置时我仍然遇到了一些错误。我花了很多时间来弄清楚如何解决它。我能想到的最好的事情是:
-
切换到构建变体
在 gradle 选项卡上执行 assemble[YOUR_BUILD_VARIANT]。
构建 > 重建项目
从设备中删除旧应用(如果存在)。
安装应用程序并打开它。
有时这也不起作用,我再次尝试相同的步骤一两次,突然它开始工作了......
它还帮助我为结构和崩溃分析启用了额外的调试日志记录。
adb shell setprop log.tag.Fabric DEBUG
adb shell setprop log.tag.CrashlyticsCore DEBUG
【讨论】:
谢谢你一千遍!我可以确认执行 assemble[Variant] 任务、重建和卸载/重新安装应用程序可以解决该死的问题! 我的问题是我需要打开 Firebase 控制台并验证是否首次安装 sdk【参考方案4】:如果有网络连接(例如在飞行模式下),即使一切设置正确,您也会收到此错误消息。
您还将获得:
E/Fabric﹕ Failed to retrieve settings from https://settings.crashlytics.com/spi/v2/platforms/android/apps/com.xyz/settings
W/Fabric﹕ Received null settings, skipping initialization!
为了防止 Crashlytics 在记录时进一步崩溃,我这样做:
boolean fabricInitialized = Fabric.isInitialized();
if (fabricInitialized)
Crashlytics.log(someString);
【讨论】:
如果您没有在 firebase 控制台中激活 crashlytics,您将收到同样的错误。 它帮助我清理了我的项目,然后再试一次。【参考方案5】:转到项目的设置并为您的 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 团队对此问题的回应。
【讨论】:
实际上,根据我的经验,您不必重新下载 google-service.json,因为没有什么重要的变化。相反,在我的情况下,问题是当我链接现有的 Crashlytics 帐户时,我没有将 SHA-1 密钥添加到我的 Firebase 项目中。我要做的是添加 SHA-1 密钥,取消链接 Fabric 并再次链接。 也许你是对的,没有必要重新下载 google-service.json。但是我与 Firebase 支持人员进行了很长时间的对话,他们没有说任何关于在 Firebase 控制台中添加 SHA-1 的内容,即使我认为文档中遗漏了这一点。 首选 SHA-256。它的工作方式与 SHA-1 相同,而且更强大。 这对我来说是个问题,但我不必重新下载 google-service.json 文件。【参考方案6】:您可能忘记添加:
<meta-data
android:name="io.fabric.ApiKey"
android:value="h4132h4k324hjh4l4324h24hk21h4kj2h4" />
到您的清单文件。至少在我的情况下,这就是原因。
【讨论】:
如果您不想连接到 Firebase 控制台,请将此行添加到 Android Manifest 文件(如果缺少)。 (到 2020 年,这将是有效的:p) @Hanry 我完成了连接(我想移至 Firebase),但没有连接,我继续在日志中收到错误。我想念什么?【参考方案7】:在我的例子中,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>
我希望这会有所帮助。
【讨论】:
我从哪里获得 api 密钥?【参考方案8】:我发现在转换为 FirebaseCrashlytics 后,我必须在 Firebase 中取消注册并重新注册现有应用。
确保您的应用在运行它之前达到以下点以进行初始 FirebaseCrashlytics 注册(控制台等待初始注册),否则它不会注册: enter image description here
这些都不明显!
【讨论】:
您能否详细说明您是如何注销和重新注册您的应用的?【参考方案9】:升级到 Firebase Crashlytics SDK Android & ios
您现在可以使用新的官方 Firebase Crashlytics SDK 在您的应用中设置 Crashlytics,该 SDK 提供了改进的 API,与其他 Firebase 产品更加一致并且使用起来更加直观。本指南介绍如何从 Fabric Crashlytics SDK 升级到新的 SDK。它描述了新 API 带来的更改、更改的原因以及如何更新您的代码(如果需要)。
安卓
前提条件:将您的应用迁移到 AndroidX
1。添加 Firebase 配置文件
-
打开您的Project Settings。
点击下载 google-services.json 以获取您的 Firebase Android 配置文件。
将配置文件移动到应用的模块(应用级)目录中。
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 的最佳体验,我们建议您还将 Firebase SDK for Google Analytics 添加到您的应用中(确保添加版本 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 现在是一个实例方法来自 Fabric: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");
crash方法被移除
来自 Fabric:Crashlytics.getInstance().crash()
。
致 Firebase Crashlytics SDK:
throw RuntimeException("Test Crash")
现在,FirebaseCrashlytics 会使用 ContentProvider 在新的 Firebase Crashlytics SDK 中定义。消除 如果存在,则调用 Fabric.with()。如果您已经在使用 Firebase Crashlytics,您的应用可能已经在使用自动启动,并且可能 不包含对 Fabric.with() 的调用。
GL
【讨论】:
【参考方案10】:我在将新的 Firebase SDK 升级到 17.0.0+ 版本时遇到了这个问题。
这个问题是在我们使用多种口味时引起的。如果您使用单独的风味 - 调试并将其链接到 firebase,而不是将 google-services.json 文件添加到应用程序根目录,我们必须将风味特定的 json 文件添加到风味的适当文件夹中- app -> src -> (flavor 文件夹).
这将确保生成的代码具有正确的客户端 ID。
这是一个愚蠢的错误,但人们有机会错过它。
【讨论】:
【参考方案11】:首先,您必须在控制台中的项目中的 Crashlytics 选项卡中启用 Crashlytics(在添加 crashlytics 的所有依赖项之前或之后)或按照本文中的这些步骤操作 链接:https://firebase.google.com/docs/crashlytics/get-started?authuser=0&platform=android
【讨论】:
【参考方案12】:检查互联网连接后,我通过在 Firebase 控制台中为我的应用程序激活 Crashlytics 解决了这个问题(然后,重新启动应用程序,一切正常)
【讨论】:
【参考方案13】:我将此答案发布给那些希望它在不取消其应用与 Firebase Crashlytics
的链接的情况下正常工作的人。
为了实现这一目标,他们必须遵循以下原则,
在AndroidManifest
中将fabric API 密钥添加回metadata
。
<meta-data
android:name="io.fabric.ApiKey"
android:value="fabric_api_key"
/>
初始化Fabric
。
Fabric.with(this, new Crashlytics());
完成这两个步骤后,Crashlytics
无需取消链接即可再次开始工作。
【讨论】:
以上是关于无法从 https://settings.crashlytics.com/spi/v2/platforms/android/apps/ 检索设置的主要内容,如果未能解决你的问题,请参考以下文章
DateTimeParseException:无法解析文本:无法从 TemporalAccessor 获取 LocalDateTime