我需要这样的东西:
从任何方法:
if(for one flavor)
do something
else
do something
我如何处理来自 java 的味道?
我需要这样的东西:
从任何方法:
if(for one flavor)
do something
else
do something
我如何处理来自 java 的味道?
您可以为风味指定文件。如果我是你,我会做这样的事情:在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
string.xml
分别为两者定义两个,并在每个中product-flavors
添加一个通用名称字符串,例如,添加1st flavor 和添加2nd flavor 。现在在方法中,获取字符串的值并相应地添加代码行。因为,对于这两种风味,字符串风味将有两个不同的值。<string name="flavor">Flavor One</string>
string.xml
<string name="flavor">Flavor Two</string>
string.xml
flavor
在 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()
谢谢你的回答@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 -> 它得到包名。有没有人可以解释这个逻辑的背后?不是很混乱吗?