为什么 Android Studio 强制使用 Android 支持库中的 Androidx?
Why Android Studio is forcing to use Androidx from Android support library?
正在处理 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 在 28 岁之后完成了支持库 class,我知道如何将整个项目从支持库 class 迁移到 AndroidX class。
我的问题是:
是否有任何可能的方法继续使用支持库 class 而不是转移到 AndroidX class?
如何解决这个问题?
可能 post 您的应用级别 gradle 文件在这里。理想情况下,如果您使用的是 updated/latest 等其他依赖项,那么您会收到此错误。
如果任何依赖项是 latest/updated,请通过检查 github 的更改日志将其降级到较低版本。对我来说,罪魁祸首是内部使用 androidx 的条纹版本,并且出现了这个错误。我将其降级并繁荣!它不见了:)
并使用
从 gradle.properties
文件中禁用 androidx
android.useAndroidX=false
android.enableJetifier=false
强制禁用 androidx。
根据Dan Lew
The support library artifacts are being deprecated and all future development is going into AndroidX, so there's no avoiding this migration. Hopefully, though, these tips will give you a clearer transition path.
您可以锁定您的 googleservices 和 firebase 版本以避免 androidX。
在android/build.gradle中添加:
buildscript {
...
ext {
// Lock down googlePlayServicesVersion
googlePlayServicesVersion = "16.1.0"
firebaseVersion = "17.6.0"
}
}
或在gradle.properties中添加:
googlePlayServicesVersion=16.1.0
firebaseVersion=17.6.0
Is there any possible way to keep using Support Library class rather than shifting to AndroidX class?
是的,这是可能的,但你只能推迟这个事件。
你无法避免它。
新的 Firebase libraries and the new Google Play Libraries 需要 androidx(检查下面的列表)
在短时间内其他第三方库将使用这些依赖项。
How to fix this issue?
您只能使用最新版本的 firebase/google 播放 services/third 支持库 v.28 或更低版本的库。
这里是 firebase 和 google 播放服务库的列表,它们开始与 androidx 的依赖项一起工作。
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
您提到您正在使用 react-native。正如其他地方提到的,你无法永远避免 AndroidX,尽管你可以推迟它。
在 react-native 中尤其难以转换,因为 gradle 不对源文件进行 jetify,除了在通过 Android Studio 进行的原始重构期间,并且 react-native 发布了它本机代码作为源文件。
现在您可以简单地使用 'jetifier' 工具,在安装它并 运行 第一次安装它后,在 package.json 的安装后添加 npx jetify
跨节点模块的持续喷射 installs/updates.
那么您应该能够成功地将您的应用程序转换为 AndroidX,开始依赖新的 AndroidX 库版本,但仍然使用尚未转换的库。您将为 react-native 0.60 which will be AndroidX
做好更充分的准备
如果你必须推迟 AndroidX 并且正在使用 react-native,至少 react-native 0.59,你也可以反向使用 jetifier 工具修改 node_modules 从 androidx 到兼容参考。
正在处理 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 在 28 岁之后完成了支持库 class,我知道如何将整个项目从支持库 class 迁移到 AndroidX class。
我的问题是:
是否有任何可能的方法继续使用支持库 class 而不是转移到 AndroidX class?
如何解决这个问题?
可能 post 您的应用级别 gradle 文件在这里。理想情况下,如果您使用的是 updated/latest 等其他依赖项,那么您会收到此错误。
如果任何依赖项是 latest/updated,请通过检查 github 的更改日志将其降级到较低版本。对我来说,罪魁祸首是内部使用 androidx 的条纹版本,并且出现了这个错误。我将其降级并繁荣!它不见了:)
并使用
从gradle.properties
文件中禁用 androidx
android.useAndroidX=false
android.enableJetifier=false
强制禁用 androidx。
根据Dan Lew
The support library artifacts are being deprecated and all future development is going into AndroidX, so there's no avoiding this migration. Hopefully, though, these tips will give you a clearer transition path.
您可以锁定您的 googleservices 和 firebase 版本以避免 androidX。
在android/build.gradle中添加:
buildscript {
...
ext {
// Lock down googlePlayServicesVersion
googlePlayServicesVersion = "16.1.0"
firebaseVersion = "17.6.0"
}
}
或在gradle.properties中添加:
googlePlayServicesVersion=16.1.0
firebaseVersion=17.6.0
Is there any possible way to keep using Support Library class rather than shifting to AndroidX class?
是的,这是可能的,但你只能推迟这个事件。
你无法避免它。
新的 Firebase libraries and the new Google Play Libraries 需要 androidx(检查下面的列表)
在短时间内其他第三方库将使用这些依赖项。
How to fix this issue?
您只能使用最新版本的 firebase/google 播放 services/third 支持库 v.28 或更低版本的库。
这里是 firebase 和 google 播放服务库的列表,它们开始与 androidx 的依赖项一起工作。
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
您提到您正在使用 react-native。正如其他地方提到的,你无法永远避免 AndroidX,尽管你可以推迟它。
在 react-native 中尤其难以转换,因为 gradle 不对源文件进行 jetify,除了在通过 Android Studio 进行的原始重构期间,并且 react-native 发布了它本机代码作为源文件。
现在您可以简单地使用 'jetifier' 工具,在安装它并 运行 第一次安装它后,在 package.json 的安装后添加 npx jetify
跨节点模块的持续喷射 installs/updates.
那么您应该能够成功地将您的应用程序转换为 AndroidX,开始依赖新的 AndroidX 库版本,但仍然使用尚未转换的库。您将为 react-native 0.60 which will be AndroidX
做好更充分的准备如果你必须推迟 AndroidX 并且正在使用 react-native,至少 react-native 0.59,你也可以反向使用 jetifier 工具修改 node_modules 从 androidx 到兼容参考。