如何在代码中检测我处于发布模式还是调试模式?
当前回答
由于关于BuildConfig的混合评论。调试,我使用以下方法在调试模式下禁用崩溃分析(和分析):
更新/ app / build.gradle
android {
compileSdkVersion 25
buildToolsVersion "25.0.1"
defaultConfig {
applicationId "your.awesome.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'
}
}
}
然后,在代码中检测ENABLE_CRASHLYTICS标志,如下所示:
if (BuildConfig.ENABLE_CRASHLYTICS)
{
// enable crashlytics and answers (Crashlytics by default includes Answers)
Fabric.with(this, new Crashlytics());
}
在你的应用中使用相同的概念,并将ENABLE_CRASHLYTICS重命名为任何你想要的。我喜欢这种方法,因为我可以在配置中看到标志,并且可以控制标志。
其他回答
构建。IS_DEBUGGABLE也可以。它来自于"ro。debuggable"
确保您导入了正确的BuildConfig类 是的,你将没有问题使用:
if (BuildConfig.DEBUG) {
//It's not a release version.
}
由于关于BuildConfig的混合评论。调试,我使用以下方法在调试模式下禁用崩溃分析(和分析):
更新/ app / build.gradle
android {
compileSdkVersion 25
buildToolsVersion "25.0.1"
defaultConfig {
applicationId "your.awesome.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'
}
}
}
然后,在代码中检测ENABLE_CRASHLYTICS标志,如下所示:
if (BuildConfig.ENABLE_CRASHLYTICS)
{
// enable crashlytics and answers (Crashlytics by default includes Answers)
Fabric.with(this, new Crashlytics());
}
在你的应用中使用相同的概念,并将ENABLE_CRASHLYTICS重命名为任何你想要的。我喜欢这种方法,因为我可以在配置中看到标志,并且可以控制标志。
最简单、最好的长期解决方案是使用BuildConfig.DEBUG。这是一个布尔值,调试版本为真,否则为假:
if (BuildConfig.DEBUG) {
// do something for a debug build
}
有报道说,这个值在基于eclipse的构建中不是100%可靠的,尽管我个人没有遇到过问题,所以我不能说它到底有多大的问题。
如果你正在使用Android Studio,或者如果你在命令行中使用Gradle,你可以在BuildConfig中添加你自己的东西,或者调整调试和发布构建类型,以帮助在运行时区分这些情况。
The solution from Illegal Argument is based on the value of the android:debuggable flag in the manifest. If that is how you wish to distinguish a "debug" build from a "release" build, then by definition, that's the best solution. However, bear in mind that going forward, the debuggable flag is really an independent concept from what Gradle/Android Studio consider a "debug" build to be. Any build type can elect to set the debuggable flag to whatever value that makes sense for that developer and for that build type.
或者,您可以使用BuildConfig.BUILD_TYPE进行区分;
如果您正在运行调试构建 BuildConfig.BUILD_TYPE.equals(“调试”);返回true。对于发布,构建BuildConfig.BUILD_TYPE.equals("release");返回true。
推荐文章
- 这是在Android中获取用户位置的好方法
- Android从左到右幻灯片动画
- 如何检索视图的维度?
- 如何改变菜单项的文本颜色在安卓?
- Android选择器和文本颜色
- 视图绑定-我如何获得包含布局的绑定?
- 在Android Studio中改变矢量资产的填充颜色
- 在构建中编写注释的语法是什么?gradle文件?
- 如何以编程方式添加按钮色调
- 用Android Studio进行调试永远停留在“等待调试器”状态
- Openssl不被视为内部或外部命令
- 无法执行dex:在Eclipse中超过GC开销限制
- 如何以编程方式将视图添加到视图
- 单击url会打开默认浏览器
- 使用Retrofit刷新OAuth令牌,而不修改所有调用