如何在代码中检测到我处于发布模式或调试模式?

推荐答案

最简单也是最好的长期解决方案是使用BuildConfig.DEBUG.这是一个boolean值,对于调试版本,该值将为true,否则为false:

if (BuildConfig.DEBUG) {
  // do something for a debug build
}

有报道称,这个值在基于Eclipse的构建中不是100%可靠的,尽管我个人没有遇到问题,所以我不能说它到底有多大的问题.

如果您使用的是Android Studio,或者从命令行使用Gradle,您可以将自己的内容添加到BuildConfig,或者调整debugrelease构建类型,以帮助在运行时区分这些情况.

非法参数的解决方案基于 list 中android:debuggable标志的值.如果这就是您希望区分"调试"构建和"发布"构建的方式,那么根据定义,这是最好的解决方案.然而,请记住,展望future ,debuggable标志实际上是一个独立的概念,不同于Gradle/Android Studio认为的"调试"版本.任何生成类型都可以 Select 将debuggable标志设置为对该开发人员和该生成类型有意义的任何值.

Android相关问答推荐

Jetpack Compose中的导航找不到NavHost类的名称为:startDestination";的参数

RemoteActivityHelper.startRemoteActivity不适用于Android Wear OS 4模拟器

Jetpack Compose和Android Studio中的普通设计工具有什么不同?

如何从sqlite数据库中检索数据到碎片android?

Jetpack Compose:带芯片的Textfield

如何在DownloadManager Android中显示ProgressBar和Complete Listener

如何使用react native下载android中/data/data/[应用程序包名称文件夹]/files中的文件

Android 导航 - 定义参数

当我想使用例如 material3 时,为什么我需要添加对 material 的依赖?底部导航?

setContentView() 方法的签名

将 CircularProgressIndicator 添加到按钮而不增加其高度

通过 adb 解压并重新安装后 Android 应用程序崩溃

Android Studio:按下前缀键:切换 Logcat 格式

在事件中使用 Context/Toast 时不需要的重组 - Jetpack Compose

如何只允许拖动 BottomSheetScaffold 中 BottomContent 的 SheetPeek 的一部分?

LazyColumn 项目,隐式接收器无法在此上下文中调用单元

如何放置在柱子的角落(底端)

无法解析依赖项'com.github.smarteist:autoimageslider:1.4.0-appcompat'

Kotlin Coroutines Dispatchers.IO 没有创建预期的线程

更新应用程序是否会取消对应用程序特定文件的权限?