web-dev-qa-db-fra.com

Ionic Android erreur de build: "Toutes les saveurs doivent désormais appartenir à une dimension de saveur nommée")

J'ai commencé un nouveau projet sur mon ordinateur mais je ne peux plus construire pour Android

Quand je cours

ionic cordova platform run Android

Je reçois cette erreur:

All flavors must now belong to a named flavor dimension. 
13
Hugo H

L'erreur "flavors" se produira si vous avez le cordova-plugin-crosswalk-webview plugin installé dans votre projet et vous essayez de construire avec Gradle v4.

Cependant, si vous souhaitez passer à [email protected] (par exemple pour ouvrir votre projet Cordova Android dans Android Studio 3 pour déboguer le code du plugin natif), vous devrez mettre à niveau vers Gradle v4. Par conséquent cordova-plugin-crosswalk-webview est actuellement incompatible avec [email protected].

Comme solution de contournement manuelle pour l'erreur "saveurs", vous pouvez insérer une saveur par défaut dans le platforms/Android/build.gradle ( voir ici ):

Android { 
    ...
    flavorDimensions "default"
    ...
} 

Mise à jour

Si vous voulez construire avec Gradle v4/[email protected]+ et cordova-plugin-crosswalk-webview, mettez à jour vers Gradle v4 puis installez cordova-Android hors de la branche principale, puisque ce PR pour résoudre l'erreur "flavors" avec plusieurs builds APK a maintenant été fusionné:

cordova platform rm Android 
  && cordova platform add https://github.com/Apache/cordova-Android
26
DaveAlden

J'ai trouvé la solution. :)

La version Gradle était le problème. J'ai dû rétrograder de 4.X à 3.5.1, ce qui fonctionne très bien!

Vérifiez votre version gradle en faisant

gradle -v

Si if est> 4.x, rétrogradez-le!

1
Hugo H

J'ai la même erreur et j'ai créé un script pour le résoudre.

Comme il a été dit dans la réponse, le problème est le suivant: le gradle 4 veut des flavourDimensions sur gradle.build.

Si vous cochez ici: https://cordova.Apache.org/docs/en/latest/guide/platforms/Android/#extending-buildgradle

Nous pouvons créer un fichier nommé gradle-extra.build avec sera inclus sur gradle.build, nous avons juste besoin de créer un script pour coller ce fichier sur/platform/Android /.

J'ai donc créé ce fichier build-extras.gradle dans la racine de mon projet

Android { 
    flavorDimensions "default"
} 

et le script sur ./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')));
}

Vous pouvez vérifier les crochets ici: https://cordova.Apache.org/docs/en/latest/guide/appdev/hooks/index.html

chaque script sous/hooks/after_platform_add sera exécuté après ionic platform add ***

Avec cela, nous n'avons pas besoin de rétrograder Gradle ni de changer la version cordova-Android.

1
Gilson
0
Ruben Stolk