Wie kann ich in meinem Code erkennen, ob ich im Release-Modus oder Debug-Modus bin?
Antworten
Zu viele Anzeigen?Die einfachste und beste langfristige Lösung ist die Verwendung von BuildConfig.DEBUG
. Dies ist ein boolean
-Wert, der für ein Debug-Build true
und sonst false
ist:
if (BuildConfig.DEBUG) {
// etwas für einen Debug-Build machen
}
Es gab Berichte, dass dieser Wert nicht zu 100 % zuverlässig ist bei Eclipse-basierten Builds, obwohl ich persönlich kein Problem damit hatte, also kann ich nicht sagen, wie groß das Problem wirklich ist.
Wenn Sie Android Studio verwenden oder Gradle von der Kommandozeile aus führen, können Sie Ihre eigenen Änderungen an BuildConfig
hinzufügen oder anderweitig die debug
und release
Build-Typen anpassen, um diese Situationen zur Laufzeit zu unterscheiden.
Die Lösung von Illegal Argument basiert auf dem Wert des android:debuggable
-Flags im Manifest. Wenn dies ist, wie Sie einen "debug"-Build von einem "release"-Build unterscheiden möchten, dann ist das definitionsgemäß die beste Lösung. Beachten Sie jedoch, dass das debuggable
-Flag in Zukunft wirklich ein unabhängiges Konzept davon ist, was Gradle/Android Studio als "debug"-Build betrachten. Jeder Build-Typ kann sich dafür entscheiden, das debuggable
-Flag auf einen Wert zu setzen, der für diesen Entwickler und diesen Build-Typ sinnvoll ist.
Versuchen Sie es mit dem folgenden:
boolean isDebuggable = ( 0 != ( getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE ) );
Kotlin:
val isDebuggable = 0 != applicationInfo.flags and ApplicationInfo.FLAG_DEBUGGABLE
Es stammt aus dem Beitrag von bundells von hier
Ja, Sie werden keine Probleme haben mit der Verwendung von:
if (BuildConfig.DEBUG) {
//Es handelt sich nicht um eine Release-Version.
}
Es sei denn, Sie importieren die falsche BuildConfig-Klasse. Stellen Sie sicher, dass Sie die BuildConfig-Klasse Ihres Projekts referenzieren und nicht aus einer Ihrer Abhängigkeitsbibliotheken.
Aufgrund der gemischten Kommentare zu BuildConfig.DEBUG
habe ich folgendes verwendet, um Crashlytics (und Analytics) im Debug-Modus zu deaktivieren:
Update /app/build.gradle
android {
compileSdkVersion 25
buildToolsVersion "25.0.1"
defaultConfig {
applicationId "deine.tolle.app"
minSdkVersion 16
targetSdkVersion 25
versionCode 100
versionName "1.0.0"
buildConfigField 'boolean', 'ENABLE_CRASHLYTICS', 'true'
}
buildTypes {
debug {
debuggable true
minifyEnabled false
buildConfigField 'boolean', 'ENABLE_CRASHLYTICS', 'false'
}
release {
debuggable false
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dann prüfen Sie in Ihrem Code die ENABLE_CRASHLYTICS
-Flagge wie folgt:
if (BuildConfig.ENABLE_CRASHLYTICS)
{
// Crashlytics und Answers aktivieren (Crashlytics enthält standardmäßig Answers)
Fabric.with(this, new Crashlytics());
}
Verwenden Sie dasselbe Konzept in Ihrer App und benennen Sie ENABLE_CRASHLYTICS
wie gewünscht um. Ich mag diesen Ansatz, da ich die Flagge in der Konfiguration sehen und steuern kann.
- See previous answers
- Weitere Antworten anzeigen