AndroidStudio升级到3.0打多渠道包

来源:互联网 发布:excel表格重复数据合并 编辑:程序博客网 时间:2024/05/04 02:33

一、出现如下错误:

Error:All flavors must now belong to a named flavor dimension. 
Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html


     3.0版本的插件规定所有的flavors必须属于一个flavordimension,即我们要在所有plavor中返回一个flavordimension。flavordimension其实是一种便于我们对变体进一步控制的方式,对productFlavors的进一步分类。

 //为flavor设置一个版本,命名是随意的    flavorDimensions "versionCode"    // 多渠道打包    productFlavors {        appchina {            dimension "versionCode"        }        baidu {            dimension "versionCode"        }        yinyongbao {            dimension "versionCode"        }        qihu360 {            dimension "versionCode"        }        huawei {            dimension "versionCode"        }        xiaomi {            dimension "versionCode"        }    }

或者添加

    defaultConfig {        applicationId "com.noway"        minSdkVersion 21        targetSdkVersion 26        versionCode 1        versionName "1.0.0"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"        //使用 multidex 的支持        multiDexEnabled true//        //为flavor设置一个版本,命名是随意的//        flavorDimensions "versionCode"    }

二、根据官方文档修改打包配置

  productFlavors.all { flavor ->        flavor.manifestPlaceholders = [CHANNEL_VALUE: name]    }    //配置自定义打包名称    android.applicationVariants.all { variant ->        variant.outputs.all {//            outputFileName = "${variant.name}-${variant.versionName}.apk"            // 定义生成的apk的名称            def apkName                if (variant.buildType.name == 'release') {                    apkName = "ZhaoYun_" + variant.productFlavors[0].name + "_${variant.versionName}.apk"                }                else if (variant.buildType.name == 'debug') {//                    variant.mergedFlavor.versionName = getVersionName() + "." + releaseTime()                    apkName = "ZhaoYun_${variant.versionName} " + "-" + releaseTime()+"_debug.apk"                }                //这里使用之前定义apk文件名称                outputFileName  = apkName        }    }