Android应用迁移至androidx

切分支

为防止迁移失败,在分支中进行升级操作,升级成功后合并到主干

修改相关build.gradle

将项目所有module 中builde.gradle中相关android.support 相关类版本号统一改为28.0.0。包含appcompat 相关 、constraintlayout相关、multidex、recyclerview 等;

修改根目录中 gradle.properties 文件

添加一下代码

# 表示使用 androidx
android.useAndroidX=true
# 表示将第三方库迁移到 androidx
android.enableJetifier=true

执行migrater to androidx

在Android studio(要求3.2或更高版本)中执行 工具栏 -> Refactor -> Migrate to AndroidX...

执行该操作时会提示

手动修改

执行 Migrate to AndroidX 成功后,项目中部分控件路径需要手动修改,包括java和xml文件

迁移之后 部分控件会使用错误的包名androidx.core.weight.*,需要手动修改

控件或注解 参修改前 修改后
NonNull android.support.annotation.NonNull androidx.annotation.NonNull
Nullable android.support.annotation.Nullable androidx.annotation.Nullable
RequiresApi android.support.annotation.RequiresApi androidx.annotation.RequiresApi
ViewPager android.support.v4.view.ViewPager androidx.viewpager.widget.ViewPager
TabLayout android.support.design.widget.TabLayout com.google.android.material.tabs.TabLayout
RecyclerView android.support.v7.widget.RecyclerView androidx.recyclerview.widget.LinearLayoutManager
LinearLayoutManager android.support.v7.widget.LinearLayoutManager androidx.recyclerview.widget.RecyclerView
DialogFragment android.support.v4.app.DialogFragment androidx.fragment.app.DialogFragment
FragmentManager android.support.v4.app.FragmentManager androidx.fragment.app.FragmentManager
FragmentTransaction android.support.v4.app.FragmentTransaction androidx.fragment.app.FragmentTransaction
AppCompatActivity android.support.v7.app.AppCompatActivity androidx.appcompat.app.AppCompatActivity

支持库工件映射
支持库类映射

butterknife 相关

修改完成后 编译 提示 butterknife报错:

The given artifact contains a string literal with a package reference
android.support.v4.content that cannot be safely rewritten.
Libraries using reflection such as annotation processors need to be
updated manually to add support for androidx.

buide.gralde 文件中修改

implementation 'com.jakewharton:butterknife:10.2.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1'

增加

android {
    compileSdkVersion 28
    //添加以下
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    defaultConfig { }
}

执行 File-Invalidate caches / restart,重启后程序完美运行,整个过程比较顺利,没有遇到其他坑。

你可能感兴趣的:(Android应用迁移至androidx)