gpt4 book ai didi

Android Studio 构建风格 - 如何在不同风格中拥有相同的源文件

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:23:03 27 4
gpt4 key购买 nike

我需要在 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'
}

这是我的项目结构的图像,我在其中创建了一个演示风格目录:

enter image description here

现在进入正题。我有两个名为 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 也不会编译。看看这张照片:

enter image description here

现在最后让我们看看 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();

}
}

更新

从 stackoverflow 上说:

If you want to have a different version of the same class in the two flavor you'll need to create it in both flavors.

src/flavor1/java/com/foo/A.java

src/flavor2/java/com/foo/A.java

And then your code in src/main/java can do:

import com.foo.A

depending on the flavor selected, the right version of com.foo.A is used.

这就是我想用 Hello 类完成的

最佳答案

我认为你不能在主 flavor 和其他 flavor 上有相同的类。您应该只创建另一种风格,然后将您的 Hello 类从主要风格移至该新风格。此规则仅适用于 .java 文件。我的意思是你可以有一个主要风格的 xml 文件和你自定义风格的另一个版本,但你不能用 java 文件做到这一点。

here是带有进一步解释的有用链接。

关于Android Studio 构建风格 - 如何在不同风格中拥有相同的源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31016283/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com