Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在一个项目中为几个应用程序创建风格_Android_Gradle_Android Productflavors - Fatal编程技术网

Android 如何在一个项目中为几个应用程序创建风格

Android 如何在一个项目中为几个应用程序创建风格,android,gradle,android-productflavors,Android,Gradle,Android Productflavors,我对project flavors的配置有问题 我想这样定义项目结构: Project |---- app | |---- build | |---- libs | |---- src | |---- aPro | |---- aFree | |---- bPro | |---- bFree | |---- cPro | |---- cFree |

我对project flavors的配置有问题

我想这样定义项目结构:

  Project
|---- app
|     |---- build
|     |---- libs
|     |---- src
|           |---- aPro
|           |---- aFree
|           |---- bPro
|           |---- bFree
|           |---- cPro
|           |---- cFree
|           |---- main
三个应用程序(功能非常相似)各有免费版和专业版,这意味着将有6个应用程序版本: -A(专业,免费) -B(专业,免费) -C(专业,免费)

例如,现在我构建项目B(免费版本),并将资源与B(专业版本)合并。当B(免费版本)中的资源丢失时,从pro版本中获取它,然后当它也丢失时,从main获取默认资源

重要的是,每个版本,例如A(免费)和A(专业版)都有一些不同的资源(例如:应用程序图标、徽标等)

事实上,我有这样的东西,但它不能像我想的那样工作

    productFlavors {
    aPro {
        applicationId "com.example.apro"
    }

    aFree {
        applicationId "com.example.afree"
    }

    bPro {
        applicationId "com.example.bpro"
    }

    bFree {
        applicationId "com.example.bfree"
    }

    cPro {
        applicationId "com.example.cpro"
    }

    cFree {
        applicationId "com.example.cfree"
    }
}

您在
build.gradle
文件中所做的操作是正确的。除了gradle文件中的gradle配置之外,您还需要在
app/src
文件夹下添加文件夹。因此,项目结构如下所示:

  Project
|---- app
|     |---- build
|     |---- libs
|     |---- src
|           |---- aPro
|           |---- aFree
|           |---- bPro
|           |---- bFree
|           |---- cPro
|           |---- cFree
|           |---- main
在主文件夹下,有您的主代码,例如函数、方法、资源

productFlavorName
文件夹下,您可以添加资源文件夹、添加应用程序图标、徽标等

然后,在Android Studio中,打开
buildvariants
选项卡(在Android Studio的左栏中,垂直),选择
buildvariants
进行调试


更多详细信息请参见。

我知道如何创建像您这样的结构,它会工作,但不是我想要的方式。您的解决方案将导致免费版和专业版中相同的某些资源重复,例如字符串或ui图形。这不是正确的方法。@Skalaw如果我在一个项目中有这3个应用程序(6个版本),例如aPro和aFree在colors.xml中有相同的ui“primary_color”,但是bPro和bFree有不同的颜色,那么您应该将重复的资源移动到
main
folderSo。因此,我应该将相同的colors.xml文件放在aPro和aFree resources文件夹中,或者有一种方法可以在一个应用程序的两个版本之间合并colors.xml?@Skalaw您应该将相同的颜色放在
main/res/values
文件夹中的一个
color.xml
文件中,将不同的颜色分别放在variants'resources文件夹下的
color.xml
文件中。好的,我理解这一点,但是有没有办法阅读这样的资源:aFree/res->aPro/res->main/res/。。。我只想在自由资源和主资源之间再放一个默认文件夹。它将为我提供一个解决方案,使两个模块中不重复相同的值。