Android:如何从知道枚举中设置gradle值

ant*_*ony 13 android gradle

我在开发中使用Logger库,并在Application类中配置它:

@Override
public void onCreate() {
    super.onCreate();
    sInstance = this;

    Logger.init(BuildConfig.LOGGER_TAG_NAME)
            //.setMethodCount(3)            // default 2
            //.hideThreadInfo()             // default shown
            .setLogLevel(LogLevel.NONE);  // default LogLevel.FULL
Run Code Online (Sandbox Code Playgroud)

LogLevel是一个枚举(在Logger库中).

但我想根据我的gradle构建类型自动设置日志级别; 做那样的事情:

buildTypes {

    debug {
        debuggable true

        buildConfigField "enum", "LOGGER_LEVEL", LogLevel.FULL
    }

    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

        buildConfigField "enum", "LOGGER_LEVEL", LogLevel.NONE
    }
}
Run Code Online (Sandbox Code Playgroud)

然后:

Logger.init(BuildConfig.LOGGER_TAG_NAME)
            //.setMethodCount(3)            // default 2
            //.hideThreadInfo()             // default shown
            .setLogLevel(BuildConfig.LOGGER_LEVEL);  // default LogLevel.FULL
Run Code Online (Sandbox Code Playgroud)

但它不起作用:

错误:(31,0)没有这样的属性:类没有:org.gradle.api.logging.LogLevel

它与FULL枚举值相同.

谢谢你的帮助!

Ger*_*ero 28

您必须在属性类型和值中包含包和类名:

buildTypes {
    debug {
        debuggable true
        buildConfigField "com.orhanobut.logger.LogLevel", "LOGGER_LEVEL", "com.orhanobut.logger.LogLevel.FULL"
    }
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        buildConfigField "com.orhanobut.logger.LogLevel", "LOGGER_LEVEL", "com.orhanobut.logger.LogLevel.NONE"
    }
}
Run Code Online (Sandbox Code Playgroud)