Android多渠道打包——使用gradle进行多渠道自动打包

个人博客CoorChice,https://chenbingx.github.io/ ,最新文章将会首发CoorChice的博客,欢迎探索哦 !
同时,搜索微信公众号CoorChice,或扫描文章末尾二维码,可以关注我的微信公众号。同期文章也将会优先推送到微信公众号中,以提醒您有新鲜文章出炉。

前言

在我的另一篇文章中介绍了如何使用Python进行多渠道打包,下面再把传统的gradle多渠道打包方式介绍一下,同样是以友盟SDK为例。

打包前配置

配置gradle

//主要是配置android{}封包下的内容
android {
            。
            。
            。
signingConfigs { //配置签名文件,可以有多个
        icekey { 
            keyAlias 'icekey'
            keyPassword '填入key的密码'
            storeFile file('/Users/**********/icekey.jks')  //key所在文件夹
            storePassword '填入store的密码'
        }
    }
    
    buildTypes { //配置构建版本,可以有多个
        //测试版本
        debug {
            debuggable true
            zipAlignEnabled false
            shrinkResources false
            signingConfig signingConfigs.icekey
            minifyEnabled false
        }

        //发布版本
        release {
            debuggable false //是否开启测试
            zipAlignEnabled true //是否启用zipAlign压缩优化
            shrinkResources true //是否删除未被使用的资源文件
            minifyEnabled false  //是否开启混淆
            signingConfig signingConfigs.icekey //签名文件
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //指定混淆文件
        }

        //空版本
        source {
            debuggable true //是否开启测试
            zipAlignEnabled true //是否启用zipAlign压缩优化
            shrinkResources true //是否删除未被使用的资源文件
            minifyEnabled false  //是否开启混淆
            signingConfig signingConfigs.icekey //签名文件
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //指定混淆文件
        }
    }
    
    //创建渠道名称,main{}是一个不合法名称
    productFlavors {
        baidu {}
        huawei {}
        xiaomi {}
    }
    
    //    这里体现在AndroidManifest中的
//    
    //运行自动赋值给AndroidManifest.xml中的${UMENG_CHANNEL_VALUE}
    productFlavors.all {
        flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
    }

    lintOptions { //配置打包线程的操作
        ignoreWarnings true //忽略警告
        checkReleaseBuilds false //是否检查release版本
        abortOnError false //出现错误是否终止
    }
    
        applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def outputFile = output.outputFile
            if (outputFile != null && outputFile.name.endsWith(".apk")) {  //判断是否是apk
                //这个函数生成了apk的名称
                def apkName = "ice-${variant.productFlavors[0].name}-${defaultConfig.versionName}.apk"
                output.outputFile = new File(outputFile.parent, apkName) //输出文件
            }
        }
    }
    
            。
            。
            。
}

配置AndroidManifest.xml

在Application标签下添加:

 
    
    
     //这样写就能够读取gradle中的[UMENG_CHANNEL_VALUE: name]的name的值了。

开始自动打包

在Android Studio的的终端机中输入

./gradlew assembleRelease  //打包所有渠道的Release版包
./gradlew assembleSource //打包所有渠道的Source版包
Android多渠道打包——使用gradle进行多渠道自动打包_第1张图片
CoorChice的公众号

你可能感兴趣的:(Android多渠道打包——使用gradle进行多渠道自动打包)