如何以编程方式获取所有Android应用程序风味名称

时间:2018-04-12 09:43:08

标签: android android-studio gradle android-gradle build.gradle

我想在活动中获取所有应用程序风味列表,我该怎么做到这一点?这就是我通过Gradle在我的应用程序中实现flavor的方式。

我只能通过BuildConfig.java类获得当前的风味。

public static final String FLAVOR = "myExamIdea";

但我希望得到所有的味道清单。下面是我的gradle文件片段。

 flavorDimensions "igen"
 productFlavors {
        myExamIdea {}
        examLeaders{}
 }

这是我的BuildConfig.java班级

public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true");
  public static final String APPLICATION_ID = "in.kpis.igen.myExamIdeaStaging";
  public static final String BUILD_TYPE = "debug";
  public static final String FLAVOR = "myExamIdeaStaging";
  public static final int VERSION_CODE = 1;
  public static final String VERSION_NAME = "1.0";
}

2 个答案:

答案 0 :(得分:0)

不幸的是,这是不可能的。没有存储在apk中的风味列表。

您可以使用apktool完全反汇编APK,并在其解压缩/解码输出中搜索风味;你甚至可以分析HEX编辑器中的原始输出,如果相信smali反汇编程序(或Manifest解码器,或其他一些)省略了一些信息。

你找不到它。

答案 1 :(得分:0)

BuildConfig.FLAVOR为您提供综合产品风味。如果你只有一个维度,那么你将获得当前的味道。如果您有多个维度,那么您将拥有多个字段,例如

BuildConfig.FLAVOUR_[dimensionname]

但是,您可以获得产品口味列表。

编辑:

myExamIdea { flavorDimension "[dimension_name]"}
examLeaders{ flavorDimension "[dimension_name]"}