我试图通过将密钥放在未跟踪的字符串资源XML文件中来隐藏我的结构API密钥。但由于某种原因,结构不接受清单中的关键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" />
而且,这是我尝试构建的错误 -
错误:任务&#39;:app:fabricGenerateResourcesDebug&#39;执行失败。 Crashlytics Developer Tools错误。
我尝试通过BuildConfig
访问API密钥,但仍然无效。
答案 0 :(得分:3)
在build.gradle
添加manifestPlaceholders
:
defaultConfig {
manifestPlaceholders = [
FABRIC_API_KEY:"Your Key"
]
}
在AndroidManifest.xml
中使用
<meta-data
android:name="io.fabric.ApiKey"
android:value="${FABRIC_API_KEY}"
/>
答案 1 :(得分:2)
根据Fabric,
您应该停止在AndroidManifest.xml中添加此关键字段。相反,你应该在fabric.properties中添加它。
基本上,结构库将在合并的AndroidManifest.xml中自动合并此密钥。
参考:https://docs.fabric.io/android/fabric/settings/working-in-teams.html#android-projects
希望这会有所帮助。
答案 2 :(得分:0)
好的..我自己得到了答案......这是代码,它帮助了我:
请按照以下步骤操作: -
https://github.com/plastiv/CrashlyticsDemo/
大多数人都有问题运行gradle命令行,所以你可以像这样使用:1)打开终端。
2)转到您的项目工作区
3)./ gradlew
(注意如果权限拒绝错误使用此命令 - chmod 744 gradlew并再次运行./gradlew)
(4)./ gradlew assemble -P apiKey =您的结构api密钥
现在你可以完全保密你的api密钥,但记住你的fabric.properties看起来像那样的东西
fabric.properties: -
apiSecret =“您的布料密钥”apiKey =“您的布料密钥”
享受!