I.基础设置
1.build.gradle设置
项目根目录的build.gradle中android
节点添加:
flavorDimensions "version"
productFlavors {
// 开发
dev {
applicationId 'com.dev.messenger'
ndk {
abiFilters "arm64-v8a", "armeabi-v7a", "x86", "x86_64"
}
namespace 'com.dev.messenger'
}
// 测试
check {
applicationId 'com.check.messenger'
ndk {
abiFilters "arm64-v8a", "armeabi-v7a", "x86", "x86_64"
}
namespace 'com.check.messenger'
}
// 正式发布
prod {
applicationId 'com.prod.messenger'
ndk {
abiFilters "arm64-v8a"
}
namespace 'com.prod.messenger'
}
}
II.代码和资源文件目录设置
1.代码
多包名打包主要影响的是app模块,需要更改包名,共有代码就放在main目录下即可,差异代码放在对应版本的目录下
app
└─src
├─main
│ ├─java
│ │ └─com
│ │ └─xxx
│ │ └─messenger
│ │ └─main
│ └─res
├─dev
│ └─java
│ └─com
│ └─dev
│ └─messenger
│ └─main
├─check
│ └─java
│ └─com
│ └─check
│ └─messenger
│ └─main
└─prod
└─java
└─com
└─prod
└─messenger
└─main
2.AndroidManifest.xml设置
已经在build.gradle中配置了namespace
,AndroidManifest.xml中不需要再配置packname
,如果不同版本需要不同的产品名称,那么每个版本目录下都要有一个AndroidManifest.xml,如果要有不同的icon,参考下面资源文件的配置。
3.资源文件
如果项目中涉及到需要更改图标、icon等,同时资源文件都放在单独的模块里面,那么这个模块(假如说叫res)下的build.gradle也需要进行配置,和项目根目录的build.gradle配置不同的是,资源文件模块下的build.gradle只需要声明Flavors即可,不需要配置属性:
flavorDimensions "version"
productFlavors {
// 开发
dev {
}
// 测试
check {
}
// 正式发布
prod {
}
}
然后模块中目录也要对应:
res
└─src
├─main
│ ├─assets
│ └─res
│ ├─anim
│ ├─color
│ ├─drawable
│ ├─drawable-hdpi
│ ├─drawable-xhdpi
│ ├─drawable-xxhdpi
│ ├─drawable-xxxhdpi
│ ├─raw
│ ├─values
│ └─values-zh-rCN
├─dev
│ └─res
│ ├─drawable
│ ├─values
│ └─values-zh-rCN
├─check
│ └─res
│ ├─drawable
│ ├─values
│ └─values-zh-rCN
└─prod
└─res
├─drawable
├─values
└─values-zh-rCN
注意:如果其他模块引用了该资源模块,那么引用该资源模块的模块也需要配置build.gradle,也只需要声明Flavors即可,把res模块中的配置抄过去就行。