笔记:android studio 多渠道多应用名多资源打包

公司的软件不同的应用市场的应用名都大不一样,有时候这个应用市场需要加广告,那个需要加首发,一个个打包的话会浪费很多时间,还很大几率会出错

下面就是通过配置gradle,实现一键打包,达到各个包不同的效果。

第一步:在 gradle -> android -> productFlavors 里添加代码,也就是你的不同渠道名
 productFlavors {
        aa_main {}
        huawei {}
        yyb {}
        q_360 {}
        oppo {}
        sogou {}
        vivo {}
        meizu {}
        anzhi {}
        baidu {}
        lenovo {}
        xiaomi {}
        pp {}
    }
第二步 渠道添加了之后,就开始配置各个渠道的一些不同的资源或者字段

在 gradle -> android -> sourceSets 中添加如下代码

sourceSets {
        //夜间模式资源设置
        main { res.srcDirs = ['src/main/res', 'src/main/res-night'] }

        //渠道资源路径配置
        huawei.res.srcDirs = ['src/main/res-huawei']
        yyb.res.srcDirs = ['src/main/res-yyb']
        q_360.res.srcDirs = ['src/main/res-360']
        oppo.res.srcDirs = ['src/main/res-oppo']
        sogou.res.srcDirs = ['src/main/res-sogou']
        vivo.res.srcDirs = ['src/main/res-vivo']
        meizu.res.srcDirs = ['src/main/res-meizu']
        anzhi.res.srcDirs = ['src/main/res-anzhi']
        baidu.res.srcDirs = ['src/main/res-baidu']
        lenovo.res.srcDirs = ['src/main/res-lenovo']
        xiaomi.res.srcDirs = ['src/main/res-xiaomi']
        pp.res.srcDirs = ['src/main/res-pp']
    }

res.srcDirs 是设置该渠道下的资源文件路径,还可以设置java,jniLibs 等各种文件资源路径

我这里的360渠道下只是图片和字段有些不同
在这里插入图片描述

注意点:你需要先把基础的资源文件都设置好,比如本来你的应用名称存储在app->src->main->res->value->strings 文件下的app_name,但360包的应用名不一样,这样你在上图的res-360 的 strings 文件中在添加一个app_name 就好了
第三步就是打包了

为了让打出来的apk通过文件名字就可以对apk信息一目了然,做了以下处理
在productFlavors 再添加如下代码

 android.applicationVariants.all {
            variant ->
                variant.outputs.all {
                    output ->
                        def outputFile = output.outputFile
                        if (outputFile != null && outputFile.name.endsWith('.apk')) {
                            if (variant.buildType.name == 'release') {
                                def fileName = "zdread_v${defaultConfig.versionCode}_${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk"
                                outputFileName = fileName
                            } else {
                                def fileName = "${releaseTime()}_${variant.productFlavors[0].name}_debug.apk"
                                outputFileName = fileName
                            }
                        }
                }
        }

最后打出来的apk文件名的格式就固定成了
zdread_v应用版本号_应用版本名_打包时间_渠道名.apk

简单的三步,就完成了对多渠道打包的配置
其实如果只是简单的应用名不一样,还可以直接在第一步中完成,不需要后面两步
q_360{ buildConfigField “String”, “app_name”, “应用名”}

然后在AndroidManifest.xml 文件中修改
android:label="${app_name}"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值