如何在代码中检测我处于发布模式还是调试模式?
当前回答
确保您导入了正确的BuildConfig类 是的,你将没有问题使用:
if (BuildConfig.DEBUG) {
//It's not a release version.
}
其他回答
是的,你将没有问题使用:
if (BuildConfig.DEBUG) {
//It's not a release version.
}
除非您导入了错误的BuildConfig类。确保您引用的是项目的BuildConfig类,而不是来自任何依赖库。
由于关于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重命名为任何你想要的。我喜欢这种方法,因为我可以在配置中看到标志,并且可以控制标志。
试试下面的方法:
boolean isDebuggable = ( 0 != ( getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE ) );
科特林:
val isDebuggable = 0 != applicationInfo.flags and ApplicationInfo.FLAG_DEBUGGABLE
这是从这里的邦德尔邮局拍下来的
我正在使用这种解决方案,以防发现我的应用程序正在调试版本上运行。
if (BuildConfig.BUILD_TYPE.equals("debug")){
//Do something
}
if (BuildConfig.DEBUG) {
}
这对我很有用
推荐文章
- BottomSheetDialogFragment的圆角
- 在应用程序启动时出现“无法获得BatchedBridge,请确保您的bundle被正确打包”的错误
- 我如何改变默认对话框按钮的文本颜色在安卓5
- 更改单选按钮的圆圈颜色
- 如何在android中复制一个文件?
- adb找不到我的设备/手机(MacOS X)
- 如何在新的材质主题中改变背面箭头的颜色?
- androidviewpager与底部点
- 相同的导航抽屉在不同的活动
- 如何从视图中获得托管活动?
- 单一的TextView与多种颜色的文本
- 如何在非活动类(LocationManager)中使用getSystemService ?
- 在清单中注册应用程序类?
- Android:从数组中编程创建旋转器
- Android命令行工具sdkmanager总是显示:警告:无法创建设置