Lorsque je cours cordova build android --buildConfig xxxx --release
, j'obtiens l'erreur suivante:
ERROR: In <declare-styleable> FontFamilyFont, unable to find attribute android:fontVariationSettings
ERROR: In <declare-styleable> FontFamilyFont, unable to find attribute android:ttcIndex
La chose étrange est que j'utilise deux machines macOS pour la compilation, et je reçois cette erreur uniquement sur l'une d'entre elles pour le même code.
Voici la sortie de ./gradlew cdvPrintProps
I get sur les deux machines:
:cdvPrintProps
cdvCompileSdkVersion=26
cdvBuildToolsVersion=27.0.3
cdvVersionCode=null
cdvMinSdkVersion=21
cdvBuildMultipleApks=true
cdvReleaseSigningPropertiesFile=release-signing.properties
cdvDebugSigningPropertiesFile=null
cdvBuildArch=null
computedVersionCode=152045989
computedArmv7VersionCode=1520459892
computedX86VersionCode=1520459894
Voici la liste des plugins utilisés:
$ cordova plugins list
cordova-custom-config 5.0.2 "cordova-custom-config"
cordova-fabric-plugin 1.1.10 "cordova-fabric-plugin"
cordova-open-native-settings 1.5.0 "Native settings"
cordova-plugin-app-event 1.2.1 "Application Events"
cordova-plugin-app-version 0.1.9 "AppVersion"
cordova-plugin-camera 2.4.1 "Camera"
cordova-plugin-compat 1.2.0 "Compat"
cordova-plugin-console 1.1.0 "Console"
cordova-plugin-crosswalk-webview 2.4.0 "Crosswalk WebView Engine"
cordova-plugin-datepicker 0.9.2 "DatePicker"
cordova-plugin-device 2.0.1 "Device"
cordova-plugin-email 1.2.7 "EmailComposer"
cordova-plugin-file 4.3.3 "File"
cordova-plugin-file-transfer 1.6.3 "File Transfer"
cordova-plugin-inappbrowser 1.7.2 "InAppBrowser"
cordova-plugin-network-information 1.3.4 "Network Information"
cordova-plugin-secure-storage 2.6.8 "SecureStorage"
cordova-plugin-splashscreen 4.1.0 "Splashscreen"
cordova-plugin-statusbar 2.4.1 "StatusBar"
cordova-plugin-whitelist 1.3.3 "Whitelist"
cordova.plugins.diagnostic 3.9.2 "Diagnostic"
de.appplant.cordova.plugin.local-notification 0.8.5 "LocalNotification"
ionic-plugin-keyboard 2.2.1 "Keyboard"
Comment puis-je résoudre ce problème?
Réponses:
Il suffit de mettre ce qui suit dans build-extras.gradle
la source
build-extras.gradle
dans mon projet du code ajouté à la racine pour le copier danshooks\after_platform_add
gist.github.com/charlesbedrosianGoogle a publié la nouvelle version 28.0.0-alpha1 de com.android.support:support-v4 qui ajoute 2 nouveaux attributs (android: fontVariationSettings et android: ttcIndex). Certains plugins utilisent les dernières bibliothèques compatibles avec Android, ce qui entraîne des incompatibilités indésirables.
Option 1: Installez le plugin cordova-android-support-gradle-release .
Plugin bien documenté qui "aligne diverses versions des bibliothèques de support Android spécifiées par d'autres plugins sur une version spécifique". Testé sans aucun comportement destructeur.
Lisez la documentation pour un ensemble complet d'options: Lisez - moi
Option 2 : Ajouter l'extrait de code suivant dans build.gradle sous plates-formes / Android
Attention: le code dans build.gradle sera écrasé si vous supprimez / ajoutez la plateforme Android. Si vous ne souhaitez pas utiliser le plugin pour une raison quelconque ou si cela ne fonctionne pas pour vous, créez plutôt un hook et écrasez le fichier à chaque fois. Vérifiez le deuxième commentaire ici .
Si le problème persiste, vous pouvez essayer:
OU
Assurez-vous qu'aucune version précédente de l'application n'est installée sur l'appareil que vous testez, car vous recevrez une erreur ambiguë lors de la tentative de rétrogradation de la version existante: "INSTALL_FAILED_VERSION_DOWNGRADE" et "UnhandledPromiseRejectionWarning: Unhandled PromiseRejectionWarning: Unhandled Promise Rejet"
la source
La même erreur m'arrive. Apparemment, une nouvelle version de la
com.android.support:support-v4
bibliothèque a été publiée et le plugin que j'utilise définitcom.android.support:support-v4:+
comme dépendance dansplugin.xml
. Le+
signe signifie qu'il obtiendra la dernière version (28.0.0), qui semble être incompatible avec d'autres plugins.J'ai pu créer une version de développement en changeant toutes les dépendances du plugin de
com.android.support:support-v4:+
àcom.android.support:support-v4:27.1.0
. Aussi, j'ai exécutéionic cordova platform remove android
etionic cordova platform add android
. J'espère que cela aide, au moins pour le développement.la source
Je viens de résoudre ce problème en accédant au dossier platform / android et en éditant le
project.properties
fichier) et en le remplaçantcom.android.support:support-v4:+
parcom.android.support:support-v4:27.1.0
.la source
Si vous avez vraiment juste besoin d'une solution rapide à ce problème pour que votre build s'exécute, vous pouvez essayer d'ajouter les lignes suivantes dans votre fichier platform / android / build.gradle:
Quoi qu'il en soit, définir la version ici n'est pas une solution durable.
la source
C'est étrange, mais cela fonctionne lorsque j'ajoute les lignes ci-dessous avec les mêmes versions.
Voici mes lignes liées dans le
platforms/android/build.gradle
fichier:Dans mon projet, le problème est survenu à cause du plugin 'cordova-plugin-crosswalk-webview'.
la source
J'ai la même erreur mais pas dans la construction de cordova. Une nouvelle version des
com.android.support:appcompat-v7
dépendances et. Mais la version incompatible est dans le troisième paquet qui dépend decom.android.support:appcompat-v7
. Donc je ne peux pas réparer le troisième paquet avec la solution de @avmatte .Utilisez la solution de @ Sai Teja pour trouver un paquet incompatible:
Puis corrigé avec:
Le code ci-dessus force la version des dépendances.
la source
J'étais confronté à la même erreur. A fait une recherche complète dans le répertoire plugin pour com.android.support:support-v4:+ et l'a remplacé par un code de version statique.
Pour moi, com.android.support:support-v4:23.4.0 fonctionnait très bien. Il n'était alors pas nécessaire de supprimer et de rajouter la plate-forme Android.
la source
Voici un moyen simple de résoudre ce problème qui persistera lorsque le répertoire de la plate-forme est reconstruit et il n'est pas nécessaire de parcourir tous vos plugins pour essayer de trouver un coupable. Créez un fichier
build-extras.gradle
avec ce contenu:Créez ensuite le fichier
after_platform_add/010_copy_build_extras.js
avec le contenu suivant:Maintenant, recréez la plate-forme Android et elle utilisera la bibliothèque de support épinglée.
la source
<platform name="android"> <hook src="hooks/copy_build_extras.js" type="before_build" /> </platform>
process.argv[2]
estbuild
pour moi!J'ai trouvé la solution sur Ionic Forum, qui était la seule solution qui a fonctionné pour moi:
Courir:
plateforme ionique cordova rm android
Courir:
plate-forme ionique cordova ajouter [email protected]
Courir:
plugin cordova ionique ajouter cordova-plugin-androidx
Courir:
plugin cordova ionique ajouter l'adaptateur cordova-plugin-androidx
Assurez-vous que votre gradle.properties a:
cdvMinSdkVersion = 19
Assurez-vous que votre build.gradle a:
Assurez-vous que votre config.xml contient:
depuis: https://forum.ionicframework.com/t/firebase-app-unable-to-compile-on-android-with-aapt-error/166564/7
qui est également traité dans la réponse stackoverflow: https://stackoverflow.com/a/56656680/839691
la source
Ionic 3
application. Je vous remercie!Certaines de vos bibliothèques devraient utiliser
Trouvez celui qui est, avec
Et ajoutez cette bibliothèque en tant que module si elle n'utilise pas une version spécifique dans sa dernière mise à jour (soulevez également un problème dans cette bibliothèque!;))
Merci à @avmatte!
EDIT: Vous pouvez également demander gradle pour forcer la version de la bibliothèque
la source
J'avais le même problème à l'improviste hier. Cela a commencé au hasard, mais à la lecture, il semble que cela soit lié à une mise à jour comme mentionné ci-dessus par @ cpro90. Cependant, j'ai essayé et je n'ai pas pu trouver où effectuer le changement manuel nécessaire.
Finalement, j'ai identifié que le problème était causé par mon plugin cordova-plugin-crosswalk-webview. Sur GitHub, j'ai trouvé le problème sur la repro du plugin ce matin, et il avait plus de 520 vues au déjeuner.
@UNUMObile a suggéré ce qui suit dans le
build.gradle
fichier pour forcer globalement une version antérieure:Cela a fonctionné immédiatement pour moi et peut aider les autres avec d'autres plugins qui ont également eu leur dépendance à 'com.android.support:support-4:<28. La nouvelle version 28 semble être le problème.
J'espère que cela aidera quelqu'un à avancer.
la source
Juste quelques conseils pour les développeurs Kotlin:
Si vous suivez ces réponses ici, vous êtes sûr de ne pas avoir de
support-v4
bibliothèque dans votre projet, mais vous voyez toujours cette erreur, veuillez jeter un œil à laktx
bibliothèque.Je viens de comprendre que j'utilise la dernière
1.0.0-alpha1
version de la bibliothèque ktx et cette erreur s'affiche; après avoir changé de version0.3
, tout est revenu à la normale maintenant.la source
Ajoutez les lignes suivantes à vos plates-formes / android / build.gradle
si le problème persiste, essayez d'exécuter cette commande:
la source
Dans votre
build.gradle
fichier, ajoutezEt dans votre
project.properties
fichier changezcordova.system.library.3
encordova.system.library.3=com.android.support:support-v13:27.+
.la source
Pour les utilisateurs de Phonegap Build , comme @catu l'a mentionné dans un commentaire, vous pouvez essayer ce plugin dont le but est d'éviter les échecs de construction causés par l'inclusion de différentes versions des bibliothèques de support .
la source
Résolvez simplement ce problème en plaçant les lignes de code suivantes dans le fichier platform / android / app / build.gradle, juste après le bloc buildscript {}:
la source
J'ai eu le même problème après l'installation du plugin cordova-plugin-file-opener2. Il a résolu après avoir fait: Option 1: Installez le plugin cordova-android-support-gradle-release. plugin cordova ajouter cordova-android-support-gradle-release --fetch
la source
Une autre approche avec la même solution consiste à créer un crochet. Il est persistant (après la réinstallation de la plate-forme), vous pouvez le valider et cela ne nécessite pas de ré-ajouter la plate-forme.
Init hook dans la configuration
Installez la dépendance fs dans votre projet:
Exécuter la construction:
la source
SIMPLE ET SUPER CORRECT MANIÈRE DE RÉSOUDRE IT!
Mettez simplement à jour le sdk et ajoutez la dernière version 2 d'Android ... et redémarrez l'ordinateur! Terminé...
Maintenant, nous avons le temps de parler de voitures et de sports ...
la source
J'ai eu le même problème et aucune des solutions proposées n'a fonctionné pour moi. L'installation de la dernière version d'Android SDK Build-tools (27.0.3) a résolu mon problème.
la source
Lien de la solution
Cela est dû au plugin compat. Supprimez ce plugin si vous avez une version plus ancienne (inférieure à 1.2.0 ) et définissez [email protected]
Travailler à mon cas. Merci :)
la source
met à jour la réponse de @Brad Pitcher:
hooks/copy_build_extras.js
config.xml
build-extras.gradle
dans le répertoire racinela source
Je rencontrais ce problème avec react native et il était causé par les lignes suivantes dans mon
android/app/build.gradle
:etc...
Apparemment, cela + s'est résolu à une nouvelle version 17.0.0 qui a cassé ma version.
Changer le + en 16.0.0 (ou 16.0.1 pour play-services-base) a résolu mon problème
la source
Ce problème me tue depuis une semaine.
Finalement j'ai fini sur
[email protected]
J'ai changé
android/project.properties
en changeantCe changement m'a finalement sorti de la fosse des ténèbres du message d'erreur ttcIndex.
Alors j'ai eu cette erreur
L'erreur était apparemment due à un problème de version Java. J'ai ensuite changé
android/build.gradle
avec le changement suivantNotez également que le
cordova-android-support-gradle-release
plugin est installé, mais je ne sais pas si j'en ai besoin.la source
C'est une entrée en double dans values.xml dans un dossier appelé
support-compat-28.0.0-alpha1.aar
.Vous trouverez ce fichier sous Windows à l'adresse
\users\YOURUSERID\.gradle\caches\transforms-1\files-1.1
Une fois dans ce dossier, vous devez aller plus loin dans values.xml .
Dans ce fichier, recherchez un élément
<declare-styleable name="FontFamilyFont>
.Dans cet élément, supprimez les QUATRE lignes avec
android:
dedans.Après avoir effectué ce changement, je peux reconstruire sans erreur.
la source