Android studio多渠道打包productFlavors的使用流程如下:
以下为我按照三个渠道打包流程:
第一:在APP项目目录的src目录下,新建三个文件:product、prodcuta、productb
三个product文件下可以建assert、java、res文件夹,assert中的资源如有差异化,需要保持文件名称一致,java中包名和类名要保持一致、res文件下的资源文件名要保持一致
如下为我的目录结构:
每个product里结构如下:
包名和main中,如果有某个类有差异化,在每个product中进行不同处理,main中删除该类,否则会报类重复drawable可以放入不同的图片,但是图片名称要一致
values中的strings 和colors文件,里面的key需相同,value可以不相同
第二:在app的build.gradle文件中需要进行
productFlavors配置
配置如下:
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.yang.productflavorstest"
minSdkVersion 26
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
flavorDimensions "default"
}
signingConfigs {
relase {
keyAlias ****
keyPassword '****'
storeFile file('F:/ketstore/yposkeystore.keystore')
storePassword '****'
}
debug {
keyAlias '****'
keyPassword '****'
storeFile file('F:/ketstore/yposkeystore.keystore')
storePassword '****'
}
}
productFlavors{
product{
//每个环境包名不同
applicationId 'com.yang.productflavorstest'
buildConfigField "String", "packageName", "\"com.yang.productflavorstest\""
buildConfigField "String", "appName", "\"主项目\""
versionCode 1
versionName '1.1.1'
}
producta{
//每个环境包名不同
applicationId 'com.yang.productflavorstest.producta'
buildConfigField "String", "packageName", "\"com.yang.productflavorstest.producta\""
buildConfigField "String", "appName", "\"项目A\""
versionCode 1
versionName '1.1.1'
}
productb{
//每个环境包名不同
applicationId 'com.yang.productflavorstest.productb'
buildConfigField "String", "packageName", "\"com.yang.productflavorstest.productb\""
buildConfigField "String", "appName", "\"项目B\""
versionCode 2
versionName '1.1.2'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}