在android应用程序中获取产品风味或构build变体
我有一个Android应用程序,在我的build.gradle文件中configuration了许多不同的产品口味
productFlavors { someFlavor {} anotherFlavor {} }
在我的应用程序代码中,我希望能够获得当前编译的风格(或构build变体)的名称。 一个解决scheme是:
productFlavors { someFlavor { buildConfig "public static final String PRODUCT_FLAVOR = \"someFlavor\";" } anotherFlavor { buildConfig "public static final String PRODUCT_FLAVOR = \"anotherFlavor\";" } }
然后在我的Android应用程序调用BuildConfig.PRODUCT_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_<group name>
。
最后, BUILD_TYPE
包含使用的构buildtypes的名称。
如果你有一个味道维度,那么你只有FLAVOR
常量。
这是现在唯一的方法。
你可以做的一件事是自动化。 所以你可以做这样的事情:
android { productFlavors.whenObjectAdded { flavor -> flavor.buildConfig "public static final String PRODUCT_FLAVOR = \"${flavor.name}\";" } // your normal config here. }
这样你就不必手动为每种口味做。
接受的解决scheme是真棒。 对于某些情况,备用可能是有用的。
你可以添加一个configuration文件,说'Appconfig.java'到你的productFlavor特定的源文件夹,例如src/<productflavor>/java/<packagename>/Appconfig.java
; 您可以在应用程序中使用Appconfig.PRODUCT_FLAVOR
。 编译器会保持你的诚实,并确保你添加这个所有的味道。
就像我说的,在这个特殊情况下,接受的解决scheme可能会更好,因为您甚至不需要为新产品Flavors添加任何东西,但是这种方法可能对其他情况有用。
- 检测片段内的ViewPager选项卡更改
- 如何在SnackBar中使用setDuration()方法(Androiddevise支持库)
- 访问networking状态(ACCESS_NETWORK_STATE)和WIFI状态(ACCESS_WIFI_STATE)权限有什么区别?
- 将Android手机应用程序locking为肖像模式
- Android 4.0,操作栏上的文字从不显示
- 创build一个新的颜色drawable
- 即使应用程序从最近的应用程序中清除,仍然继续服
- 为什么在Android棒棒糖中用Notification.Builder.setSmallIcon设置的图标显示为白色方块?
- 完成所有以前的活动