什么是AndroidX
简单地说就是新的库可以在不同的Android版本上使用。比如之前我们如果使用support为27.1.1的相关依赖库时。可能需要所有相关的support 库都为27.1.1。如果其中有bug的话,可能需要所有的都去升级,存在一个绑定关系,而且正式版的发布周期也很长。
通过AndroidX,我们可以看到实时实现的特性和bug修复。升级个别依赖,不需要对使用的所有其他库进行更新。这就和我们使用Github上的开源库一样的,出了问题,我们可以提出bug和意见。作者修复后,发布新版本,我们就可以直接替换使用了。更加的透明便捷。
从包的内容来看,最大变动就是 将一些UI或其他组件分离了出来,职责分明,以减轻不使用ProGuard 或 Multidex的应用程序和测试的压力。
怎样迁移
1.简单说就是 变成
例如
implementation ‘com.android.support:appcompat-v7:28.0.0-beta1’
变成
implementation ‘androidx.appcompat:appcompat:1.0.0-beta01’
2.迁移前提
首先你的gradle版本至少为3.2.0以上,以及compileSdkVersion为28以上,最后 Android Studio 在 3.2之后。
3.Android Studio 中一键迁移
菜单栏 Refactor -> Migrate to AndroidX
4.已迁移了androidx的第三方库有
1)butterknife
2)glide
…持续更新…
建议
如果是一个新项目,使用AndroidX相关依赖,需要在gradle.properties文件里添加配置:
android.useAndroidX=true
android.enableJetifier=true
如果是以前的项目,你想使用AndroidX,但是之前的不迁移,可以这样配置:
android.useAndroidX=true
android.enableJetifier=false
迁移的好处
解决当前SDK,工具,第三方库 等升级导致的一些厂家的编译错误
比如,下面一些错误迁移后就OK 了:
- Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0]
…持续更新…
附1
- butterknife最新的10.0.0开始引入androidx,已经不支持老版库,如果需要使用,只能使用9.0.0这版