【Android Studio】gradle多渠道打包

1.简介

由于android应用市场比较多,项目上线之前需要对每个市场进行打包,单独打包当然可以,但是如果要上传的市场比较多,这个工作量就比较大了,万一打包出现点问题还要重新再次打包,想想都害怕,所以我们可以采用多渠道打包的方式,在进行一些简单的配置后,可以一次性打包所有指定的各渠道apk文件,传统的eclipse一般使用ant进行多渠道打包,此处不作介绍,感兴趣的可以自行google学习,随着Android Studio开发工具的不断普及,所以介绍下Android Studio使用gradle来实现多渠道打包。

2.签名文件的配置

使用signingConfigs进行签名配置,下面代码分别配置了debug 版和release版的签名信息.

signingConfigs {

        //debug版签名配置
        debug {
            //key别名
            keyAlias 'test'
            //key密码
            keyPassword '123456'
            //密钥文件路径
            storeFile file('D:/AndroidStudioWork/MyApplication/test.jks')
            //密钥文件密码
            storePassword '123456'
        }

        //发布版签名配置
        release {
            //key别名
            keyAlias 'test'
            //key密码
            keyPassword '123456'
            //密钥文件路径
            storeFile file('D:/AndroidStudioWork/MyApplication/test.jks')
            //密钥文件密码
            storePassword '123456'
        }
    }

3.buildTypes的配置

使用buildTypes指定编译时使用的签名配置.

buildTypes {

        //debug使用上面debug的配置
        debug {
            signingConfig signingConfigs.debug 
        }

        //release使用上面release的配置
        release {
            signingConfig signingConfigs.release
        }
    }

4.productFlavors的配置

使用productFlavors指定需要的渠道.

    /*
        指定多个渠道
    */
    productFlavors {
        dev {
            manifestPlaceholders = [channel: "dev"]
        }
        official {
            manifestPlaceholders = [channel: "official"]
        }
        xiaomi {
            manifestPlaceholders = [channel: "xiaomi"]
        }
        wandoujia {
            manifestPlaceholders = [channel: "wandoujia"]
        }
        "360" {
            manifestPlaceholders = [channel: "360"]
        }
    }

5.打包

使用gradlew build命令进行打包操作,打好成功后会出现下图success的提示:

【Android Studio】gradle多渠道打包_第1张图片

然后打开输出目录会看的打好的包,包含debug和release版本:

【Android Studio】gradle多渠道打包_第2张图片

6.修改默认输出apk包的名字

上图中apk包名字是默认的,我们自己定义下:测试+buildtype+版本+渠道名,当然你也可以定义其他的,定义方式在build.gradle文件中添加如下配置:

applicationVariants.all { variant ->

        variant.outputs.each { output ->

            output.outputFile = new File(

                    output.outputFile.parent,

                    "测试-${variant.buildType.name}-${defaultConfig.versionName}-${variant.productFlavors[0].name}.apk".toLowerCase())

        }

    }

然后执行gradlew build命令打包:

【Android Studio】gradle多渠道打包_第3张图片

7.gradlew命令介绍

介绍一下常用的gradlew 命令含义:

  • gradlew assembleDebug 编译并打Debug包

  • gradlew assemblexiaomiDebug 编译并打xiaomi的debug包,其他类似

  • gradlew assembleRelease 编译并打Release的包

  • gradlew assemblexiaomiRelease 编译并打xiaomi的Release包,其他类似

  • gradlew installRelease Release模式打包并安装

  • gradlew uninstallRelease 卸载Release模式包

  • gradlew clean 删除app目录下的build文件夹

  • gradlew build 检查依赖并编译打包




参考资料:

1.Android Studio 多渠道打包、自动版本号及 gradlew 命令的基本使用

2.Android Studio 使用Gradle多渠道打包

3.Android Studio debug使用release的签名

你可能感兴趣的:(android开发进阶)