Ошибка сборки Ionic Android после перехода на AndroidX

Я работаю над проектом ionic 3. Мне пришлось перейти на androidx из-за внезапной проблемы со сборкой. Я создал платформу Android с версией [email protected], и я сделал все необходимое, но теперь у меня появляются другие ошибки при создании платформы Android.

Я создал платформу android с помощью cordova-android версии 8.0.0.

Добавлены строки ниже в файл gradle.properties

android.useAndroidX = правда android.enableJetifier = правда

Обновлены плагины до последней версии

это мой файл project.properties

target=android-28
android.library.reference.1=CordovaLib
android.library.reference.2=app
cordova.gradle.include.2=cordova-plugin-appsflyer-sdk/userapp-cordovaAF.gradle
cordova.system.library.1=com.facebook.android:facebook-android-sdk:4.40.0
cordova.gradle.include.3=cordova-plugin-firebase/userapp-build.gradle
cordova.system.library.2=com.google.android.gms:play-services-tagmanager:+
cordova.system.library.10=com.google.firebase:firebase-core:17.0.0
cordova.system.library.11=com.google.firebase:firebase-messaging:19.0.0
cordova.system.library.12=com.google.firebase:firebase-config:18.0.0
cordova.system.library.13=com.google.firebase:firebase-perf:18.0.0
cordova.gradle.include.4=cordova-plugin-googlemaps/userapp-tbxml-android.gradle
cordova.gradle.include.5=cordova-plugin-googlemaps/userapp-apikey.gradle
cordova.system.library.7=com.google.android.gms:play-services-maps:15.0.1
cordova.system.library.8=com.google.android.gms:play-services-location:15.0.1
cordova.system.library.9=com.android.support:support-core-utils:27.+
cordova.system.library.10=com.mixpanel.android:mixpanel-android:5.6.0
cordova.system.library.11=com.google.android.gms:play-services-base:+
cordova.system.library.14=com.android.support:support-v4:28.+
cordova.system.library.15=com.android.support:appcompat-v7:28.+
cordova.system.library.3=com.android.support:support-v4:28.+
cordova.system.library.4=com.android.support:appcompat-v7:28.+

Когда я создаю проект, я получаю указанные ниже ошибки.

error: cannot find symbol
import android.support.v4.app.ActivityCompat;
                             ^
 cannot find symbol
import android.support.v4.os.EnvironmentCompat;

error: cannot find symbol
          public void onConnectionFailed(@NonNull ConnectionResult result) {
                                          ^

Любая помощь будет принята с благодарностью.


person Dilan Fdo    schedule 19.06.2019    source источник
comment
project.properties по-прежнему ссылается на com.android.support. Имеет ли это смысл?   -  person Martin Zeitler    schedule 19.06.2019
comment
Когда я изменил его на `cordova.system.library.9 = androidx: support-core-utils: 27. + cordova.system.library.14 = androidx: support-v4: 28. + cordova.system.library.15 = androidx: appcompat-v7: 28. + `im getting below error` Не удалось найти совпадений для androidx: support-v4: 28. +, так как версии androidx: support-v4 недоступны. Не удалось найти совпадений для androidx: appcompat-v7: 28. +, так как версии androidx: appcompat-v7 недоступны. `   -  person Dilan Fdo    schedule 19.06.2019


Ответы (1)


Ошибки возникают из-за того, что ваш проект Android содержит исходный код Java (предположительно в виде плагинов Cordova), который ссылается на библиотеку поддержки Android, но вы включили AndroidX в своем проекте.
AndroidX и библиотека поддержки Android не могут работать бок о бок в одном проекте Android - это приведет к сбоям сборки, подобным этой.
Из вашего project.properties видно, что библиотека поддержки втягивается как зависимость Gradle (например, cordova.system.library.3=com.android.support:support-v4:28.+).

AndroidX (Jetpack) является преемником Библиотека поддержки Android.
Обратите внимание, что AndroidX теперь используется в последних версиях Play Services и библиотек Firebase < / а>.
Библиотека поддержки используется многими существующими плагинами, такими как
cordova-plugin-firebase.

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

  • cordova-plugin-androidx, чтобы включить AndroidX в проекте Android.
  • cordova-plugin-androidx-adapter для динамического исправления исходного кода любых подключаемых модулей, используя Библиотека поддержки для использования эквивалентов AndroidX и исправления конфигурации Gradle для замены ссылок библиотеки поддержки Android эквивалентами 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
person DaveAlden    schedule 19.06.2019
comment
Спасибо за решение. Я выполнил указанные вами шаги, и те ошибки, о которых я упоминал выше, исчезли. Но я получаю сообщение об ошибке cannot find symbol import com.google.firebase.iid.FirebaseInstanceIdService; - person Dilan Fdo; 19.06.2019
comment
Я удалил плагины firebase, и теперь он работает нормально ... но мне также нужен плагин firebase. Но выдает ошибку annot find symbol import com.google.firebase.iid.FirebaseInstanceIdService; В чем может быть причина? - person Dilan Fdo; 19.06.2019
comment
cordova-plugin-firebase устарел в отношении последних изменений в Firebase SDK (этот класс был удален). Вы можете установить его прямо из моей вилки, которая устранила эту проблему. - person DaveAlden; 19.06.2019
comment
Я пытаюсь установить вашу вилку, добавив ее в config.xml вот так <plugin name="cordova-plugin-firebase" spec="https://github.com/dpa99c/cordova-plugin-firebase.git" />, но она застряла в этом Discovered plugin "cordova-plugin-firebase" in config.xml. Adding it to the project - person Dilan Fdo; 19.06.2019
comment
Также я пробовал добавить такой плагин ionic cordova plugin add https://github.com/dpa99c/cordova-plugin-firebase.git Но он выдает эту ошибку Installing "cordova-plugin-firebase" for android Failed to install 'cordova-plugin-firebase': Error: Expected plugin to have ID "cordova-plugin-cocoapod-support" but got "cordova-plugin-cocoapod-supportx". - person Dilan Fdo; 19.06.2019
comment
Спасибо, Дэйв, так как 2 дня я был заблокирован, и с вашими плагинами Cordova теперь он работает, большое спасибо - person BMW; 20.06.2019
comment
OMG ... БОЛЬШОЕ СПАСИБО! Я пытался исправить это уже 2 дня, и сегодня утром я наконец нашел этот пост, и он снова работает. СПАСИБО!! - person TheTC; 21.06.2019
comment
@DaveAlden Привет, Дэйв, после обновления до cordova 9, когда я пытаюсь установить ваш плагин, я получаю сообщение об ошибке заполнения. использование requirecordovamodule для загрузки модуля fs, отличного от Cordova, не поддерживается. вместо этого добавьте этот модуль в свои зависимости и используйте обычный запрос для его загрузки. но если я перейду на более раннюю версию Cordova, я не смогу добавить ваш плагин - person Dilan Fdo; 23.08.2019
comment
Удивительный! Да благословит Бог тебя и твоих в тысячу раз, мой добрый человек! ПРИМЕЧАНИЕ: добавление этих плагинов может увеличить ваш minSdkVersion до 28; Мне пришлось поднять его до 22, чтобы мое (v1 Ionic) Android-приложение открылось должным образом (оно работает нормально, но при попытке установить приложение на мое устройство возникла проблема с анализом пакета. Ошибка. Т.е. я обновил данный строку в config.xml на это: <preference name="android-minSdkVersion" value="22" /> - person Sensei James; 02.09.2020