Android编程之Navigation项目迁移AndroidX踩坑记录

androidx 是对 android.support.xxx 包的整理后产物。由于之前的support包过于混乱,所以,google推出了 androidX。

在项目迁移AndroidX的过程中遇到一些问题,特别是Navigation抽屉页面迁移的过程中遇到一些问题,跟着网上的教程走完了全程,却总是闪退,原因直指xml布局文件。

经过一番斗争,终于完成了Android studio原生Navigation Drawer Activity的AndroidX迁移工作,在这里仅以此为例,记录迁移流程,及注意细节。

Android编程之Navigation项目迁移AndroidX踩坑记录

迁移固有流程

第一步:在project的gradle.properties文件里添加如下配置:

android.useAndroidX=true
android.enableJetifier=true

Android编程之Navigation项目迁移AndroidX踩坑记录

第二 步:将依赖库替换成AndroidX的库

比如将com.android.support:appcompat-v7库替换为androidx.appcompat:appcompat:1.0.0-alpha1

具体对应关系可以查看Google官方文档:ndroidX refactoring

Android编程之Navigation项目迁移AndroidX踩坑记录

第三步:修改import

将原来import的android.**的包删除重新import为androidx.**的新的包。

Android编程之Navigation项目迁移AndroidX踩坑记录

注:

  1. Android Studio 3.2 Canary 14及以上版本提供了更加方便快捷的方法一键重构到AndroidX。选择菜单上的ReFactor->Refactor to AndroidX...即可
  2. AndroidX需要使用最新的Android sdk,打开Android Studio的设置找到Android SDK下载最新的Android P Preview的sdk,然后将module的build.gradle里的compileSdkVersion改为compileSdkVersion '28'然后再编译

迁移Navigation

一般的项目经过以上的步骤就完成了,但是在我迁移Navigation时候发现还是无法运行,经过不断的排查发现在xml文件中使用的所有support型控件也需要替换,下面记录下我替换的控件。

  1. android.support.v4.widget.DrawerLayout替换为androidx.drawerlayout.widget.DrawerLayout
  2. android.support.design.widget.NavigationView替换为com.google.android.material.navigation.NavigationView
  3. android.support.design.widget.CoordinatorLayout 替换为 androidx.coordinatorlayout.widget.CoordinatorLayout
  4. android.support.design.widget.AppBarLayout替换为com.google.android.material.appbar.AppBarLayout
  5. android.support.v7.widget.Toolbar替换为androidx.appcompat.widget.Toolbar
  6. android.support.design.widget.FloatingActionButton替换为com.google.android.material.floatingactionbutton.FloatingActionButton
  7. android.support.constraint.ConstraintLayout替换为 androidx.drawerlayout.widget.DrawerLayout

结束!

参考文献