欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android 快速迁移到AndroidX

程序员文章站 2022-06-08 08:22:40
...

越来越多的第三方库新版本开始只支持Android X,为了支持新特性,需要将项目迁移至Android X。经历三个公司项目Android X项目的迁移,感觉Android studio 自带的 Refactor > Migrate to AndroidX只会查找出所有需要替换的代码,具体的替换还是需要自己一个一个替换,过于繁琐。可以使用全局替换进行迁移,相对还是比较简单的,现对此进行总结。

1.配置启用Android X

在Android Studio3.2及以上版本,将gradle.properties添加以下配置

android.useAndroidX=true // 启用Android X
android.enableJetifier=true // 迁移未使用任何第三方库但带有需要转换的依赖项的现有项目

2.将旧的引用改为新引用

具体详见官方文档

3.替换如下配置

Android Studio有全局替换的功能,shift+ctrl+R
Android 快速迁移到AndroidX
下面将常见的一些替换列举出来
需将如下代码替换为 ->后的代码,注意代码、布局文件、Manifest都要进行替换

//注解
android.support.annotation.Nullable
->
androidx.annotation.Nullable

android.support.annotation.NonNull
->
androidx.annotation.NonNull

android.support.annotation.DrawableRes
->
androidx.annotation.DrawableRes

android.support.annotation.IntDef
->
androidx.annotation.IntDef

android.support.annotation.StringDef
->
androidx.annotation.StringDef

android.support.annotation.CallSuper
->
androidx.annotation.CallSuper

android.support.annotation.IdRes
->
androidx.annotation.IdRes

android.support.annotation.LayoutRes
->
androidx.annotation.LayoutRes

android.support.annotation.ColorRes
->
androidx.annotation.ColorRes

android.support.annotation.ColorInt
->
androidx.annotation.ColorInt

//控件
android.support.v4.app.FragmentActivity
->
androidx.fragment.app.FragmentActivity

android.support.v4.app.Fragment
->
androidx.fragment.app.Fragment

android.support.v4.view.PagerAdapter
->
androidx.viewpager.widget.PagerAdapter

android.support.v4.view.ViewPager
->
androidx.viewpager.widget.ViewPager

android.support.v4.app.ActivityCompat
->
androidx.appcompat.app.AppCompatActivity

android.support.v4.content.ContextCompat
->
androidx.core.content.ContextCompat

android.support.v7.widget.RecyclerView
->
androidx.recyclerview.widget.RecyclerView

android.support.v7.widget.AppCompatImageView
->
androidx.appcompat.widget.AppCompatImageView

android.support.v4.widget.NestedScrollView
->
androidx.core.widget.NestedScrollView

android.support.v4.view.ViewCompat
->
androidx.core.view.ViewCompat

android.support.v7.widget.CardView
->
androidx.cardview.widget.CardView

android.support.v4.content.FileProvider
->
androidx.core.content.FileProvider

android.support.constraint.ConstraintLayout
->
androidx.constraintlayout.widget.ConstraintLayout

android.support.constraint
->
androidx.constraintlayout.widget.Guideline

android.support.v7.widget.SwitchCompat
->
androidx.appcompat.widget.SwitchCompat

android.support.design.widget.CoordinatorLayout
->
androidx.coordinatorlayout.widget.CoordinatorLayout

android.support.v7.widget.Toolbar
->
androidx.appcompat.widget.Toolbar

android.arch.lifecycle.MutableLiveData
->
androidx.lifecycle.MutableLiveData

android.support.v7.app.AppCompatActivity
->
androidx.appcompat.app.AppCompatActivity

android.support.v7.widget.GridLayoutManager
->
androidx.recyclerview.widget.GridLayoutManager

android.arch.lifecycle.OnLifecycleEvent
->
androidx.lifecycle.OnLifecycleEvent

android.support.v7.widget.AppCompatTextView
->
androidx.appcompat.widget.AppCompatTextView

android.support.design.widget.BottomSheetDialog
->
com.google.android.material.bottomsheet.BottomSheetDialog

android.support.design.widget.TabLayout
->
com.google.android.material.tabs.TabLayout

android.arch.lifecycle.Observer
->
androidx.lifecycle.Observer

android.support.v7.widget.LinearLayoutManager
->
androidx.recyclerview.widget.LinearLayoutManager

android.support.v7.widget.CardView
->
androidx.cardview.widget.CardView

android.support.v7.widget.AppCompatRatingBar
->
androidx.appcompat.widget.AppCompatRatingBar

android.support.v4.widget.NestedScrollView
->
androidx.core.widget.NestedScrollView

android.support.v7.widget.AppCompatEditText
->
androidx.appcompat.widget.AppCompatEditText

android.support.v7.widget.AppCompatButton
->
androidx.appcompat.widget.AppCompatButton

//MultiDex
android.support.multidex.MultiDex
->
androidx.multidex.MultiDex

//单元测试,如果有用到,需要进行替换
android.support.test.InstrumentationRegistry
->
androidx.test.InstrumentationRegistry

android.support.test.runner.AndroidJUnit4
->
androidx.test.runner.AndroidJUnit4

android.support.test.runner.AndroidJUnitRunner
->
androidx.test.runner.AndroidJUnitRunner

4.查看漏网之鱼

可能会有一些小众的漏网之鱼,需要全局逐个搜索shift+ctrl+F

android.support.v7
android.support.v4
android.support.v13
android.support.

将遗漏的相关这些代码也进行替换

或者此时再使用Android Studio的Refactor > Migrate to AndroidX也可以

至此,重新编译,运行,可以迁移至AndroidX

其他

android.support.FILE_PROVIDER_PATHS

Manifest中一般有这个provider,不需要替换,详见 Migrating to AndroidX - android.support.FILE_PROVIDER_PATHS location

参考

Android:你好,androidX!再见,android.support
官网:迁移到 AndroidX