Android 如果可以';不要依赖BuildConfig.DEBUG
考虑到您在Android 如果可以';不要依赖BuildConfig.DEBUG,android,android-gradle-plugin,Android,Android Gradle Plugin,考虑到您在BuildConfig.debug标志上的表现,您如何区分Android开发中的版本和调试版本 我将Android Studio与Gradle一起使用,更喜欢使用Gradle任务生成发布/调试版本,我还需要它在TeamCity上生成这些版本 例如,我需要使用不同的String值来进行发布和调试。我要做的是将它们分别存储在main和debug文件夹中,以便根据构建选择合适的文件夹。这是可以的,但是如果我需要在if/else中设置一个标志来决定走哪条路呢 在您的build.gradle中添
BuildConfig.debug
标志上的表现,您如何区分Android开发中的版本和调试版本
我将Android Studio与Gradle一起使用,更喜欢使用Gradle任务生成发布/调试版本,我还需要它在TeamCity上生成这些版本
例如,我需要使用不同的
String
值来进行发布和调试。我要做的是将它们分别存储在main
和debug
文件夹中,以便根据构建选择合适的文件夹。这是可以的,但是如果我需要在if/else
中设置一个标志来决定走哪条路呢 在您的build.gradle
中添加一个用于调试版本的后缀
android {
signingConfigs {
buildTypes {
debug {
versionNameSuffix = "-DEBUG"
}
}
}
}
然后在运行时检查版本名:
PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
mBuildVersion = pInfo.versionName;
if(mBuildVersion.contains("DEBUG")){
// DEBUG
}
您可以通过以下方式检查应用程序是否可调试
boolean isDebuggable = (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE));
您可以检查是否进行了模糊处理:
package com.example.customandroid;
public abstract class DebugBuildChecker {
public static boolean isDebugBuild() {
//Log.d("~~~","class="+DebugBuildChecker.class.getName());
return DebugBuildChecker.class.getName().endsWith(".DebugBuildChecker");
}
}
模糊处理后,类名类似于com.example.a.a
,函数将返回false。当然,可以告诉proguard保留这个类的名称;只要不这样做,检查就会起作用。那BuildConfig.BUILD\u TYPE
呢?请避免只发布代码答案。没有解释此代码的作用,因此您的答案可能会被删除。