我有一个Android应用程序,在我的build.gradle文件中配置了许多不同的产品风格,例如
productFlavors {
someFlavor {}
anotherFlavor {}
}
Run Code Online (Sandbox Code Playgroud)
在我的应用程序代码中,我希望能够获得当前编译的flavor(或构建变体)的名称.一个解决方案是:
productFlavors {
someFlavor {
buildConfig "public static final String PRODUCT_FLAVOR = \"someFlavor\";"
}
anotherFlavor {
buildConfig "public static final String PRODUCT_FLAVOR = \"anotherFlavor\";"
}
}
Run Code Online (Sandbox Code Playgroud)
然后在我的Android应用程序调用BuildConfig.PRODUCT_FLAVOR.
有什么方法可以让我自动做到这一点吗?或者是否有一些其他API在android我可以用来获取产品风味名称?
Xav*_*het 62
编辑:现在从插件版本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";
Run Code Online (Sandbox Code Playgroud)
FLAVOR是应用了所有风味维度/组的组合风味名称.然后每个维度都可用FLAVOR_<group name>.
最后BUILD_TYPE包含使用的构建类型的名称.
如果您有一个风味维度,那么您只有FLAVOR常量.
这是目前唯一的方法.
你可以做的一件事是自动化它.所以你可以这样做:
android {
productFlavors.whenObjectAdded { flavor ->
flavor.buildConfig "public static final String PRODUCT_FLAVOR = \"${flavor.name}\";"
}
// your normal config here.
}
Run Code Online (Sandbox Code Playgroud)
这样您就不必为每种风味手动执行此操作.
公认的解决方案非常棒.对于某些情况,替代方案可能有用.
您可以添加配置文件,将'Appconfig.java'添加到productFlavor特定的源文件夹即src/<productflavor>/java/<packagename>/Appconfig.java; 然后Appconfig.PRODUCT_FLAVOR,您可以在您的应用中使用.编译器会保持诚实,并确保为所有风格添加此功能.
就像我说的,在这种特殊情况下,接受的解决方案可能更好,因为你甚至不需要为新的productFlavors添加任何东西,但这种方法可能对其他情况有用.
| 归档时间: |
|
| 查看次数: |
23761 次 |
| 最近记录: |