2

我需要这样的东西:

从任何方法:

if(for one flavor)

   do something

else

   do something

我如何处理来自 java 的味道?

4

4 回答 4

1

您可以为风味指定文件。如果我是你,我会做这样的事情:在main/java/your/package源代码中放置一个文件,让我们调用它CustomClass.java。它包含如下内容:

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

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

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

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

在此之后你只需要创造一种新的风味。在你的 gradle 中添加这个:

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

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

于 2016-03-28T14:05:16.970 回答
0

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

于 2016-04-11T14:40:11.663 回答
0

在 productFlavor 的 something() 中创建类:

主要公共来源:

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

风味 1 来源:

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

风味2来源:

flavor\java\com.exmaple.test\class.java - > something()
于 2016-06-10T19:00:04.703 回答
0

谢谢你的回答@GaborNovak

事实上,我为普通类搜索了类似的东西:

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

我认为这有点令人困惑。当我编写 getApplicationContext.getpackageName -> 时,它会在构建 gradle 中定义所选风味的 application_id。当我写 BuildConfig.APPLICATION_ID -> 它得到包名。有没有人可以解释这个逻辑的背后?不是很混乱吗?

于 2016-04-11T14:03:28.233 回答