Почему Android Studio заставляет использовать Androidx из библиотеки поддержки Android? - PullRequest
9 голосов
/ 18 июня 2019

Работал над проектом React Native, но внезапно перестал работать и начал выдавать ошибку:

Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
is also present at [androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
Suggestion: add ‘tools:replace=“android:appComponentFactory”’ to <application> element at AndroidManifest.xml:7:5-117 to override.

Я знаю, что Google сделал с классом Support Library после 28, и я знаю, как перенести весь проектиз класса библиотеки поддержки в класс AndroidX.

Мой вопрос:

  • Есть ли какой-либо возможный способ продолжать использовать класс библиотеки поддержки вместо перехода на класс AndroidX?

  • Как решить эту проблему?

Ответы [ 5 ]

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

Вы можете заблокировать свои googleservices и версии firebase, чтобы избежать androidX.

В android / build.gradle добавить:

buildscript {
  ...
  ext {
    // Lock down googlePlayServicesVersion
    googlePlayServicesVersion = "16.1.0"
    firebaseVersion = "17.6.0"
  }
}

ИЛИ в gradle.properties add:

googlePlayServicesVersion=16.1.0
firebaseVersion=17.6.0
2 голосов
/ 18 июня 2019

По данным Дэн Лью

Артефакты библиотеки поддержки устарели, и вся дальнейшая разработка идет на AndroidX, поэтому избежать этой миграции не избежать. Надеемся, однако, что эти советы дадут вам более четкий путь перехода.

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

Вероятно, опубликуйте файл Gradle уровня вашего приложения здесь. В идеале, если вы используете какую-то другую зависимость, которая является обновленной / последней, тогда вы получите эту ошибку.

Если какая-либо из зависимостей является самой последней / обновленной, понизьте ее до более низкой версии, не просматривая журналы изменений на своем github. Для меня виновником была полосовая версия, которая внутренне использовала androidx и получала эту ошибку. я понизил это и бум! Это прошло :)

А также отключить androidx из gradle.properties файла, используя

android.useAndroidX=false
android.enableJetifier=false

Что заставляет андроид отключаться.

1 голос
/ 26 июня 2019

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

В реактивном режиме, в частности, его было трудно конвертировать, потому что gradle не создает исходные файлы, кроме как во время первоначального рефакторинга через Android Studio, и реагирует-native отправляет свой собственный код в виде исходных файлов.

Теперь вы можете просто использовать инструмент 'jetifier' , а после его установки и первого запуска добавить npx jetify вpostinstall из вашего package.json для обеспечения постоянной совместимости между установками / обновлениями модуля узла.

Тогда вы сможете успешно преобразовать ваше приложение в AndroidX, начните в зависимости от новых версий библиотеки AndroidX, но по-прежнему используйте библиотеки, которые не были преобразованы,Вы будете лучше подготовлены к реактивный нативный 0,60, который будет AndroidX

Если вам нужно отложить AndroidX и использовать реактивный нативный, по крайней мере для реагирующего нативный 0,59, вы также можете использоватьинструмент jetifier в обратном порядке для изменения ссылок на источник в node_modules из androidx на ссылки для сравнения.

1 голос
/ 22 июня 2019

Есть ли какой-либо возможный способ продолжать использовать класс библиотеки поддержки, а не переходить на класс AndroidX?

Да, это возможно, но вы можете только отложить это событие.
Вы не можете избежать этого.

Новые библиотеки Firebase и новые Библиотеки Google Play требуют androidx (см. Списки ниже)

В скором времени другие третьи библиотеки будут использовать эти зависимости.

Как решить эту проблему?

Вы можете использовать только последние версии Firebase / Google Play Services / третьих библиотек, которые работают с библиотеками поддержки v.28 или ниже.

Firebase:

Ads version 18.0.0
Analytics version 17.0.0
App Indexing version 19.0.0
Authentication version 18.0.0
Cloud Firestore version 20.0.0
Cloud Firestore-ktx version 20.0.0
Cloud Functions (client) version 18.0.0
Cloud Messaging version 19.0.0
Cloud Storage version 18.0.0
Dynamic Links version 18.0.0
In-App Messaging version 18.0.0
In-App Messaging Display version 18.0.0
Instance IDs version 19.0.0
ML Kit Common version 20.0.0
ML Kit Vision version 21.0.0
ML Kit Image Labeling Model version 18.0.0
ML Kit Face Detection Model version 18.0.0
ML Kit Object Detection and Tracking Model version 17.0.0
ML Kit Vision AutoML version 17.0.0
ML Kit Natural Language version 20.0.0
ML Kit Language Identification Model version 20.0.0
ML Kit Smart Reply Model version 20.0.0
ML Kit Translate Model version 20.0.0
ML Kit Model Interpreter version 20.0.0
Realtime Database version 18.0.0
Performance Monitoring version 18.0.0
Remote Config version 18.0.0
A/B Testing version 18.0.0

Библиотеки сервисов воспроизведения:

com.google.android.datatransport:transport-api:2.0.0
com.google.android.datatransport:transport-backend-cct:2.0.0
com.google.android.datatransport:transport-runtime:2.0.0
com.google.android.gms:play-services-ads:18.0.0
com.google.android.gms:play-services-ads-identifier:17.0.0
com.google.android.gms:play-services-ads-lite:18.0.0
com.google.android.gms:play-services-afs-native:17.0.0
com.google.android.gms:play-services-analytics:17.0.0
com.google.android.gms:play-services-analytics-impl:17.0.0
com.google.android.gms:play-services-appinvite:18.0.0
com.google.android.gms:play-services-audience:17.0.0
com.google.android.gms:play-services-auth:17.0.0
com.google.android.gms:play-services-auth-api-phone:17.0.0
com.google.android.gms:play-services-awareness:17.0.0
com.google.android.gms:play-services-base:17.0.0
com.google.android.gms:play-services-basement:17.0.0
com.google.android.gms:play-services-cast:17.0.0
com.google.android.gms:play-services-cast-framework:17.0.0
com.google.android.gms:play-services-clearcut:17.0.0
com.google.android.gms:play-services-cronet:17.0.0
com.google.android.gms:play-services-drive:17.0.0
com.google.android.gms:play-services-fido:18.0.0
com.google.android.gms:play-services-fitness:17.0.0
com.google.android.gms:play-services-flags:17.0.0
com.google.android.gms:play-services-games:18.0.0
com.google.android.gms:play-services-gass:18.0.0
com.google.android.gms:play-services-gcm:17.0.0
com.google.android.gms:play-services-identity:17.0.0
com.google.android.gms:play-services-iid:17.0.0
com.google.android.gms:play-services-instantapps:17.0.0
com.google.android.gms:play-services-location:17.0.0
com.google.android.gms:play-services-maps:17.0.0
com.google.android.gms:play-services-measurement:17.0.0
com.google.android.gms:play-services-measurement-api:17.0.0
com.google.android.gms:play-services-measurement-impl:17.0.0
com.google.android.gms:play-services-measurement-sdk:17.0.0
com.google.android.gms:play-services-measurement-sdk-api:17.0.0
com.google.android.gms:play-services-nearby:17.0.0
com.google.android.gms:play-services-oss-licenses:17.0.0
com.google.android.gms:play-services-panorama:17.0.0
com.google.android.gms:play-services-phenotype:17.0.0
com.google.android.gms:play-services-places:17.0.0
com.google.android.gms:play-services-places-placereport:17.0.0
com.google.android.gms:play-services-plus:17.0.0
com.google.android.gms:play-services-safetynet:17.0.0
com.google.android.gms:play-services-stats:17.0.0
com.google.android.gms:play-services-tagmanager:17.0.0
com.google.android.gms:play-services-tagmanager-api:17.0.0
com.google.android.gms:play-services-tagmanager-v4-impl:17.0.0
com.google.android.gms:play-services-tasks:17.0.0
com.google.android.gms:play-services-vision:18.0.0
com.google.android.gms:play-services-vision-common:18.0.0
com.google.android.gms:play-services-vision-image-label:18.0.0
com.google.android.gms:play-services-wallet:17.0.0
com.google.android.gms:play-services-wearable:17.0.0
...