android studio文件风格,Android Studio构建风格 - 如何以不同的风格获得相同的源文件...

该博客讲述了如何在Android Studio中为应用创建演示风格,并管理不同风味的类。作者创建了名为`demo`和`full`的风味,每个风味有自己的Hello.java类,但遇到了IDE无法编译包的问题。更新提到,要在不同风味中使用不同版本的类,需要在相应风味目录下创建类,并在主代码中导入相应的包。然而,作者在切换构建变体时,Hello类没有按预期加载正确的风味版本。
摘要由CSDN通过智能技术生成

我需要在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目录:

ac77057bc1acfe87dbf9152180b24d04.png

现在谈到这个问题.我有两个名为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不会编译的包.看这张照片:

2b152eca1edb576aa3e95d7e11436a3e.png

现在最后让我们看看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类完成的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值