Java Crashlytics在运行时未在Crashlytics.properties中找到API键
我目前正在实现建议的API密钥切换脚本,除了使用构建类型而不是风格。我的build.gradle如下所示:Java Crashlytics在运行时未在Crashlytics.properties中找到API键,java,android,build.gradle,properties-file,crashlytics,Java,Android,Build.gradle,Properties File,Crashlytics,我目前正在实现建议的API密钥切换脚本,除了使用构建类型而不是风格。我的build.gradle如下所示: ... buildTypes { debug { ... set("crashlyticsApiKey", "API_KEY_1") set("crashlyticsApiSecret", "API_SECRET_1") } release { ... set("crashlyticsA
...
buildTypes {
debug {
...
set("crashlyticsApiKey", "API_KEY_1")
set("crashlyticsApiSecret", "API_SECRET_1")
}
release {
...
set("crashlyticsApiKey", "API_KEY_2")
set("crashlyticsApiSecret", "API_SECRET_2")
}
}
...
productFlavors{...}
...
File crashlyticsProperties = new File("${project.projectDir.absolutePath}/crashlytics.properties")
applicationVariants.all { variant ->
variant.productFlavors.each { flavor ->
def variantSuffix = variant.name.capitalize()
def generateResourcesTask = project.tasks.getByName("crashlyticsGenerateResources${variantSuffix}")
def generatePropertiesTask = task("crashlyticsGenerateProperties${variantSuffix}") << {
Properties properties = new Properties()
println "...copying apiKey for ${variant.name}"
properties.put("apiKey", variant.buildType.crashlyticsApiKey)
println "...copying apiSecret for ${variant.name}"
properties.put("apiSecret", variant.buildType.crashlyticsApiSecret)
properties.store(new FileWriter(crashlyticsProperties), "")
}
generateResourcesTask.dependsOn generatePropertiesTask
def cleanResourcesTask = project.tasks.getByName("crashlyticsCleanupResourcesAfterUpload${variantSuffix}")
cleanResourcesTask.doLast {
println "...removing crashlytics.properties"
crashlyticsProperties.delete()
}
}
}
...
将其拆分为静态crashlytics.properties文件(即删除gradle文件中的动态脚本,并在crashlytics.properties中仅包含一个apiKey和apiSecret)会产生相同的错误,即使生成成功
我应该对AndroidManifest或build.gradle文件进行一些更改,使其指向crashlytics.properties吗?虽然这不是原始问题的答案(因为2014年不存在即时运行),但您可能会发现即时运行会导致问题。我的过程是:
- 安装结构插件
- 生成Crashlytics代码(包括清单中的API密钥)
- 切换到
文件fabric.properties
- 花一个小时试着找出它为什么不起作用
- 禁用即时运行->重建->安装->成功
# Fabric properties file: app/fabric.properties
apiSecret=xx68f6074dxxxxxc11dxxx97c172e8ebf0
apiKey=xxxe76c4xxxx97e8cxxxx0135e9d46f5a2xxx
Add-on.gitignore(用于开源项目)
删除AndroidManifest.xml上的条目:
<meta-data
android:name="io.fabric.ApiKey"
android:value="xxx6c41xxx6ec601xxxd4xxxa2" />
官方文档:禁用InstantRun为我解决了这个问题。希望我在花一个小时尝试预言之前找到这篇文章。不要在fabric.properties上工作。仍然收到由于缺少清单条目而无法初始化结构的消息
<meta-data
android:name="io.fabric.ApiKey"
android:value="xxx6c41xxx6ec601xxxd4xxxa2" />