Com*_*are 710
最简单,最好的长期解决方案是使用BuildConfig.DEBUG
.这是一个boolean
,这将是价值true
的调试版本,false
否则:
if (BuildConfig.DEBUG) {
// do something for a debug build
}
Run Code Online (Sandbox Code Playgroud)
有报道说这个值在基于Eclipse的构建中并非100%可靠,尽管我个人没有遇到过问题,所以我不能说它究竟有多少问题.
如果您使用的是Android Studio,或者从命令行使用Gradle,则可以添加自己的内容BuildConfig
或以其他方式调整debug
和release
构建类型,以帮助在运行时区分这些情况.
Illegal Argument的解决方案基于android:debuggable
清单中标志的值.如果您希望区分"调试"构建和"发布"构建,那么根据定义,这是最佳解决方案.但是,请记住,未来,debuggable
旗帜实际上是Gradle/Android Studio认为"调试"构建的独立概念.任何构建类型都可以选择将debuggable
标志设置为对该开发人员和该构建类型有意义的任何值.
Ill*_*ent 55
请尝试以下方法:
boolean isDebuggable = ( 0 != ( getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE ) );
Run Code Online (Sandbox Code Playgroud)
科特林:
val isDebuggable = 0 != applicationInfo.flags and ApplicationInfo.FLAG_DEBUGGABLE
Run Code Online (Sandbox Code Playgroud)
它来自这里的 bundells帖子
Van*_*Jr. 49
是的,您使用时没有问题:
if (BuildConfig.DEBUG) {
//It's not a release version.
}
Run Code Online (Sandbox Code Playgroud)
除非您导入错误的BuildConfig类.确保引用项目的BuildConfig类,而不是任何依赖库.
Som*_*ere 33
由于混合评论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'
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,在您的代码中,您将检测到ENABLE_CRASHLYTICS
标志,如下所示:
if (BuildConfig.ENABLE_CRASHLYTICS)
{
// enable crashlytics and answers (Crashlytics by default includes Answers)
Fabric.with(this, new Crashlytics());
}
Run Code Online (Sandbox Code Playgroud)
在您的应用中使用相同的概念,并重命名ENABLE_CRASHLYTICS
为您想要的任何内容.我喜欢这种方法,因为我可以看到配置中的标志,我可以控制标志.
Pru*_*hvi 11
或者,您可以使用BuildConfig.BUILD_TYPE区分;
如果您正在运行debug build,则
BuildConfig.BUILD_TYPE.equals("debug");
返回true.并且对于发布版本BuildConfig.BUILD_TYPE.equals("release");
返回true.
我正在使用此解决方案,以防发现我的应用程序正在调试版本上运行。
if (BuildConfig.BUILD_TYPE.equals("debug")){
//Do something
}
Run Code Online (Sandbox Code Playgroud)
您需要在 gradle/kts 文件中使用它,以便为您生成 BuildConfig 文件:
buildFeatures {
buildConfig = true
}
Run Code Online (Sandbox Code Playgroud)
BuildConfig.DEBUG
然后,到达属于您的应用程序包名称的字段。
与此类似但不太推荐的方法(因为它在创建发布版本时不会删除代码)是检查应用程序是否可调试:
val isDebuggable = context.applicationInfo.flags and ApplicationInfo.FLAG_DEBUGGABLE != 0
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
111469 次 |
最近记录: |