Android support库迁移AndroidX
程序员文章站
2022-06-08 08:25:52
...
Android support库迁移AndroidX
原因:目前很多流行的开源库都是AndroidX项目,并不支持Android support,加入到项目会报以下错误:
Manifest merger failed : Attribute aaa@qq.com 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:36:5-364:19 to override.
按照日志提示
添加tools:replace=“android:appComponentFactory”
会报其他错误,其实是AndroidX和Android support共存问题,改来改去,bug越来越多,而且AndroidX是趋势,谷歌会逐步放弃对 support 的升级和维护。
第一步
将build tools更新到3.2.0,gradle更新到4.6。升级之后才会有一键转换功能
第二步
修改当前项目的 gradle.properties
android.useAndroidX=true
android.enableJetifier=true
- android.useAndroidX=true 表示当前项目启用 AndroidX
- android.enableJetifier=true 表示将依赖包也迁移到AndroidX 。如果取值为 false ,表示不迁移依赖包到AndroidX,但在使用依赖包中的内容时可能会出现问题,当然了,如果你的项目中没有使用任何三方依赖,那么,此项可以设置为 false
第三步
之后会出现提示,勾选是否需要备份zip,建议勾选。
studio会自动搜索项目需要修改的地方,只需跟修改项目名称一样,搜索完成后点击Do Refactor即可。
第四步
之后建议直接重启,直接运行的话studio的缓存会报很多异常,直接
重启之后基本没有问题了,如果有问题那就是依赖库不支持AndroidX,升级成最新的即可。例如:
出现以下异常
The given artifact contains a string literal with a package reference 'android.support.v4.content' that cannot be safely rewritten. Libraries using reflection such as annotation processors need to be updated manually to add support for androidx.
解决办法
升级butterknife:
implementation 'com.jakewharton:butterknife:10.1.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'
以及:
classpath 'com.jakewharton:butterknife-gradle-plugin:10.1.0'
之后可能会出现以下问题:
[TAG] Failed to resolve variable '${junit.version}'
或者类似的Failed to resolve variable…
这种还是用老办法 :Invaldate Caches/Restart…
我这个项目刚开始比较好转移,内容多的老项目没试过,如果有其他问题,欢迎讨论
推荐阅读
-
Android Studio 实现将support库改成Androidx
-
Android添加glide库报错Error: Failed to resolve: com.android.support:support-annotations:26.0.2的解决
-
android迁移到androidx问题解决
-
在Android Studio 3.6中自动导入support库中的Fragment类
-
Android项目迁移到AndroidX的方法步骤
-
升级Android Studio到最新版本,升级Gradle到最新,迁移Androidx之路。
-
记录Android修改报名顺便迁移androidx
-
Android Studio 3.4.2 之后创建的项目,如何恢复低版本API,AndroidX 如何恢复 support 包
-
AndroidX与原始 Android 支持库
-
还在用android.support?该考虑迁移AndroidX了!