Приложение Ionic Cordova перестало компилироваться после обновления Google Firebase SDK 17 июня

Я не могу скомпилировать приложение Ionic Cordova после обновления версии Firebase Major с критическими изменениями, особенно с обновлением 17 июня 2019 года.

Я попытался перейти на Android Cordova 6.3.0, но мой проект должен быть 7.0.0.

Это моя ионная информация:

@ionic/cli-utils  : 1.19.2
    ionic (Ionic CLI) : 3.20.0

global packages:

    cordova (Cordova CLI) : 8.0.0

local packages:

    @ionic/app-scripts : 3.2.1
    Cordova Platforms  : android 7.0.0 browser 5.0.4
    Ionic Framework    : ionic-angular 3.9.3

System:

    Android SDK Tools : 26.1.1
    Node              : v8.9.1
    npm               : 5.5.1
    OS                : Windows 10

Environment Variables:

    ANDROID_HOME : C:\Development\android-sdk

Misc:

    backend : pro

Это ошибка, которую я получаю:

: app: processDebugResources C:\Users\mmzep.gradle\caches\transforms-1\files-1.1\core-1.0.0.aar\73b4a83ab5e76f20c84a66b1c8444d08\res\values \ values.xml: 133: 5-70: AAPT: ошибка: ресурс android: attr/fontVariationSettings не найден.

C:\Users\mmzep.gradle\caches\transforms-1\files-1.1\core-1.0.0.aar\73b4a83ab5e76f20c84a66b1c8444d08\res\values \ values.xml: 133: 5-70: AAPT: ошибка: ресурс android: attr/ttcIndex не найден.

C:\Users\mmzep\Desktop\mario\Seven\SevenPassengerApp\платформы\android\app\build\middleates\incremental\mergeDebugResources\merged.dir\values \ values.xml: 95: ошибка: ресурс android: attr/fontVariationSettings нет найденный. C:\Users\mmzep\Desktop\mario\Seven\SevenPassengerApp\платформы\android\app\build\middleates\incremental\mergeDebugResources\merged.dir\values \ values.xml: 95: ошибка: ресурс android: attr/ttcIndex нет найденный. ошибка: не удалось связать ссылки.

Не удалось выполнить aapt

com.android.ide.common.process.ProcessException: не удалось выполнить aapt

Ответ 1

Эта ошибка сборки связана с выходом основной версии библиотек Google Play Services и Firebase 17 июня.

Новые версии библиотеки имеют следующие требования:

  • Обновите com.android.tools.build:gradle до версии 3.2.1 или новее.
  • Обновите compileSdkVersion до 28 или более compileSdkVersion версии.
  • Обновите ваше приложение для использования Jetpack (AndroidX)

Первые два требования могут быть решены путем обновления для использования [email protected].

Третий требует, чтобы ваш проект Android перешел на использование AndroidX (Jetpack). AndroidX является преемником широко используемой библиотеки поддержки Android. AndroidX теперь используется в последних версиях библиотек Play Services/Firebase, а библиотека Support используется многими существующими плагинами, такими как cordova-plugin-firebase. Две библиотеки не могут жить бок о бок в одной и той же сборке Android - это приведет к сбою сборки.

Чтобы решить эту проблему, добавьте следующие два плагина в ваш проект Cordova:

  • cordova-plugin-androidx для включения AndroidX в проекте Android.
  • cordova-plugin-androidx-adapter для динамического исправления исходного кода любых плагинов с использованием библиотеки поддержки для использования эквивалентов AndroidX.

Рабочий пример того, как попробовать это в тестовом проекте, см. В моем комментарии к этой проблеме Github.

Примечание: если вы используете cordova-plugin-firebase и сталкиваетесь с ошибками, вы можете вместо этого использовать мой форк этого плагина, который опубликован как cordova-plugin-firebasex и исправлен для решения проблем, вызванных новым Firebase SDK:

rm -Rf platforms/android
cordova plugin rm cordova-plugin-firebase
rm -Rf plugins/ node_modules/
npm install
cordova plugin add cordova-plugin-firebasex
cordova platform add android

Ответ 2

1. Первый ответ

Мы создали PR для этого https://github.com/wizpanda/cordova-plugin-firebase-lib/pull/13, но для этого требуется обновить cordova-android до 8.0.0.

Обходной путь делается для cordova-android 7.x, но в то же время продолжается дискуссия о том, поддерживать его или нет.

2. Изменить - 19 июня 2019

Выпущена новая версия v3.3.0 для устранения проблемы, вызванной выпуском Google Firebase, который поддерживает cordova-android <= 7.1.4. https://github.com/wizpanda/cordova-plugin-firebase-lib/pull/14#issuecomment-503499409

cordova plugin remove cordova-plugin-firebase-lib
# Or if you were using original fork
#cordova plugin remove cordova-plugin-firebase
cordova plugin add [email protected]

3. Изменить - 20 июня 2019

Выпущена новая версия v4.0.1, чтобы устранить проблему, вызванную выпуском Google Firebase, который поддерживает cordova-android >= 8.0.0. https://github.com/wizpanda/cordova-plugin-firebase-lib/pull/14#issuecomment-503499409

cordova plugin remove cordova-plugin-firebase-lib
# Or if you were using original fork
#cordova plugin remove cordova-plugin-firebase
cordova plugin add cordova-plugin-firebase-lib

Ответ 3

Имея в платформе /android/project.properties следующие настройки:

cordova.gradle.include.1=cordova-plugin-firebase/app-build.gradle
cordova.system.library.4=com.google.firebase:firebase-core:+
cordova.system.library.5=com.google.firebase:firebase-messaging:+
cordova.system.library.6=com.google.firebase:firebase-config:+
cordova.system.library.7=com.google.firebase:firebase-perf:+

У меня была такая же проблема (ошибка: ресурс android: attr/ttcIndex не найден).

[email protected] + cordova-plugin-androidx + cordova-plugin-androidx-адаптер работал у меня отлично.

Спасибо за это решение.

Мне просто интересно, если это хорошая долгосрочная ставка, чтобы использовать эти два плагина. Есть мнение?

Ответ 4

Следуйте приведенной ниже последовательности для cordova-android <= 7.1.4

платформа Cordova удалить Android
Cordova плагин удалить Cordova-плагин-Firebase
Cordova плагин добавить [email protected]
платформа Cordova добавить Android

cordova-plugin-firebase теперь включен в cordova-plugin-firebase-lib

Ответ 5

Я предлагаю вам попробовать добавить в свой build-extras.gradle, внутри папки platform/android вашего проекта, следующее:

configurations.all {
    resolutionStrategy {
         force 'com.android.support:support-v4:27.1.1'
         force 'com.google.android.gms:play-services-tagmanager:16.0.8'
         force 'com.google.android.gms:play-services-base:16.1.0'
         force 'com.google.android.gms:play-services-tasks:16.0.1'
         force 'com.google.android.gms:play-services-basement:16.2.0'
         force 'com.google.android.gms:play-services-gcm:16.1.0'
         force 'com.google.android.gms:play-services-stats:16.0.1'
         force 'com.google.android.gms:play-services-location:16.0.0'
         force 'com.google.android.gms:play-services-auth:16.0.1'
         force 'com.google.android.gms:play-services-identity:16.0.0'
    }
}

Таким образом, вы заставите команду build игнорировать обновления и использовать предыдущие версии. Вам даже не нужно менять плагин (ни версию для платформы Android)!

Каждый раз, когда обновляются библиотеки Firebase, это происходит... и это очень раздражает. Мне бы хотелось отключить автоматическое обновление зависимостей при сборке, но я не думаю, что это возможно.

Ответ 6

Выполните следующие действия, если вы все перепробовали и пока не можете создать свой проект android cordova.

Я работал над этой проблемой в течение пяти дней, и это единственное решение, которое работает для меня (это повторное составление решений и комментариев, упорядоченных в последовательности, которой я следовал, чтобы мои проекты работали):

  1. Установите последнюю версию cordova ([email protected]):

    npm install -g cordova

  2. Создайте новый пустой проект Cordova (используйте тот же обратный домен и имя проекта):

    Cordova создать имя папки com.projectName.app имя проекта

  3. Добавьте самую последнюю платформу Cordova-Android ([email protected]):

    платформа Cordova добавить Android

  4. Установите каждый плагин, который появляется в вашем оригинальном проекте (кроме cordova-plugin-firebase). Я рекомендую вам создавать приложение после каждой установки плагина, чтобы проверить, все ли в порядке.

  5. Установите cordova-plugin-firebase-lib

    кордова плагин добавить кордова-плагин-firebase-lib

  6. Установите Cordova-плагин-AndroidX

    кордова плагин добавить кордова-плагин-androidx

  7. Установите cordova-plugin-androidx-адаптер

    Cordova плагин добавить Cordova-плагин-Android-адаптер

  8. Скопируйте файлы настроек firebase в корневой каталог вашего проекта: google-services.json для Android и GoogleService-Info.plist для iOS

  9. Скопируйте теги ресурсов (для значков и заставок) из старого config.xml и вставьте их в новый config.xml.

<platform name="android">
    <icon src="res/android/drawable-hdpi/icon.png" />
    <icon density="ldpi" src="res/android/drawable-ldpi/icon.png" />
    <icon density="mdpi" src="res/android/drawable-mdpi/icon.png" />
    <icon density="hdpi" src="res/android/drawable-hdpi/icon.png" />
    <icon density="xhdpi" src="res/android/drawable-xhdpi/icon.png" />
</platform>
<platform name="ios">
    <icon height="180" src="res/ios/icon/1024x1024.png" width="1024" />
    <icon height="180" src="res/ios/icon/[email protected]" width="180" />
    <icon height="60" src="res/ios/icon/[email protected]" width="60" />
    <icon height="120" src="res/ios/icon/[email protected]" width="120" />
    <icon height="76" src="res/ios/icon/[email protected]" width="76" />
    <icon height="152" src="res/ios/icon/[email protected]" width="152" />
    <icon height="40" src="res/ios/icon/[email protected]" width="40" />
    <icon height="80" src="res/ios/icon/[email protected]" width="80" />
    <icon height="57" src="res/ios/icon/[email protected]" width="57" />
    <icon height="29" src="res/ios/icon/[email protected]" width="29" />
    <icon height="58" src="res/ios/icon/[email protected]" width="58" />
</platform>

Ответ 7

Чтобы решить вашу проблему, используйте следующий плагин:

cordova plugin add cordova-android-support-gradle-release

Из документов:

TL; DR: для предотвращения сбоев сборки, вызванных включением различных версий библиотек поддержки.

Некоторые плагины Cordova включают библиотеки поддержки Android для поддержки их. Чаще всего они теперь включены в проект Cordova, указав их как зависимости Gradle.

Проверьте следующее хранилище:

https://github.com/dpa99c/cordova-android-support-gradle-release/blob/master/README.md

Ответ 8

Для тех, кто столкнулся с этой проблемой после 17.06.2009. Потратив несколько часов на эту проблему, наконец-то нашел решение. Эта ошибка сборки связана с выпуском основной версии Google Play Services и Firebase 17/06/2019

ionic cordova platform rm android
ionic cordova platform add [email protected] 
ionic cordova plugin add cordova-plugin-androidx 
ionic cordova plugin add cordova-plugin-androidx-adapter

Примечание: это решит вашу проблему

Примечание. Если вы используете cordova-plugin-firebase и сталкиваетесь с ошибками, вы можете использовать этот плагин, который опубликован как cordova-plugin-firebasex и исправлен для устранения проблем, вызванных новым Firebase SDK:

rm -Rf platforms/android
cordova plugin rm cordova-plugin-firebase
rm -Rf plugins/ node_modules/
npm install
cordova plugin add cordova-plugin-firebasex
cordova platform add android

Я надеюсь, это поможет.

ура!

Ответ 9

У меня тоже такая же проблема сборки. я добавил

  1. [email protected]
  2. Cordova-плагин-androidx
  3. Cordova-плагин-androidx-адаптер

но теперь получая ошибку Неправильные данные, чанк должен быть строкой или буфером, а не объектом [ОШИБКА] Произошла ошибка при запуске подпроцесса cordova.

    cordova.cmd build android exited with exit code 1.

Изображение ошибки

Пожалуйста, помогите мне решить это.

Ответ 10

ionic cordova platform remove android

ionic cordova plugin remove cordova-plugin-firebase

ionic cordova plugin add [email protected]

(если вы удалили этот npm, установите --save @ionic-native/firebase @4 и установите снова)

У меня была проблема слияния декс в андроиде 7.0.0 для меня. Поэтому я использовал Android 8.0.0

Для использования Android 8.0.0

ionic cordova platform add [email protected]

if required install below 2 plugin for android 8.0.0

ionic cordova plugin add cordova-plugin-androidx

а также

ionic cordova plugin add cordova-plugin-androidx-adapter

Ответ 11

Удалите папку node_modules и файл package-lock.json, затем при запуске терминала:

npm install