Crashlytics findet zur Laufzeit keinen API-Schlüssel in crashlytics.properties

Ich implementiere derzeit das vorgeschlagene API-SchlüsselumschaltskriptHie, außer bei Build-Typen anstelle von Aromen. Mein build.gradle sieht so aus:

...
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 wird erfolgreich erstellt, und crashlytics.properties wird mit den richtigen Informationen entsprechend dem Buildtyp aktualisiert. Diese Methode zur Verwendung von crashlytics.properties wurde @ vorgeschlageHie und scheinen ohne andere Aktualisierungen als die Einbeziehung von Abhängigkeiten in die gradle-Datei zu funktionieren. Wenn jedochCrashlytics.start(this) wird von der Hauptaktivität aufgerufen, ich erhalte 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"/>

enn Sie es in eine statische crashlytics.properties-Datei verschieben (d. H. Das dynamische Skript in der gradle-Datei entfernen und nur einen apiKey und apiSecret in crashlytics.properties haben), wird derselbe Fehler ausgegeben, obwohl die Erstellung erfolgreich wa

Ist das AndroidManifest oder die build.gradle-Datei geändert worden, um auf crashlytics.properties hinzuweisen

Antworten auf die Frage(2)

Ihre Antwort auf die Frage