Android编程之Navigation项目迁移AndroidX踩坑记录
androidx 是对 android.support.xxx 包的整理后产物。由于之前的support包过于混乱,所以,google推出了 androidX。
在项目迁移AndroidX的过程中遇到一些问题,特别是Navigation抽屉页面迁移的过程中遇到一些问题,跟着网上的教程走完了全程,却总是闪退,原因直指xml布局文件。
经过一番斗争,终于完成了Android studio原生Navigation Drawer Activity的AndroidX迁移工作,在这里仅以此为例,记录迁移流程,及注意细节。
迁移固有流程
第一步:在project的gradle.properties
文件里添加如下配置:
代码语言:javascript复制android.useAndroidX=true
android.enableJetifier=true
第二 步:将依赖库替换成AndroidX的库
比如将com.android.support:appcompat-v7
库替换为androidx.appcompat:appcompat:1.0.0-alpha1
具体对应关系可以查看Google官方文档:ndroidX refactoring
第三步:修改import
将原来import的android.**
的包删除重新import为androidx.**
的新的包。
注:
- Android Studio 3.2 Canary 14及以上版本提供了更加方便快捷的方法一键重构到AndroidX。选择菜单上的ReFactor->Refactor to AndroidX...即可
- AndroidX需要使用最新的Android sdk,打开Android Studio的设置找到Android SDK下载最新的Android P Preview的sdk,然后将module的build.gradle里的compileSdkVersion改为compileSdkVersion '28'然后再编译
迁移Navigation
一般的项目经过以上的步骤就完成了,但是在我迁移Navigation时候发现还是无法运行,经过不断的排查发现在xml文件中使用的所有support型控件也需要替换,下面记录下我替换的控件。
android.support.v4.widget.DrawerLayout
替换为androidx.drawerlayout.widget.DrawerLayout
android.support.design.widget.NavigationView
替换为com.google.android.material.navigation.NavigationView
android.support.design.widget.CoordinatorLayout
替换为androidx.coordinatorlayout.widget.CoordinatorLayout
android.support.design.widget.AppBarLayout
替换为com.google.android.material.appbar.AppBarLayout
android.support.v7.widget.Toolbar
替换为androidx.appcompat.widget.Toolbar
android.support.design.widget.FloatingActionButton
替换为com.google.android.material.floatingactionbutton.FloatingActionButton
android.support.constraint.ConstraintLayout
替换为androidx.drawerlayout.widget.DrawerLayout
结束!
参考文献
- Android AndroidX的集成
- AndroidX了解一下
- Android:你好,androidX!再见,android.support
- 不推荐使用androidx.test.InstrumentationRegistry
- AndroidX官方新旧对比
- 一个神奇的控件——Android CoordinatorLayout与Behavior使用指南
- Android框架之路——NavigationView的使用(结合ToolBar)
Author: Frytea
Title: Android编程之Navigation项目迁移AndroidX踩坑记录
Link: https://cloud.tencent.com/developer/article/1662427
Copyright: This work by TL-Song is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.