我目前正在實施API密鑰切換腳本建議here,除了使用生成類型而不使用flavor。我的build.gradle看起來是這樣的:Crashlytics在運行時無法在crashlytics.properties中找到API密鑰
...
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()
}
}
}
...
的gradle這個文件成功生成,並與根據生成類型的正確信息crashlytics.properties更新。建議使用這種使用crashlytics.properties的方法here,並且似乎除了在gradle文件中包含依賴關係之外沒有任何其他更新。然而,當Crashlytics.start(this)
從主要活動叫,我得到一個運行時異常:
java.lang.RuntimeException: Unable to create application com.lookout.LookoutApplication: java.lang.IllegalArgumentException: Crashlytics could not be initialized, API key missing from AndroidManifest.xml. Add the following tag to your Application element
<meta-data android:name="com.crashlytics.ApiKey" android:value="YOUR_API_KEY"/>
剝離下來到一個靜態crashlytics.properties文件(即在gradle這個文件中刪除動態腳本,只是有一個apiKey和在crashlytics.properties中的apiSecret)會產生相同的錯誤,即使它成功構建。
是否對AndroidManifest或build.gradle文件進行了一些更改,我應該將它指向crashlytics.properties?
禁用InstantR我解決了這個問題。希望我在嘗試預言之前花了一個小時才找到這篇文章。 – Soumya 2017-11-01 00:07:26