Android Studio: 检查自定义构建类型是否存在

27

我正在尝试让一段代码检测BuildType,但我有点卡住了。每当我为IF语句键入代码时,它会显示:

不兼容的类型。 必需的:Boolean。 找到:java.lang.String

我本以为如果有.toString()结尾,它必须是一个字符串。

我的检测代码是:

String buildtype = BuildConfig.BUILD_TYPE.toString();
if (buildtype = "admin") {
    //Do some admin stuff here.
}

我已经在我的build.gradle文件中设置了管理员BuildType,如下所示:

admin {
        debuggable true
        jniDebuggable false
        renderscriptDebuggable false
        minifyEnabled false
        zipAlignEnabled true
    }

非常感谢您的帮助。

谢谢!


3
“=”是赋值运算符,这就是为什么它告诉你需要布尔值而不是字符串的原因,因为你将buildtype赋值为“admin”,而不是检查buildtype是否等于“admin””。要检查(引用)相等性,请使用==。但是,不应该使用==来比较字符串。对于此操作,请改用someString.equals(...)`。 - Jonas Czech
3个回答

24
如果您想选择自定义的构建类型而不是产品风味,则可以使用以下内容:

如果您想选择自定义构建类型而不是产品风味,可以使用以下内容:

if (BuildConfig.BUILD_TYPE.contentEquals("admin")) {
   // Do things related to the admin build type.
}

为什么你使用了contentEquals,而不是equals - user2342558

14

你可以查看你的 BuildConfig 文件。这个文件是在创建构建之后得到的。

对于你的问题。我认为你应该使用 BuildConfig.FLAVOR 而不是 BuildConfig.BUILD_TYPE。并且记住它们的类型是 String,所以不需要用 .toString() 进行转换。

最后,你应该使用字符串比较方法。因此,你的代码应该是

if (BuildConfig.FLAVOR.contentEquals("admin")) {
    //Do some admin stuff here.
}

非常感谢。这回答了我的问题。 - Cowboy433
快速问题,这将检测产品风味还是构建类型。谢谢。 - Cowboy433
这要看情况。查看你的 build.gradle 文件。如果 adminbuildTypes 中,它将被检测为 BuildTypes;如果 adminproductFlavors 中,它将被检测为 Flavors。 - Pi Vincii
好的,非常感谢! - Cowboy433
对我来说,BuildConfig.BUILD_TYPE 精确返回构建的名称。而 BuildConfig.FLAVOR 返回一个空字符串。 - Edhar Khimich
@PiVincii,为什么你使用了contentEquals而不是equals - user2342558

2

Suppose you've

android {

buildTypes {
    release {
    
    }
    debug {

    }
    canary {

    }
    beta {

    }
}

在代码中,您可以检查类似以下的内容:

import com.yourpackagename.BuildConfig

if (BuildConfig.BUILD_TYPE == "canary") {
        Log.d("Build Type ","I'm canary")
    } 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接