如何检测我处于发布模式或Android模式下的调试模式?检测我是否处于发布或调试模式下android
回答
最简单的发布,以及最佳的长期解决办法,就是用BuildConfig.DEBUG
。这是一个boolean
值,这将是true
的调试版本,false
否则:
if (BuildConfig.DEBUG) {
// do something for a debug build
}
有报道称,这个值是不是100%可靠的基于Eclipse的版本,虽然我个人没有遇到问题,所以我不能说它真的有多少问题。
如果你使用过Android Studio,或者如果您使用的摇篮在命令行中,你可以添加你自己的东西来BuildConfig
或以其他方式调整的debug
和release
构建类型,以帮助在运行时区分这些情况。
来自非法参数的解决方案基于清单中android:debuggable
标志的值。如果您希望将“调试”构建与“发布”构建区分开来,那么根据定义,这是最佳解决方案。但是,请记住,未来,debuggable
标志实际上是一个独立于Gradle/Android Studio认为是“调试”版本的概念。任何构建类型都可以选择将debuggable
标志设置为适合该开发人员和该构建类型的任何值。
尝试以下操作:
boolean isDebuggable = (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE));
它是由bundells取自here
无论图书馆项目或应用程序项目如何,这个答案都适用于所有情况。 –
由于混合评论约BuildConfig.DEBUG
,我用下面的禁用在调试模式下crashlytics(和分析):
更新/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
重命名为任何你想要的。我喜欢这种方法,因为我可以看到配置中的标志,并且我可以控制标志。
你不应该单独调用Crashlytics和Answers。只需使用: Fabric.with(this,new Crashlytics()); 包括Crashlytics和答案。 –
谢谢,@MikeBonnell,我所做的代码更改为示例代码 –
我不明白这是怎么使用BuildConfig.DEBUG任何不同 - 如果你只为那么你的调试版本BuildConfig.DEBUG和BuildConfig设置BuildConfig.ENABLE_CRASHLYTICS。 ENABLE_CRASHLYTICS将始终具有相同的值,对吗? – k2col
或者,你可以使用区分BuildConfig.BUILD_TYPE;
如果您正在运行调试版本 BuildConfig.BUILD_TYPE.equals("debug");
返回true。而对于发布版本BuildConfig.BUILD_TYPE.equals("release");
则返回true。
这是正确的答案。返回“release”,而BuildConfig.DEBUG总是返回“true”。 –
我正在使用此解决方案以防万一找出我的应用程序正在调试版本上运行。
if (BuildConfig.BUILD_TYPE.equals("Debug")){
//Do something
}
请在您的回答中添加说明。这比仅仅一段代码更有帮助。 – Billa
- 1. 调试模式或发布模式
- 2. .fsx文件是否在调试或发布模式下交互式编译?
- 3. 检查Ember是否处于测试模式
- 4. 告诉我们,我们是否处于调试模式
- 5. 在运行时检测应用程序是否处于发布模式
- 6. 检查PowerShell中是否处于调试模式
- 7. 无法发布我的Android Unity应用程序:APK处于调试模式
- 8. Android:发布和测试模式?
- 9. 在发布模式下调试符号
- 10. 在发布模式下调试
- 11. 检查Android模拟器是否处于无声振铃模式或不是
- 12. 如何测试Django是否在调试模式下运行?
- 13. 是否可以在调试模式下运行单元测试?
- 14. 如何检查我是否处于Web应用程序的调试或发布版本中?
- 15. 在发布模式下进行调试或更改_iterator_debug_level?
- 16. Android清单中调试或发布模式的单独XML行
- 17. 以编程方式检测我是否处于VirtualBox无缝模式
- 18. 以调试或发布模式发布到Windows Azure
- 19. Android - google-services.json用于调试和发布模式
- 20. 发布在发布模式下,出版与调试配置
- 21. 有没有办法检测iPhone是否处于反色模式?
- 22. 检测Google地球插件是否处于街景模式
- 23. 检测iPhone是否处于飞行模式?
- 24. 如何检测iPhone是否在MonoTouch中处于静音模式
- 25. 在调试或发布模式标志下运行而不运行时调试
- 26. 如何测试wcf是否真的处于流模式?
- 27. 如何测试Magento商店是否处于“演示模式”
- 28. 检测设备是否处于静默模式或不在IOS 5中?
- 29. 如何检查IIS是否处于32位或64位模式
- 30. 布尔值在调试模式下比在发布模式下有所不同
'BuildConfig'位于您的应用程序包中,例如'import com.mycompany.myapp.BuildConfig;' –
由于AndroiStudio中的一个错误,它不再工作,即使在DEBUG模式下它也总是为false – user387184
@ user387184:在Android Studio 1.2.2中,我得到了'public static final boolean DEBUG = Boolean.parseBoolean(“true”);'用于调试版本。虽然这是一个奇怪的方式来设置'DEBUG'为'true',它应该工作。如果您在1.3.0版本的测试版本中看到了这一点,或者您有1.2.2的可重复测试用例,请[提出问题](http://b.android.com)。我没有看到任何报告此问题的未解决问题。 – CommonsWare