Ich implementiere derzeit die API Key Switching-Skript vorgeschlagen here, außer mit Build-Typen anstelle von Aromen. Mein build.gradle sieht wie folgt aus:Crashlytics nicht finden API Schlüssel in crashlytics.properties zur Laufzeit
...
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()
}
}
}
...
Die gradle Datei erfolgreich erstellt und crashlytics.properties Updates mit den richtigen Informationen nach dem Build-Typ. Diese Methode der Verwendung von crashlytics.properties wurde here vorgeschlagen und scheint ohne weitere Aktualisierungen außer der Aufnahme von Abhängigkeiten in die Gradle-Datei zu funktionieren. Wenn jedoch Crashlytics.start(this)
aus der Haupttätigkeit genannt wird, erhalte ich eine Laufzeitausnahme:
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"/>
es Strippen auf eine statische crashlytics.properties Datei nach unten (dh dem dynamischen Skript in der gradle Datei zu entfernen und nur eine apikey mit und apiSecret in crashlytics.properties) erzeugt den gleichen Fehler, obwohl er erfolgreich erstellt wurde.
Gibt es einige Änderungen an der AndroidManifest oder der Build.Gradle-Datei, die ich machen sollte, um sie auf crashlytics.properties zu richten?
Deaktivieren von InstantR Ich habe das Problem für mich behoben. Ich wünschte, ich hätte diesen Beitrag gefunden, bevor ich eine Stunde damit verbracht habe, Prophezeiungen zu machen. – Soumya