J'ai deux types de construction dans Gradle, mais pour une raison quelconque, chaque fois que je modifie l'indicateur suivant par false, je reçois le message d'erreur intitulé:
ext.enableCrashlytics = false
l'erreur elle-même complète est ci-dessous:
Process: com.mobile.myapp.staging, PID: 5439
Java.lang.RuntimeException: Unable to create application com.mobile.myapp.UI.myappApplication: io.fabric.sdk.Android.services.concurrency.UnmetDependencyException: This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up,
install an Android build tool and ask a team member to invite you to this app's organization.
at Android.app.ActivityThread.handleBindApplication(ActivityThread.Java:4710)
at Android.app.ActivityThread.-wrap1(ActivityThread.Java)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1405)
at Android.os.Handler.dispatchMessage(Handler.Java:102)
at Android.os.Looper.loop(Looper.Java:148)
at Android.app.ActivityThread.main(ActivityThread.Java:5417)
at Java.lang.reflect.Method.invoke(Native Method)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:726)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:616)
Caused by: io.fabric.sdk.Android.services.concurrency.UnmetDependencyException: This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up,
install an Android build tool and ask a team member to invite you to this app's organization.
at com.crashlytics.Android.core.CrashlyticsCore.onPreExecute(CrashlyticsCore.Java:234)
at com.crashlytics.Android.core.CrashlyticsCore.onPreExecute(CrashlyticsCore.Java:207)
at io.fabric.sdk.Android.InitializationTask.onPreExecute(InitializationTask.Java:44)
at io.fabric.sdk.Android.services.concurrency.AsyncTask.executeOnExecutor(AsyncTask.Java:611)
at io.fabric.sdk.Android.services.concurrency.PriorityAsyncTask.executeOnExecutor(PriorityAsyncTask.Java:43)
at io.fabric.sdk.Android.Kit.initialize(Kit.Java:69)
at io.fabric.sdk.Android.Fabric.initializeKits(Fabric.Java:440)
at io.fabric.sdk.Android.Fabric.init(Fabric.Java:384)
at io.fabric.sdk.Android.Fabric.setFabric(Fabric.Java:342)
at io.fabric.sdk.Android.Fabric.with(Fabric.Java:313)
at com.mobile.myapp.UI.base.BaseApplication.setupExceptionHandling(BaseApplication.Java:51)
at com.mobile.myapp.UI.myappApplication.onCreate(myappApplication.Java:45)
at Android.app.Instrumentation.callApplicationOnCreate(Instrumentation.Java:1013)
at Android.app.ActivityThread.handleBindApplication(ActivityThread.Java:4707)
Et voici comment j'initialise crashlytics dans ma sous-classe Application:
Fabric.with(this, new Crashlytics());
ce que j'essaie de faire, c'est de contrôler si un crashlytics peut fonctionner ou non, par type de produit. Disons que je veux que saveur1 ne fonctionne pas avec crashlytics, je pensais que je pouvais utiliser ce drapeau gradle et le définir sur false. est-ce que je manque quelque chose?
Ajout à la réponse de Todd Burner
Attention avec BuildConfig.DEBUG
. IDE peut l'importer automatiquement
com.crashlytics.Android.BuildConfig (= false)
au lieu de votre configuration d'application
${app_package}.BuildConfig
METTRE À JOUR
Fournir un exemple à la demande de j2emanue
...
import com.fiot.ot.BuildConfig <- should be
import com.crashlytics.Android.BuildConfig <- my IDE automatically imported
fun initFabric(context: Context) {
val core = CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build()
val kit = Crashlytics.Builder().core(core).build()
Fabric.with(context, kit)
}
Où com.fiot.ot
nom du paquet de mon application
Peut-être manquant appliquer le tissu plugin
J'ai ajouté cette ligne en haut du fichier app/build.gradle
qui a résolu mes problèmes!
appliquer le plugin: 'io.fabric'
Chaque fois que je mets
ext.enableCrashlytics = false
mon application plante avec
io.fabric.sdk.Android.services.concurrency.UnmetDependencyException
This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up, install an Android build tool and ask a team member to invite you to this app's organization.
Ce qui semble fonctionner pour moi, c'est que je dois désactiver l'initialisation automatique de Crashlytics en ajoutant cette ligne à AndroidManifest.xml.
<meta-data Android:name="firebase_crashlytics_collection_enabled" Android:value="false" />
Ensuite, j'initialise manuellement Crashlytics dans la méthode onCreate () de ma sous-classe Application, utilise BuildConfig.DEBUG pour décider de désactiver CrashlyticsCore et appelle Fabric.with (). En fait, je ne mets plus
ext.enableCrashlytics = false
du tout. Tout semble fonctionner pour moi.
Todd de Fabric. Vous obtiendrez cette erreur, sauf si vous désactivez également Fabric au moment de l'exécution.
// Set up Crashlytics, disabled for debug builds
Crashlytics crashlyticsKit = new Crashlytics.Builder()
.core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
.build();
// Initialize Fabric with the debug-disabled crashlytics.
Fabric.with(this, crashlyticsKit);
Consultez ce lien pour plus de détails: https://docs.fabric.io/Android/crashlytics/build-tools.html#disable-crashlytics-for-debug-builds
Assurez-vous d'ajouter
app.gradle
apply plugin: 'io.fabric'
J'ai aussi
classpath 'io.fabric.tools:gradle:1.26.1'
dans le
dépendances de niveau de projet
et ajoutez l’API Crashlytics aux chaînes, inscrivez-vous dans le Site Crashlytics
Dans mon cas, cela a fonctionné.
oui, c’est le projet de niveau supérieur build.gradle
buildscript {
repositories {
jcenter()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'com.Android.tools.build:gradle:1.2.3'
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'Java'
allprojects {
repositories {
jcenter()
maven { url 'https://maven.fabric.io/public' }
}
}
et c'est le build.gradle pour le module d'application
apply plugin: 'com.Android.application'
apply plugin: 'io.fabric'
Android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "your application package name"
minSdkVersion 10
targetSdkVersion 22
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile 'com.google.code.gson:gson:2.3'
compile 'com.Android.support:support-v4:22.0.0'
testCompile 'junit:junit:4.12'
testCompile "org.mockito:mockito-core:1.9.5"
compile('com.crashlytics.sdk.Android:crashlytics:2.5.2@aar') {
transitive = true;
}
}
et enfin "construction nette" et tout était réglé pour moi.