Android为Apikey添加字符串资源导致Crashlytics开发者工具错误



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

中添加了以下字符串资源

AndroidManifest.xml

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

和string .xml

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

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

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

右键单击"kit-libs",然后选择" refresh kits ",尝试刷新kit-libs文件夹。

我刚刚仔细研究了一下。这不起作用,因为android:value属性是从字面上理解的。要使用资源id,你必须使用android:resource属性,但Fabric gradle插件根本不使用这个android:resource属性,因为它将manifest作为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>

您的调试ApiKey位于您的项目的组织设置页面