有更好的文章可以参看:
https://blog.csdn.net/shijianduan1/article/details/83410267
https://blog.csdn.net/qq_31694651/article/details/75201178
遇到的情况
目前一个应用需要为不同的项目适配不同的界面,但是应用的逻辑代码并没有变化
以下为处理方法:
配置产品特性
在app的gradle中配置如下:
// 产品特性,比如版本或者渠道等,可添加多个
flavorDimensions "version"
android {
...
defaultConfig {...}
buildTypes {
debug{...}
release{...}
}
// Specifies one flavor dimension.
flavorDimensions "version"
productFlavors {
demo {
// Assigns this product flavor to the "version" flavor dimension.
// This property is optional if you are using only one dimension.
dimension "version"
applicationIdSuffix ".demo"
versionNameSuffix "-demo"
}
full {
dimension "version"
applicationIdSuffix ".full"
versionNameSuffix "-full"
}
}
}
创建资源集合
接下来我们在Studio菜单栏中点击Sync Now之后我们就可以在Build Variants中发现如下几个可选编译的产品:
demoDebug
demoRelease
fullDebug
fullRelease
然后我们按照如下顺序为不同的项目建立资源集合
1.打开 Project 窗格,然后从窗格顶部的下拉菜单中选择 Project 视图。
2.转到 MyProject/app/src/。
3.右键点击 res 目录,然后依次选择 New > Folder > Res Folder。
4.从 Target Source Set 旁边的下拉菜单中,选择 debug。
5.点击 Finish。
配置资源集合
我们在app的gradle中配置如下:
sourceSets {
demo {
res.srcDirs('src/demo/res')
}
}
最后我们只要把差异的文件放在demo中对应的res中即可,比如我们可以在layout中修改使用的控件信息等,这些文件保持与原项目文件同名,在编译时会自动选择,但是如果想要在编译时使用相同名称的java文件,编译时则会提出报错