Error:All flavors must now belong to a named flavor dimension. The flavor 'flavor_name' is ...

android studio 3.0,更新

classpath ‘com.android.tools.build:gradle:3.0.0’以后,出现报错

Error:All flavors must now belong to a named flavor dimension.
The flavor 'flavor_name' is not assigned to a flavor dimension.

报错的原因:查看给出的链接地址:https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html#apply_plugin

The plugin now requires that all flavors belong to a named flavor dimension—even if you intend to use only a single dimension. Otherwise, you will get the following build error: 
意思大致说,这个3.0的插件要求flavor dimension必须要有,哪怕只有一个维度也要声明, flavorDimensions 是在android{}中的字段:可以理解成维度,比如下面只声明了一个渠道的维度,

 flavorDimensions "channel"
    //渠道
    productFlavors {

        qh360 {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "qh360"]
            dimension "channel"
        }
        baidu {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
            dimension "channel"
        }

    }

关于flavorDimensions 可以生成多维度,比如下面的代码

// 两个维度
flavorDimensions "isFree", "channel"

productFlavors {
     free {
      // 免费和付费用isFree做标识,小米和htc为发布到的平台用channel做标识,因而最后生成4
      //种flavor,加上buildtype就是4*2=8种
      dimension "isFree"
      ...
    }

    paid {
      dimension "isFree"
      ...
    }

    xiaomi{
        dimension "channel"
        ...
    }

    htc{
        dimension "channel"
        ...
    }
}

其实就是在3.0插件以后,google要求必须添加这个flavorDimensions 这个字段哪怕是只有一个维度也要写上才不报错, 
然后看到stackoverflow上的回答更简单的使用如下:

android {

    defaultConfig {

        flavorDimensions 'default'
    }

或是:

android {

    defaultConfig {

        flavorDimensions 'versionCode'
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章