将项目compileSdkVersion升级到28以后,编译项目时报下面的错误
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:36:5-364:19 to override.
上面的错误提示说在manifest的application下添加
tools:replace="android:appComponentFactory"
仍然报错,AndroidX和Android Support库共存在很多问题,与其浪费时间解决这些不如干脆直接将项目迁移到库AndroidX,Android Studio 3.2.1已经有这样的功能,直接在右击项目在Refactor下选址Migrate to AndroidX就行了
这样处理了之后还是会有些地方需要手动修改,像ViewPager下的类需要从androidx.viewpager.widget.ViewPager引入,如果项目使用的是kotlin开发的话,Fragment的onCreateOptionsMenu、onOptionsItemSelected、onViewCreated需要修改,另外还需要注意一些第三方的库。
评论
xingzhehfl 回复
2019-04-20 15:38:22