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

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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值