如果您不能依赖BuildConfig.DEBUG,如何区分发布和调试版本

时间:2014-10-28 09:41:45

标签: android android-gradle

如何在BuildConfig.DEBUG旗帜上考虑can't rely来区分Android开发中的发布和调试版本?

我正在使用带有Gradle的Android Studio,并且更喜欢使用Gradle任务生成发布/调试版本,我还需要它来在TeamCity上生成这些版本。

例如,我需要使用不同的String值进行发布和调试。我要做的是将它们分别存储在maindebug文件夹中,以便根据构建选择合适的文件夹。这有点好,但是如果我需要在flag中设置一个if/else来决定走哪条路呢?

3 个答案:

答案 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保留这个班级的名字;不要做,检查就行了。