项目中涉及到通过jenkins自动化实现多渠道打包,并在打包过程中动态配置配置参数和动态修改打包参数。
1、多渠道到打包配置 在build.gradle 文件中配置
常见配置参考:
Android 多渠道打包实操(更改包名、图标、主题资源 、替换常量、第三方SDK Appkey配置)
Gradle多渠道打包(动态设定App名称,应用图标,替换常量,更改包名,变更渠道)
需要注意配置参数的位置,因为build.gradle的层级比较乱,好几次复制粘贴弄错地方了。
2、修改生成的apk文件名,和文件位置
Gradle3.3 修改APK生成路径和文件名(附AAR修改方式以及分析过程)
注意网上相关的文章很多,但是随着版本的变化,很多都是老版本的,并不适用了。
默认的是每个渠道目录下都有一个debug和release文件,不方便取包。可以在debug和release中分别设置了不同的文件目录,让不同渠道的debug版的apk都到同一个debug文件下,release版的到同一个release文件下()。
//设置生成的apk路径和名称
applicationVariants.all { variant ->
def dirName
def apkName
if (variant.buildType.name == 'release') {
dirName = "apk_release"
apkName = "release"
}else{
dirName = "apk_debug"
apkName = "debug"
}
// 自定义输出路径
variant.outputs.all { output ->
//打包是开启,让生成的apk都在同一个文件夹下
variant.getPackageApplicationProvider().get().outputDirectory = new File(project.rootDir.absolutePath + File.separator + "app" + File.separator + dirName)
//设置apk名称
outputFileName = "${variant.productFlavors[0].name}_v${version_major}.${version_minor}.${version_private}_${releaseTime()}_"+apkName+".apk"
}
}
修改完成后,打包能都正常完成,但是出现直接运行报错
08/02 10:27:51: Launching app
The APK file E:\androidDemo\NewDemo\app\build\outputs\apk\dev\debug\app-dev-debug.apk does not exist on disk.
Error while Installing APK
找不到apk,分析认为,是修改生成的apk位置后,运行时生成的包进入了修改之后的文件目录中,默认文件下找不到对应的apk。修改运行设置,不实用默认apk,就可以了
ps:貌似会影响发布的速度,所以还可以在开发时关闭修改路径功能,要多渠道打包时再打开
3、Gradle生命周期
根据不同的构建阶段修改配置,需要先了解gradle的生命周期
在修改gradle的过程中遇到好多坑,发现还是要对gradle系统的学习一下