[Gradle] Android Studio批量打包完全自定义APK包名

来源:互联网 发布:多益网络试用期被辞退 编辑:程序博客网 时间:2024/04/27 13:35

Gradle 本身是基于 Groovy 语法, 支持批量打包, 非常方便, 大家都知道的.  但在批量打包时, 肯定有个包名重命名的需求, 比如当前项目的 versionName 是 1.2.0, 用户在设备安装APK后所看到的版本号就是 v1.2.0. 当然, APK 应用还有个名称, 比如叫 AppName (当然, 这个名字随意啦, 一般都是英文单词组成),  然后有 3 个渠道, 比如是 appchina, tencent 和 hiapk.  


然后,  一般默认打包出来的 APK 文件名都是类似这样: AppName-appchina-release.apk.  现在我们想在批量打包时, 还对这个名字完全重命名, 变成: AppName_appchina_v1.2.0, AppName_hiapk_v1.2.0 和 AppName_tencent_v1.2.0. 


之前很流行一句话是吧, Talk is cheap, show me your code. 来吧, 直接上代码, 在项目的 build.gradle 文件中加入仅仅是以下少量的代码: 

productFlavors {        tencent {            manifestPlaceholders = [CHANNEL_VALUE: "tencent"]        }        hiapk {            manifestPlaceholders = [CHANNEL_VALUE: "hiapk"]        }        appchina {            manifestPlaceholders = [CHANNEL_VALUE: "appchina"]        }        mumayi {            manifestPlaceholders = [CHANNEL_VALUE: "mumayi"]        }    }    applicationVariants.all { variant ->        variant.outputs.each { output ->            output.outputFile = new File(                    output.outputFile.parent,                    output.outputFile.name.replace(output.outputFile.name, "AppName_"+variant.productFlavors[0].name+"_v${variant.versionName}.apk"))        }    }

versionName 的值随意, 这里是 1.2.0


有了前面的条件前提, 看上面的代码应该很容易理解. 用自定义的文件名直接替换整个文件名,  自定义的文件名前缀是 "AppName_", 后面加上当前的渠道号名称字符串, 再拼接上下划线 "_" 和当前 build.gradle 文件中 versionName 的值.  也就是, 最终文件名为,  AppName_当前渠道号名称_v1.2.0.apk.  整个命名关键的两个变量是, 当前渠道号名称 和 版本号, 有了这两个值你就能按自己的需求重命名APK了对吧, 当然 Gradle 所支持 Groovy 的丰富语法不仅仅这点地方体现, 自己还可以在文件中编写获取新的命名的方法, 获取当前打包的日期, 或者获取versionCode, 等等. 这个, 以此抛砖引玉自行体会了哈.


最后打包结果是这样:


大功告成~


1 0
原创粉丝点击