com.android.support 系列的依赖报名已经不陌生了,为了兼容而出现的他们在更新到28时候谷歌官方宣布停止更新,原因就是谷歌爸爸不喜欢这个名字了!! 呵呵 玩笑,只是版本管理有些乱,开发中也经常会碰到各种compat 而且原来越多,所以谷歌开始规范支持包,androidX 孕育而生。
androidx 出现规范代码,但是产生一个过渡期,什么过渡期? support到androidx过渡,对于我们来说又是一顿查找替换。为什么查找替换,因为原来api类名不变的情况下,androidx报名全部发生变化。这导致同一个项目中androidx 和 support会产生冲突,常见错误如下:
Manifest merger failed : Attribute application@appComponentFactory value=(androidx.core.app.CoreComponentFactory) from [androidx.core:core:1.0.0-beta01] AndroidManifest.xml:22:18-86
is also present at [com.android.support:support-compat:28.0.0-alpha3] AndroidManifest.xml:22:18-91 value=(android.support.v4.app.CoreComponentFactory).
Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:11:5-49:19 to override.
注意:这个错误基本上在后面开发中经常会遇见,这就是项目中同时使用了androidx 和 support 。
现在很多国外代码已经开始使用了androidx 了 ,例如 photoview google+ sdk等。
所以以后support肯定是要被淘汰的!!
首先看看依赖包变化,例如:
api 'com.android.support:appcompat-v7:28.0.0'
变成了:
api 'androidx.appcompat:appcompat:1.0.0'
其他包变化可以参照官方文档:
// https://developer.android.com/jetpack/androidx/migrate
那么怎么过渡到androidx?
首先:
将项目中android support 包和引用都改成androidx,这就是前面说的查找替换。
然后:
项目中肯定有第三方依赖,而且现在很多依赖都是使用sopport 包,那么就必须保证
classpath 'com.android.tools.build:gradle:3.1.+'
那么android studio就提供了sopport转androix的能力;需要在gradle.properties 文件中加入配置:
android.useAndroidX=true
android.enableJetifier=true
上面工作完成后,那么恭喜你,你的项目已经进入androix时代了 。
转自:https://blog.csdn.net/mhhyoucom/article/details/83061601