2014-10-10 4 views
12

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?

Antwort

1

Obwohl dies nicht die Antwort auf die ursprüngliche Frage ist (da Instant Run 2014 nicht existierte), stellen Sie möglicherweise fest, dass Instant Run Probleme verursachen kann. Mein Prozess war:

  • Installieren Stoff Plugin
  • Crashlytics Code generieren (einschließlich API-Schlüssel im Manifest)
  • Switch to fabric.properties Datei
  • eine Stunde verbringen, um herauszufinden, warum es nicht funktioniert
  • deaktivieren Instant-Run -> Rebuild -> Installieren -> Erfolg

ich auf Android Studio 2.0.0-beta6 bin. Dies wird wahrscheinlich in Zukunft gelöst werden, aber dies war die einzige Ressource, die ich online mit dem gleichen Problem finden konnte, also hoffentlich kann ich jemand anderen in dieser Stunde retten.

+1

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

8

Adaequat mit:

# Fabric properties file: app/fabric.properties 
apiSecret=xx68f6074dxxxxxc11dxxx97c172e8ebf0 
apiKey=xxxe76c4xxxx97e8cxxxx0135e9d46f5a2xxx 

auf .gitignore hinzufügen (für Open-Source-Projekte)

REMOVE Eintrag auf AndroidManifest.xml:

<meta-data 
    android:name="io.fabric.ApiKey" 
    android:value="xxx6c41xxx6ec601xxxd4xxxa2" /> 

Oficial Dokumentation: https://docs.fabric.io/android/fabric/settings/working-in-teams.html#android-projects

+0

Nicht mit meinem Ende mit Fabric.properties. Immer noch die Meldung, dass der Fabric wegen fehlender Manifest-Einträge nicht initialisiert werden kann – CyberpunkDreams

Verwandte Themen