如何从普通的java类调用不同的产品风格的不同方法

时间:2016-03-28 13:51:48

标签: android android-productflavors android-build-flavors

我需要这样的东西:

从任何方法:

if(for one flavor)

   do something

else

   do something

如何处理java的风格?

4 个答案:

答案 0 :(得分:1)

您可以指定flavor的文件。如果我是你,我会做这样的事情: 将文件放入main/java/your/package来源,我们称之为CustomClass.java。 它包含这样的内容:

public class CustomClass {
   public static void myCustomMethod() {
      //Do something here...
   }
}

之后,您可以在flavor名称文件夹(主文件夹旁边)中创建此类的特定于风味的版本。 所以在这里放一个CustomClass.java:your_flavor_name/java/your/package 并做点别的事情:

  public class CustomClass {
       public static void myCustomMethod() {
          //Do something here for that specific flavor!
       }
    }

构建将合并文件并使用特定的文件,如果没有找到特定于风味的文件,则使用主版本。您可以将它用于drawable和其他所有文件(资产......)。

此后你只需要创建一个新的味道。在你的gradle中添加:

productFlavors {
        your_flavor_name {
            applicationId "your.package"
        }
}

此处有更多内容:http://developer.android.com/tools/building/configuring-gradle.html

答案 1 :(得分:0)

感谢您的回答@GaborNovak

事实上,我为普通班搜索了类似的内容:

if("flavor-name".equals(getApplicationContext().getPackageName())){
                myIntent.setClass(thisClass.this, nextClass.class);
            }
            else {
                myIntent.setClass(thisClass.this, nextClass.class);
            }

我认为这有点令人困惑。当我写getApplicationContext.getpackageName - >它在构建gradle中定义了所选flavor的application_id。 当我编写BuildConfig.APPLICATION_ID - >它得到包名。有没有人可以解释这种逻辑?这不是很困惑吗?

答案 2 :(得分:0)

分别为两个newItem定义两个string.xml,并在每个product-flavors中添加一个共同名称字符串,例如,在第一种风格的<string name="flavor">Flavor One</string>中添加string.xml并添加第<string name="flavor">Flavor Two</string>string.xml flavor。现在在方法中,获取字符串{{1}}的值并相应地添加代码行。 因为,对于这两种口味,字符串风味将具有两个不同的值。

答案 3 :(得分:0)

在productFlavor中的something()中创建类:

主要共同来源:

main\java\com.exmaple.test\class.java - > something()

Flavor1来源:

flavor\java\com.exmaple.test\class.java - > something()

Flavor2来源:

flavor\java\com.exmaple.test\class.java - > something()