离子android构建错误:"所有口味现在必须属于命名的味道维度"

时间:2017-11-21 12:54:38

标签: android cordova ionic-framework gradle

我已经在我的计算机上启动了一个新项目,但我已经无法为Android构建

当我跑步时

ionic cordova platform run android

我收到此错误:

All flavors must now belong to a named flavor dimension. 

4 个答案:

答案 0 :(得分:25)

"口味"如果您在项目中安装了cordova-plugin-crosswalk-webview插件并尝试使用Gradle v4进行构建,则会出现错误。

但是,如果您要升级到cordova-android@6.4.0(例如,要在Android Studio 3中打开您的Cordova Android平台项目以调试本机插件代码),您需要升级到Gradle v4。 因此,cordova-plugin-crosswalk-webview目前与cordova-android@6.4.0不兼容。

作为"口味的手动解决方法"错误,您可以在platforms/android/build.gradlesee here)中插入默认风格:

android { 
    ...
    flavorDimensions "default"
    ...
} 

<强>更新

如果您想使用Gradle v4 / cordova-android@6.4+cordova-plugin-crosswalk-webview进行构建,请更新到Gradle v4,然后从主分支安装cordova-android,因为this PR要解析& #34;调味剂&#34;多个APK版本的错误现已合并:

cordova platform rm android 
  && cordova platform add https://github.com/apache/cordova-android

答案 1 :(得分:1)

找到解决方案。 :)

Gradle版本就是问题所在。我不得不从4.X降级到3.5.1,效果很好!

通过执行

检查您的gradle版本
gradle -v

if if's&gt; 4.x,降级它!

答案 2 :(得分:1)

我得到了同样的错误,我创建了一个脚本来解决它。

正如答案中所述,问题是:gradle 4想要在gradle.build上使用flavorDimensions。

如果您在此处查看:https://cordova.apache.org/docs/en/latest/guide/platforms/android/#extending-buildgradle

我们可以创建一个名为gradle-extra.build的文件,它将包含在gradle.build中,我们只需创建一个脚本将该文件粘贴到/ platform / android /上。

所以我在项目根目录

中创建了这个文件build-extras.gradle
android { 
    flavorDimensions "default"
} 

和./hooks/after_platform_add/copy_build-extras.gradle.js上的脚本

#!/usr/bin/env node

var fs = require('fs');
var path = require('path');

if(fs.existsSync(path.resolve(__dirname, '../../platforms/android'))) {
  fs.createReadStream(path.resolve(__dirname, '../../build-extras.gradle')).pipe(fs.createWriteStream(path.resolve(__dirname, '../../platforms/android/build-extras.gradle')));
}

您可以在此处查看挂钩:https://cordova.apache.org/docs/en/latest/guide/appdev/hooks/index.html

/ hooks / after_platform_add下的每个脚本都将在离子平台添加后执行***

有了这个,我们不需要降级gradle也不需要更改cordova-android版本。

答案 3 :(得分:0)