Comment désactiver les applications pendant le développement

Y a-t-il un moyen facile de désactiver Crashlytics Android SDK Au cours du développement ?

Je ne veux pas qu'il envoie un crash à chaque fois que je fais quelque chose de stupide

D'autre part, je ne veux pas commenter
Crashlytics.start//

Et peut-être, risque d'oublier de le rassembler et de le réparer.
Invité:

David

Confirmation de:

J'ai trouvé une solution de Crashlytics /avec intégration tissulaire/

Placez le code suivant dans votre classe d'applications.
onCreate//



Crashlytics crashlytics = new Crashlytics.Builder//.disabled/BuildConfig.DEBUG/.build//;
Fabric.with/this, crashlytics/;


EDIT:

DANS Crashalitics 2.3 Et au-dessus, il n'est pas recommandé. Le code correct est:


CrashlyticsCore core = new CrashlyticsCore.Builder//.disabled/BuildConfig.DEBUG/.build//;
Fabric.with/this, new Crashlytics.Builder//.core/core/.build///;


ou


Fabric.with/this, new Crashlytics.Builder//.core/new CrashlyticsCore.Builder//.disabled/BuildConfig.DEBUG/.build///.build///;


/Copié
https://coderoad.ru/30488575/
/

EDIT2:

Vous pouvez également ajouter également à votre
buildType

dans gradle. Cette commande désactive l'envoi du fichier de mappage. crashlytics et génération ID Pour chaque assemblée, qui accélère gradle assemblages de ces goûts. /Il ne désactive pas Crashlytics Pendant l'exécution./
https://coderoad.ru/28339323/

buildTypes {
release {
....
}
debug {
ext.enableCrashlytics = false
}
}

Charles

Confirmation de:

Marque des applications ici. Voici quelques façons de désactiver Crashlytics Pendant l'exécution des assemblages de débogage!

Utiliser l'autre android:versionString Pour les assemblages de débogage et de remise des diplômes, puis déconnectez les rapports de fadgrackage du panneau Web de surveillance Crashlytics Pour la version de débogage.

Envelopper le défi Crashlytics.start// dans if statement, Qui vérifie le drapeau de débogage. Vous pouvez utiliser un drapeau personnalisé ou une approche similaire à celle proposée ici:
https://coderoad.ru/7085644/

Constantine

Confirmation de:

La réponse sélectionnée n'est plus correcte. Google
https://firebase.google.com/do ... r%3D0
Applications. Ma version actuelle
2.9.1

, Et la seule chose que je devais faire est d'ajouter
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.1'

dans mon fichier. Gradle. Aucune chose supplémentaire requise, bonne, mais cela signifie que Crashlytics fonctionne toujours.

Décision 1

Seules les applications de compilation en version :


dependencies {
...
releaseImplementation 'com.crashlytics.sdk.android:crashlytics:2.9.1' // update version
}


Décision 2

Si tu veux
https://firebase.google.com/do ... r%3D0
, alors la décision 1 ne fonctionne pas comme des cours Crashlytics Ne sera pas trouvé dans les assemblages de débogage. Par conséquent, changez la mise en œuvre Gradle Retour à:


implementation 'com.crashlytics.sdk.android:crashlytics:2.9.1' // update version


Ensuite, allez à votre manifeste et ajoutez la balise suivante
meta-data

Étiquette intérieure
application

:


<application android:name="...&gt;

&lt;meta-data
android:name=" android:value="false" firebase_crashlytics_collection_enabled"=""></application>

...



Ajouter une activité à votre lancement /Requis une seule fois, pas toutes les actions/


if /!BuildConfig.DEBUG/ { // only enable bug tracking in release version
Fabric.with/this, new Crashlytics///;
}


Cela ne permettra que des applications dans la version. Soyez prudent, vérifiez également BuildConfig.DEBUG Quand alors les paramètres d'application, E.g:


if /!BuildConfig.DEBUG/ {
Crashlytics.setUserIdentifier/"HASH_ID"/;
}

Charles

Confirmation de:

Si vous utilisez Gradle, Il suffit de l'ajouter à l'arôme:


ext.enableCrashlytics = false

Agathe

Confirmation de:

Découvrez le dernier document.
https://docs.fabric.io/android ... setup
.

En plus d'ajouter
ext.enableCrashlytics = false

dans build.grade Tu as besoin de faire


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/;

Babette

Confirmation de:

j'ai trouvé

La solution la plus facile:


release {
...
buildConfigField 'Boolean', 'enableCrashlytics', 'true'
}
debug {
buildConfigField 'Boolean', 'enableCrashlytics', 'false'
}


Les lignes ci-dessus créeront un champ logique statique nommé
enableCrashlytics

dans le fichier
BuildConfig

, que vous pouvez utiliser pour décider d'initier
Fabric

ou non:


if /BuildConfig.enableCrashlytics/
Fabric.with/this, new Crashlytics///;


NOTE:

Avec cette méthode Fabrics Initialisé uniquement dans les assemblages de construction /Comme indiqué dans le code ci-dessus/. Cela signifie que vous devez placer les appels de méthodes statics dans la classe
Crashlytics

en bloc
if

, qui vérifie s'il a été initialisé Fabrics, Comme indiqué ci-dessous.


if /Fabric.isInitialized///
Crashlytics.logException/e/;


Sinon, l'application échoue avec une erreur
Must Initialize Fabric before using singleton//

Lorsque vous testez sur l'émulateur.

Hannah12

Confirmation de:

2019 Répondre

J'ai essayé d'allumer Crashlytics seulement dans release et éteindre B. debug pendant 2 Montres vérifiant la console Firebase, Pour voir si des exceptions sont chargées ou non.

il y a 2 Façons possibles de faire cela.

OPTION 1

Cela fonctionne, mais si vous appelez une méthode
Crashlytics

Dans les assemblages de débogage, l'application sera sortie

Bâtiment

.

app/build.gradle


android {
buildTypes {
release {
manifestPlaceholders = [crashlyticsEnabled: true]
}
debug {
manifestPlaceholders = [crashlyticsEnabled: false]
}


AndroidManifest.xml


<manifest <application="" <meta-data="" android:name="firebase_crashlytics_collection_enabled" android:value="${crashlyticsEnabled}"></manifest>


OPTION 2

Alternative, si cela vous permet d'appeler des méthodes
Crashlytics

sans vérification préalable
BuildConfig.DEBUG

. Avec ce paramètre, vous pouvez appeler de telles méthodes que
Crashlytics.logException//

- Ils ne font que rien dans les assemblages de débogage. Je ne vois pas les rapports chargés dans debug.

app/build.gradle


android {
buildTypes {
release {
ext.enableCrashlytics = true
}
debug {
ext.enableCrashlytics = false
}


AndroidManifest.xml


<manifest <application="" <meta-data="" android:name="firebase_crashlytics_collection_enabled" android:value="false"></manifest>


application onCreate//


val crashlytics = Crashlytics.Builder//
.core/CrashlyticsCore.Builder//.disabled/BuildConfig.DEBUG/.build///
.build//
Fabric.with/this, crashlytics/

Eugene

Confirmation de:

Utiliser
MyApplication#onCreate//



if /!BuildConfig.DEBUG/ Crashlytics.start/this/;


Éditer

, Si vous avez mis à jour le tissu, au lieu d'utiliser cette

.

Denis

Confirmation de:

Une autre solution simple que j'aime est parce qu'elle ne nécessite pas différents fichiers manifestes:

Étape 1 - Déterminez le film manifeste build.gradle


android {
...
buildTypes {
release {
manifestPlaceholders = [crashlytics:"true"]
}
debug {
manifestPlaceholders = [crashlytics:"false"]
}
}
...
}


Étape 2-Utilisez-les dans votre AndroidManifest.xml


<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="${crashlytics}"></meta-data>

David

Confirmation de:

Comment utiliser Google Ce code consiste à désactiver les applications, ainsi qu'à améliorer le processus de montage.

https://i.stack.imgur.com/aXGjC.png
lien-
https://developer.android.com/ ... build

Gabriel

Confirmation de:

Si vous voulez réparer toutes les échecs /Pour les assemblages de débogage et de remise des diplômes/, Mais veulent les diviser sur le panneau de surveillance Crashlytics, Vous pouvez ajouter cette ligne de code à build.gradle:


debug {
versionNameSuffix "-DEBUG"
}


Par exemple, si versionName Votre application est égale 1.0.0, Ensuite, vos assemblages de remise des diplômes seront étiquetés comme 1.0.0, Un débogage - comme 1.0.0-DEBUG

Corneille

Confirmation de:

Veuillez noter que vous pouvez également désactiver le téléchargement gênant des caractères dans debug build:


def crashlyticsUploadStoredDeobsDebug = "crashlyticsUploadStoredDeobsDebug"
def crashlyticsUploadDeobsDebug = "crashlyticsUploadDeobsDebug"
tasks.whenTaskAdded { task ->
if /crashlyticsUploadStoredDeobsDebug.equals/task.name/ ||
crashlyticsUploadDeobsDebug.equals/task.name// {

println "Disabling $task.name."
task.enabled = false
}
}


Juste placer-le dans
build.gradle

Votre module d'application.

Camille

Confirmation de:

Il y a beaucoup de bonnes réponses ici, mais pour mes tests, j'utilise des assemblages de débogage pour les versions bêta internes et les tests out-of-the-lab, Lorsque les grumes d'échecs sont encore très utiles et que je voudrais toujours les signaler. Comme je. OP, Tout ce que je voulais - Il est déconnecté pendant le développement actif, où j'appelle souvent et résolvez rapidement les échecs.

Au lieu de supprimer les échecs de débogage ALL, Vous pouvez désactiver les rapports uniquement lorsque l'appareil est connecté à votre machine de développement avec le code suivant.


if /!Debug.isDebuggerConnected/// {
Fabric.with/this, new Crashlytics///;
}

Fabrice

Confirmation de:

Le problème est qu'aucune des solutions ne fonctionne pour ce dernier crashlytics sdk. /j'utilise 2.9.0/

Vous ne pouvez pas le désactiver à l'aide du code, car il est compilé dans votre projet et commence avant même d'appeler onCreate Ton application. Par conséquent, une autre solution est simple, ne compilez pas crashlytics, Quand ce n'est pas nécessaire.
Remplacer l'appel 'compile' sur 'releaseCompile' dans le fichier build.gradle.


releaseCompile/'com.crashlytics.sdk.android:crashlytics:2.9.0@aar'/ {
transitive = true
}

Florian

Confirmation de:

Version la plus simple moderne lorsqu'elle est utilisée Gradle Pour l'assemblage:


if /!BuildConfig.DEBUG/ {
Fabric.with/this, new Crashlytics///;
}


Il utilise une nouvelle syntaxe de tissu intégrée pour les applications et fonctionne automatiquement avec Gradle Construire.

Babette

Confirmation de:

Le problème étrange avec lequel j'ai rencontré: j'ai suivi la réponse de Siivina /qui apparaît également sur le site officiel/, Et il n'a pas travaillé. Il s'est avéré que je me réfère à
BuildConfig

dans le paquet Fabric, qui contient également une variable statique DEBUG, qui a été installé dans false Même en mode de débogage.

Donc, si vous suivez la solution ci-dessus et que vous obtenez toujours des rapports de débogage, assurez-vous de vous référer à ceci:


import com.yourpackagename.BuildConfig;


Et pas ceci:


import io.fabric.sdk.android.BuildConfig;

Hannah12

Confirmation de:

Si vous êtes inquiet pour quoi
BuildConfig.DEBUG

Non configuré correctement, utilisez plutôt
ApplicationInfo

:


boolean isDebug = / mAppContext.getApplicationInfo//.flags & ApplicationInfo.FLAG_DEBUGGABLE / != 0;
Crashlytics crashlytics = new Crashlytics.Builder//.disabled/ isDebug /.build//;
Fabric.with/ uIContext, crashlytics /;

Constantine

Confirmation de:

Utilisez des saveurs ou créez des configurations. Utilisez un identifiant d'assemblage séparé pour dev build, Et tous vos échecs continueront d'entrer une application distincte. Il peut être utile dans le cas de partager l'assemblage avec des pairs ou de l'utiliser sans débogueur. Quelque chose comme ca -


productFlavors {
dev {
applicationId "io.yourapp.developement"
}
staging {
applicationId "io.yourapp.staging"
}

production {
applicationId "io.yourapp.app"
}

Catherine

Confirmation de:

Si vous avez besoin d'un assemblage de débogage de la libération, c'est comment le faire:


buildTypes {
release {
signingConfig signingConfigs.config
debuggable true //-> debuggable release build
minifyEnabled true
multiDexEnabled false
ext.enableCrashlytics = true
proguardFiles getDefaultProguardFile/'proguard-android.txt'/, 'proguard-rules.pro'
buildConfigField 'boolean', 'BUILD_TYPE_DEBUG', 'false'
}
debug {
minifyEnabled false
multiDexEnabled true
ext.enableCrashlytics = false
ext.alwaysUpdateBuildId = false
// Disable fabric build ID generation for debug builds
proguardFiles getDefaultProguardFile/'proguard-android.txt'/, 'proguard-rules.pro'
buildConfigField 'boolean', 'BUILD_TYPE_DEBUG', 'true'
}
}


Lorsque vous installez
debuggable true

, ton BuildConfig.DEBUG sera initialisé avec true, J'ai donc ajouté cette variable à la classe BuildConfig.

le tissu Init:


Crashlytics crashlytics = new Crashlytics.Builder//
// disable crash reporting in debug build types with custom build type variable
.core/new CrashlyticsCore.Builder//.disabled/BuildConfig.BUILD_TYPE_DEBUG/.build///
.build//;

final Fabric fabric = new Fabric.Builder/this/
.kits/crashlytics/
//enable debugging with debuggable flag in build type
.debuggable/BuildConfig.DEBUG/
.build//;

// Initialize Fabric with the debug-disabled crashlytics.
Fabric.with/fabric/;

Hannah12

Confirmation de:

Nous pouvons utiliser la méthode fabric isDebuggable//.


import static io.fabric.sdk.android.Fabric.isDebuggable;

if/! isDebuggable///{
// set Crashlytics ...
}


Joyeux codage :/

Catherine

Confirmation de:

vous pouvez utiliser

Manifesta de fichier dédié

Pour le mode de débogage /travaille pour moi avec Crashlytics 2.9.7/:

Créer un fichier.
app/src/debug/AndroidManifest.xml

Et ajoutez ce qui suit:


<application>
<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false"></meta-data>
</application>


Veuillez noter que cet élément de métadonnées doit être placé.

seul

dans debug/AndroidManifest.xml, pas dans l'habituel AndroidManifest.xml

La solution qui utilise
CrashlyticsCore.Builder//.disabled/BuildConfig.DEBUG/.build//

, n'a pas travaillé pour moi et j'ai découvert que crashlytics Initialisé CrashlyticsInitProvider avant le défi Application.onCreate// ou lancement de toute action, ce qui signifie une initialisation manuelle fabric L'application ou l'action n'a aucun effet car fabric Déjà initialisé.

Emile

Confirmation de:

Ce travail est pour moi:


releaseCompile 'com.crashlytics.sdk.android:crashlytics:2.9.9'


UN B. buildTypes G.:


debug {
ext.enableCrashlytics = false
}

Gaetan

Confirmation de:

Étape 1: DANS build.grade


buildTypes {
debug {
debuggable true
manifestPlaceholders = [enableCrashlytic:false]
}
release {
debuggable false
manifestPlaceholders = [enableCrashlytic:true]
}
}


Étape 2: Au manifeste


<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="${enableCrashlytic}"></meta-data>


Étape 3: Dans l'application ou la première action


private void setupCrashReport// {
if /BuildConfig.DEBUG/ return;
Fabric.with/this, new Crashlytics///;
}


Je ne suis pas sûr du pas 3 Nous sommes nécessaires, mais pour vous assurer que la version de version devrait fonctionner sans échec. une source:
https://firebase.google.com/do ... rting

Christian

Confirmation de:

Il existe deux options pour désactiver les applications. Firebase Pour la prochaine version de com.google.fireBase: Firebase Applications: 17.0.0:

Ajouter une balise méta au manifeste de l'application


<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false"></meta-data>


OR

Configuration directement dans l'application /Gardez à l'esprit que lorsque vous définissez la valeur false La nouvelle valeur ne s'applique pas tant que le prochain lancement de l'application/


FirebaseCrashlytics.getInstance//.setCrashlyticsCollectionEnabled/true/

Enzo

Confirmation de:

2020 Femme de tissu Répondre

Insérez le code ci-dessous dans la classe d'application et appelez la méthode
setCrashlyticsState

De l'application onCreate. Vous pouvez également ajouter des identificateurs de périphérique de test dans
debugDevices

HashSet, Pour que vos appareils personnels puissent être ignorés même lors de l'assemblage en mode de libération.

Noter. ID de périphérique retourné
Settings.Secure.getString/getContext//.getContentResolver//, Settings.Secure.ANDROID_ID/;

, ne pas

Garanti

unique ou constant /Il peut changer lors de la réinitialisation des paramètres d'usine ou manuellement sur le périphérique root./. Mais cela devrait être assez bon.


private final HashSet<string> debugDevices = new HashSet<string>/Arrays.asList/"6a3d5c2bae3fd32c"//;

private boolean isDebugDevice/String deviceId/ {
return debugDevices.contains/deviceId/;
}

private void setCrashlyticsState// {
@SuppressLint/"HardwareIds"/
String deviceId = Settings.Secure.getString/getContext//.getContentResolver//, Settings.Secure.ANDROID_ID/;
if /BuildConfig.DEBUG || isDebugDevice/deviceId// {
Log.v/"DeviceId", deviceId/;
FirebaseCrashlytics.getInstance//.setCrashlyticsCollectionEnabled/false/;
}
}


vérifie ça BuildConfig. regarde la bonne classe BuildConfig. Il existe souvent plusieurs options et le problème peut être tiré.
</string></string>

Pour répondre aux questions, connectez-vous ou registre