Gradle多版本多渠道指定名字打包

Gradle多版本多渠道指定名字打包

Gradle多版本打包

  1. 前言: 在开发当中,往往有多种网络配置环境,例如内网,外网,预发布,那么就需要打不同的包,每次手动去改,一是麻烦,二是有风险

  2. 定义多种打包类型

    buildTypes {
           release {
               manifestPlaceholders = [appName: "正式发布版"]
               proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
               //签名
               signingConfig signingConfigs.key
               //混淆文件开启
               minifyEnabled true
               //资源,类 去重复。
               shrinkResources true
               //APK包 优化
               zipAlignEnabled true
           }
           debug {
               manifestPlaceholders = [appName: "Debug版"]
               minifyEnabled false
               proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
           }
           prerelease {
               manifestPlaceholders = [appName: "预发布版"]
               minifyEnabled false
               proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
           }
       }

    这里就定义了三种打包类型 release debug prerelease

    在具体的代码中获取类型,匹配不同的url

    switch (BuildConfig.BUILD_TYPE){
               case "debug":
                   url = "debug";
                   break;
               case "release":
                   url = "release";
                   break;
               case "prerelease":
                   url = "prerelease";
                   break;
           }

    release 是要签名的

       //自动签名打包,定义一个签名的方法
       signingConfigs {
           key {
               keyAlias 'keywang'
               keyPassword '123456'
               storeFile file('../wang.jks')
               storePassword '123456'
           }
       }

    上文的realease中我已经加入了signingConfig signingConfigs.key,打包签名

指定文件名输出

  1. android studio的自动命名不是很全,没有在名字后面加上版本号,这个就需要我们自己去加

    //gradle 多版本打包命名
       applicationVariants.all { variant ->
           variant.outputs.each { output ->
               def oldFile = output.outputFile
               def newName = '';
               if (variant.buildType.name == 'release') {
                 //这一句要根据后文的多渠道打包联系起来
                   newName = 'release_' + variant.getVersionName() +'_' +variant.productFlavors.get(0).getName()+  '-signed.apk'
                   output.outputFile = new File(oldFile.parent, newName)
               }
               if (variant.buildType.name == 'debug') {
                   newName = 'debug_' + variant.getVersionName() + '.apk'
                   output.outputFile = new File(oldFile.parent, newName)
               }
               if (variant.buildType.name == 'prerelease') {
                   newName = 'prerelease_' + variant.getVersionName() + '.apk'
                   output.outputFile = new File(oldFile.parent, newName)
               }
           }
       }

    这样打出来的包就会自动命名的
    这里写图片描述

​ 执行assemble命令是打各种不同的包

​ 执行其他子命令是打一个包

多渠道打包

  1. Gradle配置
         //开始定义多渠道打包的方法
         productFlavors {
             yingyongbao {
     //            applicationId 'com.wang.agradle1' 此处可以指定包名
                 manifestPlaceholders = [ CHANNEL_NAME:"YINGYONGBAO"]
             }
             umeng {
                 manifestPlaceholders = [ CHANNEL_NAME:"UMENG" ]
             }
             wandoujia {
                 manifestPlaceholders = [ CHANNEL_NAME:"WANDOUJIA" ]
             }
         }
         //定义渠道变量名
         productFlavors.all {
           //定义了CHANNEL_NAME 是变量名
             flavor -> flavor.manifestPlaceholders = [CHANNEL_NAME: name]
         }
2. AndroidManifest配置

```xml
    <!-- 渠道号设置 -->
    <meta-data
        android:name="UMENG_CHANNEL"
        android:value="${CHANNEL_NAME}" />
```

配合上文的自动命名就可以打出各种版本的包,并且自动命名

其他小细节

  1. 自动命名安装后的名称

    AndroidManifest配置

    android:label="${appName}"

    Gradel配置

    manifestPlaceholders = [appName: "Debug版"]

    这样安装debug 安装后app名字就是Debug版

  2. 其他以后在补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值