Приложение Ionic Cordova перестало компилироваться после обновления Google Firebase SDK от 17 июня - PullRequest
21 голосов
/ 18 июня 2019

Я не могу скомпилировать приложение 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 notнайдено.

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 \ platform \ android \ app \ build \ промежуточные звенья \ 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

Ответы [ 7 ]

36 голосов
/ 18 июня 2019

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

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

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

Первые два требования могут быть решены путем обновления для использования cordova-android@8.0.0.

Третье требует, чтобы ваш проект 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
7 голосов
/ 19 июня 2019

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 cordova-plugin-firebase-lib@3.3.0

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
4 голосов
/ 19 июня 2019

Имея в платформе / 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 не найден).

cordova-android@8.0.0 + cordova-plugin-androidx + cordova-plugin-androidx-adapter работал для меня отлично.

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

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

2 голосов
/ 23 июня 2019

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

платформа Cordova удалить Android
Cordova плагин удалить Cordova-плагин-Firebase
Cordova плагин добавить Cordova-plugin-firebase-lib@3.3.0
платформа Cordova добавить Android

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

2 голосов
/ 21 июня 2019

Я предлагаю вам попытаться добавить в свой 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'
    }
}

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

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

1 голос
/ 12 июля 2019

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

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

  1. Установите последнюю версию cordova (cordova@9.0.0):

    npm install -g cordova

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

    cordova create folderName com.projectName.app имя_проекта

  3. Добавить последнюю платформу Cordova-Android (cordova-android@8.0.0):

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

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

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

    Cordova плагин добавить Cordova-плагин-Firebase-Lib

  6. Установить cordova-plugin-androidx

    плагин Cordova добавить Cordova-плагин-AndroidXX

  7. Установка cordova-plugin-androidx-adapter

    плагин 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/Icon-60x60@3x.png" width="180" />
    <icon height="60" src="res/ios/icon/Icon-20x20@3x.png" width="60" />
    <icon height="120" src="res/ios/icon/Icon-40x40@3x.png" width="120" />
    <icon height="76" src="res/ios/icon/Icon-76x76@1x.png" width="76" />
    <icon height="152" src="res/ios/icon/Icon-76x76@2x.png" width="152" />
    <icon height="40" src="res/ios/icon/Icon-20x20@2x.png" width="40" />
    <icon height="80" src="res/ios/icon/Icon-40x40@2x.png" width="80" />
    <icon height="57" src="res/ios/icon/Icon-29x29@2x.png" width="57" />
    <icon height="29" src="res/ios/icon/Icon-29x29@1x.png" width="29" />
    <icon height="58" src="res/ios/icon/Icon-29x29@2x.png" width="58" />
</platform>
  1. Скопируйте вашу старую res папку в корень вашего проекта (папка со всеми вашими иконками и заставками).

  2. Замените содержимое вашей новой папки / www содержимым оригинальной.

  3. Наконец, создайте свой проект

    Cordova build android

В моем случае у меня было два плагина, которые конфликтовали с новыми версиями cordova, cordova-android, firebase sdk: cordova-plugin-firebase и cordova-plugin-locationservices и эти шаги позволяют мне продолжить мои проекты.

0 голосов
/ 07 июля 2019
ionic cordova platform remove android

ionic cordova plugin remove cordova-plugin-firebase

ionic cordova plugin add cordova-plugin-firebase-lib@3.3.0

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

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

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

ionic cordova platform add android@8.0.0

if required install below 2 plugin for android 8.0.0

ionic cordova plugin add cordova-plugin-androidx

и

ionic cordova cordova-plugin-androidx-adapter
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...