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
下面将常见的一些替换列举出来
需将如下代码替换为 ->
后的代码,注意代码、布局文件、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