Проблема сборки Cordova, связанная с fontVariationSettings - PullRequest
0 голосов
/ 15 ноября 2018

У меня проблема со сборкой проекта Cordova, которую я унаследовал, а именно возникшая ошибка: -

: CordovaLib: transformClassesAndResourcesWithPrepareIntermediateJarsForDebug: app: processDebugResourcesC: \ Users \ andy.gradle \ caches \\ transforms-1 \ files-1.1 \ support-compat-28.0.0.aar \ 96270291fb4c7e49ddab8d4d1a4f36f7 \ res \ values ​​\ values.xml: 133: 5-70: AAPT: ошибка: ресурс android: attr / fontVariationSettings не найден.

У меня есть другой проект, который успешно создается, и разница между этими двумя проектами выглядит как файл platforms\android\project.settings, если я вручную изменяю настройку сборки своего проекта.Однако, поскольку этот файл создается заново каждый раз, когда я запускаю cordova prepare android, это не идеальная ситуация, рассматриваемая настройка: -

cordova.system.library.1=com.android.support:support-v4:+ 

, если я изменяю это на: -

cordova.system.library.1=com.android.support:support-v4:24.1.1+ 

моя сборка успешна!

Поэтому мой вопрос заключается в том, что влияет на этот параметр, так как я чувствую, что мне нужно понять причину отличия значения, отличную от рабочего проекта, имеющего больше зависимостей, чемрабочий проект содержит те же ссылки, но имеет одну дополнительную зависимость: -

cordova-plugin-file-opener2 

У меня не установлен SDK версии 28, я вижу логику ошибки и могу предположить, что установка версии 28 можетрешить проблему, но мне хотелось бы понять, почему один проект создает настройки с одним номером версии, а второй проект - с другим?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Просто для того, чтобы добавить некоторые подробности к моему решению, на случай, если оно поможет кому-нибудь еще в будущем!

DaveAlden добавил очень полезное описание того, что происходит выше, которое стоит прочитать, так как его очень труднополучить четкое краткое объяснение того, что происходит или должно происходить с этими технологиями.

В моем проекте действительно был установлен плагин cordova-android-support-gradle-release, и он был установлен на 27.+, однако я выполнил следующий процесс и всезатем начал работать: -

  1. Обновил программное обеспечение моего Android SDK до последней
  2. Обновил Cordova с версии 8.0.0 до 8.1.2
  3. Удален плагин cordova plugin add cordova-android-support-gradle-release
  4. Добавлен плагин обратно в cordova plugin add cordova-android-support-gradle-release --variable ANDROID_SUPPORT_VERSION=27

Затем я повторил сборку и все стало работать.

ОБНОВЛЕНИЕ: Я пришел сегодня для развертывания своего приложения иЯ снова получил ту же ошибку, чтобы решить ее, я запустил: -

cordova plugin remove cordova-android-support-gradle-release<br /> cordova plugin add cordova-android-support-gradle-release --variable ANDROID_SUPPORT_VERSION=27.+

, и затем он успешно собирается, я понятия не имею, почему это происходит, но эточто-то делать с неправильной настройкой файла \platforms\android\project.properties, так как при успешной сборке этот файл содержит следующую строку: -

cordova.gradle.include.1=cordova-android-support-gradle-release/portal-cordova-android-support-gradle-release.gradle

Я уверен, что кто-то с более понятнымпонимание процесса сборки может добавить некоторую ясность!

0 голосов
/ 17 ноября 2018

В проектах Cordova версии собственных библиотек, загружаемых в сборку Android через Gradle, напрямую контролируются плагинами Cordova, установленными в вашем проекте. Конфигурация Gradle динамически генерируется Cordova, поэтому при каждом запуске cordova prepare android файл build.gradle регенерируется.

В этом случае библиотечной зависимостью является библиотека поддержки Android (com.android.support).

cordova-plugin-file-opener2 указывает версию +, которая будет использовать самую последнюю версию, которая в настоящее время v28.0.0, как можно увидеть на странице выпусков .

Однако, если другой плагин в вашем проекте указывает другую версию, это приведет к проблемам и часто приводит к сбоям из-за конфликтов версий. В нативном проекте Android файл build.gradle находится под вашим непосредственным контролем, поэтому у вас никогда не возникнет этих проблем.

Одним из решений является установка в ваш проект плагина cordova-android-support-gradle-release . Этот плагин переопределяет версии библиотеки поддержки Android, указанные в других плагинах, что позволяет выравнивать версии и устранять проблемы со сборкой.

Например, в вашем случае вы можете запустить:

cordova plugin add cordova-android-support-gradle-release --variable ANDROID_SUPPORT_VERSION=24.1.1

Это установит плагин и переопределит версии, указанные другими плагинами, чтобы обеспечить включение v24.1.1 библиотеки поддержки в ваш проект.

Одним из соображений является то, что v24 довольно старый, поэтому вы можете попробовать более новую версию, например ::

.
cordova plugin add cordova-android-support-gradle-release --variable ANDROID_SUPPORT_VERSION=27.+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...