隐藏 Crashlytics 密钥的最佳方法是什么?
What is the best way to hide Crashlytics key?
我将我的 crashlytics 密钥放入 xml
,但我收到了这个错误:
Error:Execution failed for task ':app:fabricGenerateResourcesDebug'.
Crashlytics Developer Tools error.
以下是我在 AndroidManifest.xml
中的预期代码。
<meta-data
android:name="io.fabric.ApiKey"
android:value="@string/crashlytics_key" />
隐藏它的最佳方法是什么?
将您的 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(如果尚未添加!)希望对您有所帮助。
不需要像接受的答案那样复杂。
根据 the official docs,您可以简单地从 Manifest 中删除您的 API 密钥并放入 fabric.properties
文件,其中您的秘密已经存在于下一个表单中:
apiKey=fabric_api_key
apiSecret=fabric_api_secret
就是这样。 Fabric 插件(或 Gradle 任务)将自动在引擎盖内完成所有需要的工作。
P.s。不要忘记将 fabric.properties
文件保存在版本控制系统
之外
好吧,将两个键都放在 fabric.properties
上对我不起作用,而且 fabric 找不到 api 键,我想把它放在 Manifest 中。然后我发现了这个解决方案:
放置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 映射密钥,并且仍然保持应用程序可构建以供持续集成或想要尝试的人...
我将我的 crashlytics 密钥放入 xml
,但我收到了这个错误:
Error:Execution failed for task ':app:fabricGenerateResourcesDebug'.
Crashlytics Developer Tools error.
以下是我在 AndroidManifest.xml
中的预期代码。
<meta-data
android:name="io.fabric.ApiKey"
android:value="@string/crashlytics_key" />
隐藏它的最佳方法是什么?
将您的 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(如果尚未添加!)希望对您有所帮助。
不需要像接受的答案那样复杂。
根据 the official docs,您可以简单地从 Manifest 中删除您的 API 密钥并放入 fabric.properties
文件,其中您的秘密已经存在于下一个表单中:
apiKey=fabric_api_key
apiSecret=fabric_api_secret
就是这样。 Fabric 插件(或 Gradle 任务)将自动在引擎盖内完成所有需要的工作。
P.s。不要忘记将 fabric.properties
文件保存在版本控制系统
好吧,将两个键都放在 fabric.properties
上对我不起作用,而且 fabric 找不到 api 键,我想把它放在 Manifest 中。然后我发现了这个解决方案:
放置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 映射密钥,并且仍然保持应用程序可构建以供持续集成或想要尝试的人...