简书链接:Allflavorsmustnowbelongtoanamedflavordimension
文章字数:451,阅读全文大约需要1分钟

1
2
3
* What went wrong:
A problem occurred configuring project ':app'.
> All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html

表示看了下https://d.android.com/r/tools/flavorDimensions-missing-error-message.html还是没弄懂应该怎么搞,
实际上我只需要根据不同apk生成不同的 BuildConfig.isvip字段,以前是通过包名,现在我想尝试创建字段,显然不行,所以我目前只能删除flavor节点了,有知道怎么搞的朋友欢迎反馈

各位实在想折腾的可以降级gradle,可以从官网看出来最新版做了一些跳转

连android studio自带的Flavors配置都出错,也是无语了,表示无法理解老外的语言

1
2
3
4
5
6
7
8
productFlavors {
flavor {
minSdkVersion 14
applicationId 'cn.qssq666.redpacket'
versionName '1.5.8'
versionNameSuffix 'pro'
}
}

最后发现我太浮躁了
https://stackoverflow.com/questions/44105127/android-studio-3-0-flavor-dimension-issue
找到了答案

1
Flavor 'productFlavors' has no flavor dimension.

因为多了一个flavor节点,导致他找不到dimension

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
flavorDimensions 'free','paid' //here defined dimensions
productFlavors {
// flavorDimensions 'default'

isfree {
dimension "free"
buildConfigField "boolean", "ispay", "false"
}
ispaid {
dimension "paid"
buildConfigField "boolean", "ispay", "true"
}


}

大家不要把dimension和那些分辨率像素挂钩,我当时没看懂也不敢实验就是被这个单词吓住了,因为我并不需要自定义像素,我不想粘贴代码尝试,哈哈知道看到另外的问题网站才恍然大悟了。。
最后看一下图

image.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21


public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLICATION_ID = "cn.qssq666.redpacket";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "isfreeIspaid";
public static final int VERSION_CODE = 76;
public static final String VERSION_NAME = "1.5.8";
public static final String FLAVOR_free = "isfree";
public static final String FLAVOR_paid = "ispaid";
// Fields from product flavor: isfree
public static final boolean ispay = false;
// Fields from product flavor: ispaid
// Fields from default config.
public static final String BUILD_TIME_STR = "2018-04-06 22:04:13";
public static final boolean QUCICK_DEBUG = true;
public static final boolean SMALL = false;
public static final int flag = 1;
}

如果不打包,默认是 ispay=false,说明了,他是默认前面的维度。

打包和以前貌似不同了

image.png

`