Ионная ошибка сборки Android после перехода на Androidx - PullRequest
0 голосов
/ 19 июня 2019

Я работаю над проектом ionic 3. Мне пришлось мигрировать на androidx из-за внезапной проблемы со сборкой. Я создал платформу Android с помощью cordova-android@8.0.0 версии и сделал все необходимое, но теперь я получаю другие ошибки при сборке платформы 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) {
                                          ^

Любая помощь будет высоко ценится. Спасибо

1 Ответ

4 голосов
/ 19 июня 2019

Ошибки возникают из-за того, что ваш проект 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 и сталкиваетесь с ошибками, вы можете вместо этого использовать my forkэтого плагина , который опубликован как 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
...