Когда я бегу cordova build android --buildConfig xxxx --release
, я получаю следующую ошибку:
ERROR: In <declare-styleable> FontFamilyFont, unable to find attribute android:fontVariationSettings
ERROR: In <declare-styleable> FontFamilyFont, unable to find attribute android:ttcIndex
Странно то, что я использую для компиляции две машины macOS, и эта ошибка возникает только на одной из них для одного и того же кода.
Вот результат, который ./gradlew cdvPrintProps
я получаю на двух машинах:
: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
Ниже приведен список используемых плагинов:
$ 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"
Как я могу исправить эту проблему?
Ответы:
Просто введите следующее в build-extras.gradle
источник
build-extras.gradle
в корневомhooks\after_platform_add
каталогеGoogle выпустила новую версию 28.0.0-alpha1 из com.android.support:support-v4 , который добавляет 2 новых атрибутов (Android: fontVariationSettings и Android: ttcIndex). Некоторые плагины используют новейшие библиотеки поддержки Android, что приводит к нежелательной несовместимости.
Вариант 1. Установите плагин cordova-android-support-gradle-release .
Хорошо задокументированный плагин, который «выравнивает различные версии библиотек поддержки Android, указанные другими плагинами, с определенной версией». Протестировано без деструктивного поведения.
Ознакомьтесь с полным набором опций в документации: Readme
Вариант 2 : добавьте следующий фрагмент кода в build.gradle в разделе платформы / android
Предупреждение: код в build.gradle будет перезаписан, если вы удалите / добавите платформу Android. Если вы не хотите использовать плагин по какой-либо причине или почему-то не работает для вас, вместо этого создайте перехватчик и каждый раз перезаписывайте файл. Отметьте 2-й комментарий здесь .
Если проблема не исчезнет, вы можете попробовать:
ИЛИ
Убедитесь, что на тестируемом устройстве не установлена предыдущая версия приложения, поскольку при попытке понизить существующую версию вы получите неоднозначную ошибку: «INSTALL_FAILED_VERSION_DOWNGRADE» и «UnhandledPromiseRejectionWarning: необработанное отклонение обещания»
источник
Та же ошибка происходит и со мной. Судя по всему, была выпущена новая версия
com.android.support:support-v4
библиотеки, и плагин, который я использую, определяетсяcom.android.support:support-v4:+
как зависимость вplugin.xml
. В+
знак означает , что он будет получить самую последнюю версию (28.0.0), который , кажется , кажется несовместимым с другими плагинами.Мне удалось создать версию для разработки, изменив все зависимости плагинов с
com.android.support:support-v4:+
наcom.android.support:support-v4:27.1.0
. Также я выполнилionic cordova platform remove android
иionic cordova platform add android
. Надеюсь, это поможет, по крайней мере, для развития.источник
Я только что исправил эту проблему, перейдя в папку platform / android и отредактировав
project.properties
файл) и заменив егоcom.android.support:support-v4:+
наcom.android.support:support-v4:27.1.0
.источник
Если вам действительно нужно быстро исправить эту проблему, чтобы запустить сборку, вы можете попробовать добавить следующие строки в свой файл platform / android / build.gradle:
Во всяком случае, установка версии здесь не является устойчивым решением.
источник
Странно, но это работает, когда я добавляю следующие строки с теми же версиями.
Это мои связанные строки в
platforms/android/build.gradle
файле:В моем проекте проблема возникла из-за плагина «cordova-plugin-crosswalk-webview».
источник
У меня такая же ошибка, но не в сборке кордовы. Новая версия
com.android.support:appcompat-v7
зависимостей и. Но несовместимая версия находится в третьем пакете, который зависит от.com.android.support:appcompat-v7
Поэтому я не могу исправить третий пакет с помощью решения @avmatte .Используйте решение @Sai Teja , чтобы найти несовместимый пакет:
Затем исправил это с помощью:
Приведенный выше код принудительно устанавливает версию зависимостей.
источник
Я столкнулся с той же ошибкой. Провел полное исследование каталога плагинов для com.android.support:support-v4:+ и заменил его статическим кодом версии.
Для меня com.android.support:support-v4:23.4.0 работал нормально. Тогда не было необходимости удалять и повторно добавлять платформу Android.
источник
Вот простой способ исправить это, который сохранится, когда каталог платформы будет перестроен, и нет необходимости просматривать все ваши плагины, чтобы попытаться найти виновника. Создайте файл
build-extras.gradle
с таким содержимым:Затем создайте файл
after_platform_add/010_copy_build_extras.js
со следующим содержимым:Теперь воссоздайте платформу Android, и она будет использовать закрепленную библиотеку поддержки.
источник
<platform name="android"> <hook src="hooks/copy_build_extras.js" type="before_build" /> </platform>
process.argv[2]
являетсяbuild
для меня!Я нашел решение на Ionic Forum, и это было единственное решение, которое сработало для меня:
Бегать:
ионная кордова платформа rm android
Бегать:
платформа ionic cordova добавить android@8.0.0
Бегать:
плагин ionic cordova добавить cordova-plugin-androidx
Бегать:
Плагин ionic cordova добавить адаптер Cordova-plugin-androidx
Убедитесь, что в вашем gradle.properties есть:
cdvMinSdkVersion = 19
Убедитесь, что в вашем build.gradle есть:
Убедитесь, что в вашем config.xml есть:
из: https://forum.ionicframework.com/t/firebase-app-unable-to-compile-on-android-with-aapt-error/166564/7
который также обрабатывается в ответе stackoverflow: https://stackoverflow.com/a/56656680/839691
источник
Ionic 3
приложении. Спасибо!Некоторые из ваших библиотек должны использовать
Найдите, какой из них, с
И добавьте эту библиотеку в качестве модуля, если она не использует конкретную версию в своем последнем обновлении (также поднимите проблему в этой библиотеке!;))
Спасибо @avmatte!
РЕДАКТИРОВАТЬ: вы также можете запросить gradle, чтобы заставить версию библиотеки
источник
Вчера у меня была такая же проблема. Он начался случайным образом, но, читая все вокруг, похоже, что это связано с обновлением, упомянутым выше @ cpro90. Однако я попытался и не смог найти, где внести необходимые изменения вручную.
В конце концов я определил, что проблема была вызвана моим плагином cordova-plugin-crosswalk-webview. Сегодня утром на GitHub я обнаружил проблему с воспроизведением плагина, и к обеду у него было более 520 просмотров.
@UNUMObile предлагает следующее в
build.gradle
файле, чтобы глобально установить более раннюю версию:Это сразу сработало для меня и может помочь другим с другими плагинами, которые также зависели от com.android.support:support-4:<28. Кажется, проблема в новой версии 28.
Надеюсь, это поможет кому-то двигаться вперед.
источник
Несколько советов для Kotlin-разработчика:
Если вы следуете этим ответам здесь, вы уверены, что у вас нет
support-v4
библиотеки в вашем проекте, но вы по-прежнему видите эту ошибку, взгляните наktx
библиотеку.Я просто
1.0.0-alpha1
понял , что использую последнюю версию библиотеки ktx, и эта ошибка проявляется; после того, как я вернулся к версии0.3
, теперь все в норме.источник
Добавьте следующие строки в свои платформы / android / build.gradle
если проблема не исчезла, попробуйте запустить эту команду:
источник
В вашем
build.gradle
файле добавьтеИ в вашем
project.properties
файле изменитеcordova.system.library.3
наcordova.system.library.3=com.android.support:support-v13:27.+
.источник
Для пользователей Phonegap Build , как @catu упомянул в комментарии, вы можете попробовать этот плагин, целью которого является предотвращение сбоев сборки, вызванных включением разных версий поддерживающих библиотек .
источник
Просто исправьте эту проблему, поместив следующие строки кода в файл platform / android / app / build.gradle сразу после блока buildscript {}:
источник
У меня была такая же проблема после установки плагина cordova-plugin-file-opener2. Он восстановлен после выполнения: Вариант 1. Установите плагин cordova-android-support-gradle-release. плагин cordova добавить cordova-android-support-gradle-release --fetch
источник
Другой подход с таким же решением - создать крючок. Он постоянный (после переустановки платформы), вы можете зафиксировать его, и повторное добавление платформы не требуется.
Хук инициализации в конфигурации
Установите зависимость fs в свой проект:
Запускаем сборку:
источник
СУПЕР ПРОСТОЙ И ПРАВИЛЬНЫЙ СПОСОБ РЕШЕНИЯ!
Просто обновите sdk и добавьте последнюю 2 версию android ... и перезагрузите компьютер! Готово...
Теперь у нас есть время поговорить об автомобилях и спорте ...
источник
У меня была такая же проблема, и ни одно из приведенных решений не помогло мне. Установка последней версии Android SDK Build-tools (27.0.3) решила мою проблему.
источник
Ссылка на решение
Это связано с плагином compat. Удалите этот плагин, если у вас более старая версия (менее 1.2.0 ), и установите cordova-android@6.3.0
Работаю над моим делом. Спасибо :)
источник
обновления ответа @Brad Pitcher:
hooks/copy_build_extras.js
config.xml
build-extras.gradle
в корневом каталогеисточник
Я столкнулся с этой проблемой с помощью response native, и это было вызвано следующими строками в моем
android/app/build.gradle
:и т.д...
По-видимому, этот + разрешился до новой версии 17.0.0, которая сломала мою сборку.
Изменение + на 16.0.0 (или 16.0.1 для play-services-base) решило мою проблему
источник
Эта проблема убивала меня целую неделю.
В конце концов я оказался на
android@6.4.0
Я изменил
android/project.properties
, изменивЭто изменение, наконец, вытащило меня из тьмы сообщений об ошибках ttcIndex.
Потом я получил эту ошибку
Ошибка, по-видимому, возникла из-за проблемы с версией Java. Затем я внес
android/build.gradle
следующее изменениеТакже обратите внимание, что у меня
cordova-android-support-gradle-release
установлен плагин, но я понятия не имею, нужен ли он мне.источник
Это повторяющаяся запись в values.xml в папке с именем
support-compat-28.0.0-alpha1.aar
.Вы найдете этот файл в Windows по адресу
\users\YOURUSERID\.gradle\caches\transforms-1\files-1.1
Оказавшись внутри этой папки, вам нужно пройти на несколько уровней глубже до values.xml .
В этом файле найдите элемент
<declare-styleable name="FontFamilyFont>
.В этом элементе удалите ЧЕТЫРЕ строки с
android:
.После того, как я внес это изменение, я могу снова построить без ошибок.
источник