【问题标题】:Fabric/Crashlytics Android adding string resource for Apikey causes Crashlytics Developer Tools ErrorFabric/Crashlytics Android 为 Apikey 添加字符串资源导致 Crashlytics 开发者工具错误
【发布时间】:2015-10-12 17:13:36
【问题描述】:

在我的 android 应用程序中,我在

中添加了以下字符串资源

AndroidManifest.xml

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

在strings.xml中

 <string name="fabric_key">XXXXXXXXXXXXXXXXXXXXXXXX</string>

当我尝试构建项目时,我收到以下错误:

Error:Execution failed for task ':app:fabricGenerateResourcesDevDebug'.
Crashlytics Developer Tools error.

任何帮助将不胜感激。

【问题讨论】:

  • 我也遇到了这个问题。我还尝试将“apiKey”添加到 fabric.properties 文件夹,但这也没有解决问题。插件似乎直接从清单中提取 API 密钥,没有遵循字符串引用。
  • 仍然如此,遗憾的是 Fabric 没有改变这一点,因为 Android Studio 有非常有用的构建类型切换。
  • 我认为 Fabric 需要得到通知。仅获取字符串引用应该不难。字符串引用适用于 Google Play 服务的元标记!

标签: android api-key fabric.io


【解决方案1】:

尝试通过右键单击“kit-libs”然后选择刷新套件来刷新 kit-libs 文件夹。

【讨论】:

  • 这个文件夹在哪里?
【解决方案2】:

我刚刚仔细研究了这一点。这不起作用,因为android:value 属性是按字面意思理解的。要使用资源 ID,您必须改用 android:resource 属性,但 Fabric gradle 插件根本不使用此 android:resource 属性,因为它将清单作为 XML 文档而不是作为 Android Manifest 类处理。

在反编译 Fabric 源代码并弄清楚 DefaultManifestDataStandardAndroidProject 类的工作原理后,我确认了以下内容:

为调试构建提供单独 ApiKey 的最简单方法

通过使用以下内容创建 app/src/debug/AndroidManifest.xml 来利用清单合并(您必须使用 tools:replace 属性才能使其工作):

<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <application>
        <!-- Meta-data -->
        <meta-data
            android:name="io.fabric.ApiKey"
            android:value="[yourDebugApiKey]"
            tools:replace="android:value"/>
    </application>

</manifest>

您的debug ApiKey 位于您项目的Organization Settings 页面中。

【讨论】:

    猜你喜欢
    • 2015-11-28
    • 2019-01-30
    • 2018-01-29
    • 2018-10-06
    • 2017-08-28
    • 2019-04-12
    • 2018-03-29
    • 2017-07-30
    • 2019-09-07
    相关资源
    最近更新 更多