我将我的崩溃关键字放在xml
中,我收到了这个错误:
错误:任务':app:fabricGenerateResourcesDebug'执行失败。
Crashlytics Developer Tools错误。
以下是我在AndroidManifest.xml
中的预期代码。
<meta-data
android:name="io.fabric.ApiKey"
android:value="@string/crashlytics_key" />
隐藏它的最佳方法是什么?
答案 0 :(得分:5)
没有必要像接受的答案那样复杂地进行。
根据the official docs,您只需从Manifest中删除您的API密钥并将其存入fabric.properties
文件,您的秘密已经存在于下一个表单中:
apiKey=fabric_api_key
apiSecret=fabric_api_secret
就是这样。 Fabric插件(或Gradle任务)将自动完成引擎盖内所需的所有工作。
P.S。别忘了将fabric.properties
文件保留在版本控制系统之外
答案 1 :(得分:1)
将您的API密钥放在local.properties中。
crashlytics.key=api_key_here
在build.gradle中,添加此Groovy方法:
def getLocalProperty(String propertyName) {
def propsFile = rootProject.file('local.properties')
if (propsFile.exists()) {
def props = new Properties()
props.load(new FileInputStream(propsFile))
return props[propertyName]
} else {
return ""
}
}
然后添加一个清单占位符,例如:
android {
defaultConfig {
manifestPlaceholders = [crashlytics:getLocalProperty("crashlytics.key")]
}
}
在清单中,您现在可以使用以下语法将API密钥作为注入变量进行访问:
${crashlytics}
您可能需要调整此代码以使其适合您的需求,但这应该足以让您入门。并确保将local.properties添加到.gitignore(如果它还没有!)希望有所帮助。
答案 2 :(得分:0)
把两个键都放在fabric.properties
上对我来说不起作用,fabric在那儿找不到api键,我想把它放在清单中。然后我发现了这个解决方案:
放置io.fabric.ApiKey=676897890789790...
到您的local.properties
向AndroidManifest添加以下内容:
<meta-data
android:name="io.fabric.ApiKey"
android:value="@string/fabric_api_key" />
然后进入应用模块build.gradle
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
def fabricApiKey = properties.getProperty('io.fabric.ApiKey')
if (fabricApiKey == null) fabricApiKey = "Place io.fabric.ApiKey to local.properties"
然后在defaultConfig中关闭:
defaultConfig {
.....
resValue "string", "fabric_api_key", fabricApiKey
}
这样,您还可以从开源项目的源代码管理中隐藏google maps密钥,并仍使应用程序可构建以进行持续集成或希望试用的人...