返回> 网站首页
android多渠道版本编译
yoours2024-04-11 10:42:07
【android】
简介一边听听音乐,一边写写文章。
一、介绍
多渠道打包,也即多版本打包APK文件。
二、build.gradle配置文件
生成standard 、miui两个版本apk。
buildFeatures {
buildConfig = true
}
signingConfigs {
soskp {
keyAlias 'xxxxxxxxx'
keyPassword 'xxxxxx'
storeFile file('D:\\xxxxxxxx.jks')
storePassword 'xxxxxx'
}
}
// 必须有这一定义,值随意
flavorDimensions "product"
// 多版本配置
productFlavors {
standard {
// 增加BuildConfig常量
buildConfigField "Integer", "SelectFileType", "1"
// 修改资源属性 - 把 AndroidManifest.xml 中名为MobileType的字符串值,改为standard
resValue "string", "MobileType", "standard"
}
miui {
buildConfigField "Integer", "SelectFileType", "2"
resValue "string", "MobileType", "miui"
}
}
buildTypes {
release {
signingConfig signingConfigs.soskp
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
android.applicationVariants.all {
variant ->
variant.outputs.all { output ->
variant.productFlavors.each { flavor ->
def buildType = variant.buildType.name
def versionName = variant.versionName
def versionCode = variant.versionCode
if (variant.buildType.name == "debug")
{
outputFileName = "DcTool_${flavor.name}_V${defaultConfig.versionName}_debug.apk"
} else {
outputFileName = "DcTool_${flavor.name}_V${defaultConfig.versionName}_release.apk"
}
}
}
// 将编译后的apk拷贝到指定目录
def obj
if (variant.hasProperty('assembleProvider')) {
obj = variant.assembleProvider.get()
} else {
obj = variant.assemble
}
obj.doLast { assemble ->
println("assemble:${assemble}")
if (assemble.name.toLowerCase().contains("release")) {
copy {
from variant.outputs*.outputFile
into "./build/apks/${variant.versionName}"
}
}
//if you don't want to delete the file after copying it comment the line below
// 可以选择删除或保留当前文件夹下的apk
//delete variant.outputs*.outputFile
}
}
三、多版本的参数内容区分
1. 增加BuildConfig常量
a) 定义SelectFileType常量
buildConfigField "Integer", "SelectFileType", "1"
b) java中调用 BuildConfig.SelectFileType 方法读取变量值。
2. 修改资源属性
a) 修改资源文件中名为MobileType的字符串值,改为standard
resValue "string", "MobileType", "standard"
b) 修改 AndroidManifest.xml 文件,增加资源属性
<meta-data android:name="Mobile" android:value="$[MobileType]" />
c) java调用 getResources().getString(R.string.MobileType) 方法读取资源变量值
四、编译
打开菜单
方法1:
a) Build->Select Build Variant->选择要构建的类型。
b) 点击Build菜单中的Build Bundle(s) / APK(s)来生成签名过的APK
方法2:
a) Generate Signed Bundle/APK(s)
b) 配置签名文件
c) 多选要创建的APK