Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如果可以';不要依赖BuildConfig.DEBUG_Android_Android Gradle Plugin - Fatal编程技术网

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
呢?请避免只发布代码答案。没有解释此代码的作用,因此您的答案可能会被删除。