android studio 使用gradle批量打渠道包

在没有批量打包工具之前,每次项目上线或者更新,都是打渠道包打到左右手残废。在AS中使用了强大的gradle 并支持批量打包,解放我们的双手和双脚。

我这里以友盟为例

1. Mainfest 文件中添加一个键值对,这里的value 我定义为
“UMENG_CHANNEL_VALUE”(当然实际应用中可以根据自己的需要命名),后面打包的时候会对这个值进行替换。

<meta-data android:value="UMENG_CHANNEL_VALUE" android:name="UMENG_CHANNEL"/>

2. 打开app下的build.gradle(你的model下的build.gradle)进行配置

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.xx.xx"  //包名
        minSdkVersion 16
        targetSdkVersion 21
        versionCode 1         //不解释
        versionName "1.0.0.0" //不解释
    }

    //这里填写你要打的渠道名称,格式如下
    productFlavors {
        xiaomi {}
        lianxiang {}
        huawei {}
    }
 //这里主要是根据我们在manifest文件中定义的键值对 //UMENG_CHANNEL - UMENG_CHANNEL_VALUE 的value 进行替换

    android.applicationVariants.all { variant ->
        variant.outputs.each { output ->
            output.processManifest.doLast {
                //载mainfest文件
                def mFile= output.processManifest.manifestOutputFile
                //这是一个循环体,用我们在上面定义的productFlavors中的各种渠道名来替换 
                //UMENG_CHANNEL_VALUE(每个包中只有渠道名称,不同,所以只要处理这里)
                def data= mFile.getText('UTF-8').replaceAll("UMENG_CHANNEL_VALUE", "${variant.productFlavors[0].name}")
                //写入Mainfest文件
                manifest.write(data, 'UTF-8')
            }
            //定义一个文件
            def file = output.outputFile
            //定义存储apk的位置和文件名,这里文件名格式定义为 [项目名称_渠道名称_版本号]
            output.outputFile = new File("E:\\My\\apkV1.0.0", "projectName_" + "${variant.productFlavors[0].name}" + "_V1.0.0.apk")
        }
    }

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug{
            minifyEnabled false
            buildConfigField "boolean", "LOG_DEBUG", "true"
        }
    }

    // 移除lint检查的错误
    lintOptions {
        abortOnError true
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile files('libs/umeng-update-v2.6.0.1.jar')

}

3. 开始打包

  • 点击build 菜单的generate sign apk选项,进入打包界面
    android studio 使用gradle批量打渠道包_第1张图片

    android studio 使用gradle批量打渠道包_第2张图片

    android studio 使用gradle批量打渠道包_第3张图片

  • 选择一个存放apk描述文件的路径

  • 选择release,全选下面的渠道名,点击finish

  • 泡一杯茶,等待打包~~~

你可能感兴趣的:(gradle,批量打包,android-studio)