Fabric 不接受 @string/... 其 API 键在 manifest.xml 中的引用

Fabric not accepting @string/... reference for its API key in manifest.xml

我试图通过将密钥放入未跟踪的字符串资源 XML 文件中来隐藏我的结构 API 密钥以免受源代码控制。但出于某种原因,fabric 不接受清单中的关键 vie @string/FABRIC_API_KEY 引用。

XML文件如下-

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="NASA_API_KEY">abcd</string>
    <string name="FABRIC_API_KEY">xyz</string>
</resources>

清单中的引用 -

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

而且,这是我在尝试构建时遇到的错误 -

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

我已经尝试通过 BuildConfig 访问 API 密钥,但它仍然无效。

根据面料,

您应该停止在 AndroidManifest.xml 中添加此关键字段。相反,您应该将其添加到 fabric.properties.

基本上面料库会在您合并后自动合并此密钥 AndroidManifest.xml。

REF : https://docs.fabric.io/android/fabric/settings/working-in-teams.html#android-projects

希望这对您有所帮助。

build.gradle中添加manifestPlaceholders:

defaultConfig {
    manifestPlaceholders = [
        FABRIC_API_KEY:"Your Key"
    ]
}

一样在AndroidManifest.xml中使用它
<meta-data
    android:name="io.fabric.ApiKey"
    android:value="${FABRIC_API_KEY}"
/>

好的..我自己得到了答案...这是对我有帮助的代码:

按照以下步骤操作:-

https://github.com/plastiv/CrashlyticsDemo/

大多数人不得不对 运行 gradle 命令行提出问题,因此您可以这样使用:1) 打开终端。

2) 转到您的项目工作space

3) ./gradlew

(请注意,如果权限拒绝错误,请使用此命令- chmod 744 gradlew 并再次 运行 ./gradlew)

(4) ./gradlew assemble -P apiKey=你的结构api key

现在您可以完全保密您的 api 密钥,但请记住一件事,您的 fabric.properties 看起来像那个

fabric.properties:-

apiSecret=”你的 fabric 密钥”apiKey=”你的 fabric api 密钥”

尽情享受吧!