记录一次Android多渠道打包
程序员文章站
2022-08-12 13:24:50
背景我有一个需求,要求是同一份代码要打两个包出来,只不过包名、logo、名称、签名、部分代码不一样,我是这样做的。第一步app的build.gradle中android { compileSdkVersion 29 buildToolsVersion "29.0.3" defaultConfig { applicationId "xxx" minSdkVersion 21 targetSdkVersion 30...
背景
我有一个需求,要求是同一份代码要打两个包出来,只不过包名、logo、名称、签名、部分代码不一样,我是这样做的。
第一步
app的build.gradle中
android {
compileSdkVersion 29
buildToolsVersion "29.0.3"
defaultConfig {
applicationId "xxx"
minSdkVersion 21
targetSdkVersion 30
versionCode 5
versionName "1.0.4"//
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
//注意这个属性,当然设置在这个闭包的外面也是可以的。不设置会报错All flavors must now belong to a named flavor dimension
flavorDimensions "default"
}
signingConfigs {
//默认的渠道,这里签名的数据配置在项目里,见下图
debug {
// debug和release用的统一的jks避免重新新增MD5
storeFile file(KEY_PATH)
storePassword KEY_PASS
keyAlias ALIAS_NAME
keyPassword ALIAS_PASS
}
release {
storeFile file(KEY_PATH)
storePassword KEY_PASS
keyAlias ALIAS_NAME
keyPassword ALIAS_PASS
}
//新增的渠道签名
debugxiamen {
// debug和release用的统一的jks避免重新新增MD5
keyAlias 'xxxx'
keyPassword 'xxx'
storeFile file('../doc/xxx.jks')
storePassword 'xxx'
}
releasexiamen {
keyAlias 'xxxx'
keyPassword 'xxx'
storeFile file('../doc/xxx.jks')
storePassword 'xxx'
}
}
productFlavors {
//输出两个变体,即最终要打包的两个渠道
hengqin {
//可以单独指定某个渠道的包名,会覆盖manifest里面的packgename,也可以用这样配置 applicationIdSuffix ".demo"
applicationId "com.ly.checkticket4hengqin"
}
xiamen {
applicationId "com.ly.traffic.transport"
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
//productFlavors的闭包必须放到这个之前,否则肯定报错,没定义先使用嘛
//还有很多文章上说在不同渠道上只能指定debug签名,relase签名只能用同一个,我这边测试了一下,非也!
productFlavors.hengqin.signingConfig signingConfigs.release
//解决 The application could not be installed: INSTALL_PARSE_FAILED_NO_CERTIFICATES
productFlavors.xiamen.signingConfig signingConfigs.releasexiamen
}
}
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
dataBinding {
enabled = true
}
}
签名配置
第二步
配置不同的logo、appname
第三步
代码里抹平渠道区分:
when(BuildConfig.FLAVOR){
"xiamen"->{}
"hengqin"->{}
}
第四步
打包
本文地址:https://blog.csdn.net/u012346890/article/details/112536211