1、将Android Studio 升级到3.4(3.2以上即可),并且将gradle升级到3.4.1(3.2.0以上即可),设置targetSdkVersion 28,Project的build.gradle中classpath ‘com.android.tools.build:gradle:3.4.1’。
2、修改gradle.properties
android.useAndroidX=true 表示启用 androidx
android.enableJetifier=true 表示将依赖包也迁移到androidx 。如果取值为false,表示不迁移依赖包到androidx,但在使用依赖包中的内容时可能会出现问题,如果项目中没有使用任何三方依赖,可以设置为false。
使用android.enableJetifier=true将项目中使用的第三方库也迁移到 Androidx,迁移后还需要 Flie -> Invalidate Caches /Restart 一下。
3、开始替换
替换前 替换后
import android.support.v4.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager; import androidx.viewpager.widget.ViewPager;
import android.support.v4.app.FragmentPagerAdapter; import androidx.fragment.app.FragmentPagerAdapter;
import android.support.v4.app.Fragment; import androidx.fragment.app.Fragment;
import android.support.v4.view.PagerAdapter; import androidx.viewpager.widget.PagerAdapter;
import android.support.v4.app.FragmentStatePagerAdapter; import androidx.fragment.app.FragmentStatePagerAdapter;
import android.support.v7.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import android.support.v7.widget.GridLayoutManager; import androidx.recyclerview.widget.GridLayoutManager;
android.support.v7.widget.AppCompatImageView androidx.appcompat.widget.AppCompatImageView;
import android.support.v7.widget.OrientationHelper; import androidx.recyclerview.widget.OrientationHelper;
import android.support.v4.content.ContextCompat; import androidx.core.content.ContextCompat;
import android.support.v7.widget.DividerItemDecoration; import androidx.recyclerview.widget.DividerItemDecoration;
import android.support.v4.view.ViewPager.OnPageChangeListener; import androidx.viewpager.widget.ViewPager;
import android.support.v4.content.FileProvider; import androidx.core.content.FileProvider;
android.support.v4.view.ViewPager androidx.viewpager.widget.ViewPager
除了修改support库的路径,还要修改support控件的import导包代码,像AppCompatActivity原来的import语句是下面这样的:
import android.support.v7.app.AppCompatActivity;
复制
启用AndroidX之后,导入AppCompatActivity的代码要改成下面这样:
import androidx.appcompat.app.AppCompatActivity;
复制
详细的support控件的新旧对应关系见下表:
支持控件的旧包名
支持控件的旧包名
android.support.v4.app.Fragment
androidx.fragment.app.Fragment
android.support.v4.app.FragmentActivity
androidx.fragment.app.FragmentActivity
android.support.v4.app.FragmentManager
androidx.fragment.app.FragmentManager
android.support.v4.app.FragmentPagerAdapter
androidx.fragment.app.FragmentPagerAdapter
android.support.v4.view.ViewPager
androidx.viewpager.widget.ViewPager
android.support.v4.view.PagerAdapter
androidx.viewpager.widget.PagerAdapter
android.support.v4.view.PagerTabStrip
androidx.viewpager.widget.PagerTabStrip
android.support.v4.view.PagerTitleStrip
androidx.viewpager.widget.PagerTitleStrip
android.support.v7.app.AppCompatActivity
androidx.appcompat.app.AppCompatActivity
android.support.v7.widget.Toolbar
androidx.appcompat.widget.Toolbar
android.support.v7.widget.RecyclerView
androidx.recyclerview.widget.RecyclerView
android.support.v7.widget.GridLayoutManager
androidx.recyclerview.widget.GridLayoutManager
android.support.v7.widget.LinearLayoutManager
androidx.recyclerview.widget.LinearLayoutManager
android.support.v7.widget.StaggeredGridLayoutManager
androidx.recyclerview.widget.StaggeredGridLayoutManager
android.support.v7.widget.CardView
androidx.cardview.widget.CardView
android.support.v7.graphics.Palette
androidx.palette.graphics.Palette