android studio3.0——Error:All flavors must now belong to a named flavor dimension. Learn more at ...

来源:互联网 发布:动作片推荐 知乎 编辑:程序博客网 时间:2024/05/16 07:47
android studio3.0正式版在千呼万唤中于2017年10月下旬正式发布,各种变化就不说了,目前还没全面了解,只是知道起码不用插件就能用kotlin开发了<迷之微笑>。
和大多数androider一样,我也从2.3更新到了3.0,知道升级以后会难免遇到一些坑,只是没想到没走几步就进坑了,如题所示:在gradle中配置productFlavors时就遇到了这个问题(至于flavor这个词怎么翻译我就不知道了,直译是"风味",我更习惯翻译成"渠道",因为一般在打包多个渠道的正式版apk时才用这个)。
怎么办?不用我多说你也知道,studio的错误提示已经告诉你了,如图1.
图1.
不明白这句话没关系,点击链接跳转到具体的页面去看说明。
如果懒得翻墙,那就把这句英文复制粘贴到浏览器,肯定一大堆解决方法。
开始我也想这么做,省事,但是转头想想,还是培养一下自己阅读问题的能力吧,于是翻墙过去看说明。
然后就见到了如图2的说明:
图2.
大概的意思是(Gradle)这个插件现在(3.0.0)需要将你原来所有的flavor进行统一管理,用属性名flavor dimension进行配置,即使你只有一维属性也需要这样做,否则你就会得到如题的错误。解决的方式就是首先你需要用flavorDimensions这个属性声明一个或多个维度,然后,给每个flavor分配一个你已经声明好的维度(就像下面的例子中给出的)。因为这个插件会为你自动匹配依赖所以你应该仔细的命名你的flavor dimension是,最好不要太随意。这样做的好处就是让你对你本地的代码和资源与它们相应版本的App进行匹配时更具可控性。其实就是进行版本差异化开发时,不同版本的App能够很好的访问与它相对应的资源(比如图片,字符串)和依赖库之类。

读不懂没关系,看个大概或者google翻译,然后照猫画虎的去做,如图3:

图3.

最后sync一下,解决!原谅我这么简单的问题废话这么多,想凑个字数不容易啊[笑哭,gif]

图3说明:
其中,flavorDimensions这个属性在模块(module,一般就是项目中的app目录)下的build.gradle文件的android{}节点中任意一个位置写就行,里面的参数就是你原来想要配置的多个flavor,比如xiaomi{},360{},anzhi{}等等,这里写成多个字符串就行了,是可变参数。比如这例子中只有一个FUN。
然后就可以像原来一样在productFlavors{}节点中使用这个维度(dimension)了,它里面的这个大括号的名字(FUN)是你自己随便起的,不一定要和里面的dimension相同,里面的dimension FUN就是flavorDimensions中的一个。

最后讲两点烂大街的"经验":
①在解决android studio的报错问题时,如果某个error不知道怎么描述,那你就直接复制原话到浏览器。
②可能大多数人都知道,android developer官网的话有中文版,不一定非得翻墙去看遥远美国那边的网站,直接在浏览器中搜索android developer,然后打开就是你想要的了,或者地址栏输入https://developer.android.com/index.html也OK。
阅读全文
1 0
原创粉丝点击