我需要在android studio中为应用程序创建一个演示风格.在我的应用程序级gradle文件中,我创建了另一种名为demo的风格,当然还有默认的风味.它看起来像这样:
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.example.uen229.myapplication"
minSdkVersion 17
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
demo {
applicationId "com.buildsystemexample.app.demo"
versionName "1.0-demo"
}
full {
applicationId "com.buildsystemexample.app.full"
versionName "1.0-full"
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
}
这是我的项目结构的图像,我在其中创建了一个demo flavor目录:
现在谈到这个问题.我有两个名为Hello.java的类.两者都有各自的风味和印刷不同的东西.我现在给你看两个文件:
import android.util.Log;
/** this is from demo flavor directory**/
public class Hello {
Hello(){
Log.v("","hello from demo");
}
public String getName();
return "im from demo";
};
}
这是另一个你好:
package com.example.uen229.myapplication;
import android.util.Log;
/** this is from full or main flavor directory**/
public class Hello {
Hello(){
Log.v("", "hello from main");
}
public String getName(){
return "im from main";
};
}
注意第一个hello.java如何没有包,即使我有一个IDE不会编译的包.看这张照片:
现在最后让我们看看mainActivity.java,看看当我切换构建变体时,它只为"im from main"干杯,但如果我使用demoDebug构建版本,我需要它来打印'im from demo'.如果我切换构建变种到demoDebug它仍然打印"im from main".任何人都可以帮忙:
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Hello h = new Hello();
Toast.makeText(this, h.getName(), Toast.LENGTH_LONG).show();
}
}
UPDATE
从stackoverflow它说:
如果你想在两种口味中拥有相同类的不同版本,你需要在两种口味中创建它.
src/flavor1/java/com/foo/A.java
src/flavor2/java/com/foo/A.java
然后你的代码src/main/java可以做:
import com.foo.A
根据所选的风味,使用正确的版本com.foo.A.
这是我想用Hello类完成的