在android应用程序中获取产品风格或构建变体
我有一个android应用程序,在build.gradle文件中配置了许多不同的产品风格在android应用程序中获取产品风格或构建变体,android,gradle,Android,Gradle,我有一个android应用程序,在build.gradle文件中配置了许多不同的产品风格 productFlavors { someFlavor {} anotherFlavor {} } 在我的应用程序代码中,我希望能够掌握当前编译的风格(或构建变体)的名称。一个解决方案是: productFlavors { someFlavor { buildConfig "public static final String PRODUCT_FLAVOR = \"
productFlavors {
someFlavor {}
anotherFlavor {}
}
在我的应用程序代码中,我希望能够掌握当前编译的风格(或构建变体)的名称。一个解决方案是:
productFlavors {
someFlavor {
buildConfig "public static final String PRODUCT_FLAVOR = \"someFlavor\";"
}
anotherFlavor {
buildConfig "public static final String PRODUCT_FLAVOR = \"anotherFlavor\";"
}
}
然后在我的android应用程序中调用BuildConfig.PRODUCT\u FLAVOR
有什么办法可以让gradle自动完成吗?或者安卓系统中是否有其他API可用于获取产品风味名称?编辑:现在从插件的0.7版开始自动完成此操作<代码>BuildConfig.java将包含
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "f1Fa";
public static final String FLAVOR_group1 = "f1";
public static final String FLAVOR_group2 = "fa";
FLAVOR
是应用了所有风味维度/组的组合风味名称。然后每个维度都可以作为FLAVOR\uu
使用
最后,BUILD\u TYPE
包含所用构建类型的名称
如果只有一个flavor维度,那么只有flavor
常量
这是目前唯一的办法
你可以做的一件事就是让它自动化。所以你可以这样做:
android {
productFlavors.whenObjectAdded { flavor ->
flavor.buildConfig "public static final String PRODUCT_FLAVOR = \"${flavor.name}\";"
}
// your normal config here.
}
这样,您就不必为每种口味手动执行此操作。公认的解决方案非常棒。但在某些情况下,备选方案可能有用 您可以向productFlavor特定的源文件夹添加一个配置文件,比如“Appconfig.java”,即
src//java//Appconfig.java
;然后,您可以在应用程序中使用Appconfig.PRODUCT\u FLAVOR
。编译器会让你保持诚实,并确保你为所有口味添加这个
正如我所说,在这种特殊情况下,接受的解决方案可能更好,因为您甚至不需要为新的productFlavors添加任何内容,但这种方法可能对其他情况有用。这正是我想要的-谢谢。我发现我需要使用whenObjectAdded而不是whenAdded,所以我编辑了您的答案,但基本上这是正确的。非常感谢您更新您的答案-非常有用!我想在build.gradle中获取所选的构建变量,但whenObjectAdded对我不起作用。以下是我正在做的:android{productFlavors{flavor1{}flavor2{}productFlavors.whenObjectAdded{flavor->println'当添加对象时:'+flavor}构建类型{调试{}发布{}}}我想从我的包中获得一个付费的apk。但是我的口味框是空的,知道吗?为什么这个答案的一半被划掉了,没有任何解释或更新的代码?