如何在BuildConfig.DEBUG
旗帜上考虑can't rely来区分Android开发中的发布和调试版本?
我正在使用带有Gradle的Android Studio,并且更喜欢使用Gradle任务生成发布/调试版本,我还需要它来在TeamCity上生成这些版本。
例如,我需要使用不同的String
值进行发布和调试。我要做的是将它们分别存储在main
和debug
文件夹中,以便根据构建选择合适的文件夹。这有点好,但是如果我需要在flag
中设置一个if/else
来决定走哪条路呢?
答案 0 :(得分:0)
添加build.gradle
后缀以调试版本
android {
signingConfigs {
buildTypes {
debug {
versionNameSuffix = "-DEBUG"
}
}
}
}
然后在运行时检查版本名称:
PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
mBuildVersion = pInfo.versionName;
if(mBuildVersion.contains("DEBUG")){
// DEBUG
}
答案 1 :(得分:0)
您可以通过类似的
检查您的应用程序是否可以调试boolean isDebuggable = (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE));
答案 2 :(得分:0)
您可以检查是否已进行模糊处理:
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保留这个班级的名字;不要做,检查就行了。