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.
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
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!
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.
Ce problème devrait être résolu dans ce PR: https://github.com/crosswalk-project/cordova-plugin-crosswalk-webview/pull/255