繁体   English   中英

在Android应用程序中获取产品风味或构建变体

[英]Get product flavor or build variant in an android app

我有一个Android应用程序,在我的build.gradle文件中配置了许多不同的产品风格,例如

productFlavors {
    someFlavor {}
    anotherFlavor {}
}

在我的应用程序代码中,我希望能够获得当前编译的flavor(或构建变体)的名称。 一个解决方案是:

productFlavors {
    someFlavor {
        buildConfig "public static final String PRODUCT_FLAVOR = \"someFlavor\";"
    }
    anotherFlavor {
        buildConfig "public static final String PRODUCT_FLAVOR = \"anotherFlavor\";"
    }
}

然后在我的Android应用程序中调用BuildConfig.PRODUCT_FLAVOR

有什么方法可以让我自动做到这一点吗? 或者是否有一些其他API在android我可以用来获取产品风味名称?

编辑:现在从插件版本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包含使用的构建类型的名称。

如果您有一个风味维度,那么您只有FLAVOR常量。

这是目前唯一的方法。

你可以做的一件事是自动化它。 所以你可以这样做:

 android { productFlavors.whenObjectAdded { flavor -> flavor.buildConfig "public static final String PRODUCT_FLAVOR = \\"${flavor.name}\\";" } // your normal config here. } 

这样您就不必为每种风味手动执行此操作。

公认的解决方案非常棒。 对于某些情况,替代方案可能有用。

你可以添加一个配置文件,比如说'appconfig.java'到你的productFlavor特定的源文件夹,即src/<productflavor>/java/<packagename>/Appconfig.java ; 然后,您可以在您的应用程序中使用Appconfig.PRODUCT_FLAVOR 编译器会保持诚实,并确保为所有风格添加此功能。

就像我说的,在这种特殊情况下,接受的解决方案可能更好,因为你甚至不需要为新的productFlavors添加任何东西,但这种方法可能对其他情况有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM