如今来讲,那就又是去年的事情了。到目前为止,androidx 库不少版本已经推出了正式稳定版,版本详情戳这里。对比之前 support 包, androidx 将各个 library 分开设立单独的版本管理,这样的好处显而易见。第一没有了以前 v4 v7 的繁琐依赖。第二能够精确指定须要导入 library ,避免没必要要的导入,从而减小代码体积。关键新的 library 版本彻底遵循 Semantic Versioning,而不是跟着 Android API 版本走。这样让咱们经过版本号就能明确和当前代码是否兼容。html
还有一点,如今不少开源项目已经陆续完成 androidx 迁移,而且基本再也不对 support 提供最新支持。若是你不跟上这个节奏,那么从此你就无法升级相关依赖,老版本 bug 修复你也得不到任何支持。android
迁移已经超级超级简单。Google 已经考虑到咱们的迁移成本,在 Android Studio 中已经支持一键迁移。git
这个的前提是你得更新你的 Android Studio 版本和 gradle 的版本。请注意,这两个的版本都要更新。Android Studio 最低要求是 3.2 的版本,如今正式稳定版本是 3.4.1 ,gradle 支持 androidx 的最低版本是 3.2.1 ,请注意,必定要升级对应的 gradle 版本。github
接着就在顶部菜单栏中选择 Refactor > Migrate to AndroidX 就能够完成相关迁移啦,这时候会出现一个提示框。android-studio
备份那个勾选能够去掉,而后点击 Migrate 。接下来 Android Studio 会遍历你的工程文件,进行相关包名和导包替换,而且会在你的 gradle.propertier 文件中增长两个属性。app
android.useAndroidX=true
android.enableJetifier=true
复制代码
上面说了,项目导包啥的都会自动替换,你本身肯定就行。那么依赖的库呢,enableJetifier 这个属性设置为 true 时就会将你依赖的库在打包时自动替换为对应的 androidx ,是否是很流弊。详情请看官方文档gradle
迁移完成,build.gradle 中的相关依赖也会自动更换,不过它更换的版本可能不是对应的稳定版本,而是最新的 beta 版本,我们得手动更新到对应的稳定版本。那么这个稳定版本是多少呢,去查看相关文档是否是很纠结。已经有人帮我作了对应插件,超帅。ui
还有 @NonNull ,在新版本中非空可空都已添加明确注解,这些细节地方可能也须要手动去更新下。google
傻瓜式迁移搞定后,一切来得太快太顺利都让本身开始怀疑迁移是否完成,项目是否还 OK 。spa
验证其实也很简单,首先,你得验证项目能编译过,没有 error ,lint 没有额外的警告。个人经验是迁移以后,导包更换成功,可是使用该类时又会带上全路径,这个时候 lint 是能刷出来的,须要手动改一改。接着,你得肯定 support 包是否已经被彻底替换,不该该出现二者共存的状况。这里就有不少方法,我提供三种方案:直接查看工程文件最下方的 External Libraries 是否还有 support 依赖;使用 ./gradlew -q :app:dependencies > dependencies.txt'
看看对应依赖关系中是否还有 support 依赖;反编译本身的包,看看里面还有没有 support 相关的类。