Android 如何在一个项目中为几个应用程序创建风格
我对project flavors的配置有问题 我想这样定义项目结构:Android 如何在一个项目中为几个应用程序创建风格,android,gradle,android-productflavors,Android,Gradle,Android Productflavors,我对project flavors的配置有问题 我想这样定义项目结构: Project |---- app | |---- build | |---- libs | |---- src | |---- aPro | |---- aFree | |---- bPro | |---- bFree | |---- cPro | |---- cFree |
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/。。。我只想在自由资源和主资源之间再放一个默认文件夹。它将为我提供一个解决方案,使两个模块中不重复相同的值。