AndroidX 迁移记录

历史项目AndroidX迁移记录

AndroidX是什么?

AndroidX 将原始支持库 API 替换为 androidx 命名空间中的软件包。
简单说就是把 各种android.support.xxxx 替换为androidx.xxxx.xxxx

前提条件

执行迁移之前保险起见切换到新的git分支

1.app的build.gradle文件中  targetSdkVersion 至少是28版本

AndroidX 迁移记录

android {
    compileSdkVersion 28
    buildToolsVersion "28.0.3"

    defaultConfig {
        applicationId "com.xxx.xxx"
        minSdkVersion 23
        targetSdkVersion 28
        ...
 }
...
}

 

2.修改gradle版本3.2.0 及以上

AndroidX 迁移记录

dependencies {
    classpath 'com.android.tools.build:gradle:3.2.0'
    ...
    }

3.修改gradle.properties文件

AndroidX 迁移记录

添加以下标记:

# Android 插件会使用对应的 AndroidX 库而非支持库。
android.useAndroidX=true
# Android 插件会通过重写现有第三方库的二进制文件,自动将这些库迁移为使用 AndroidX。
android.enableJetifier=true

开始迁移

使用android studio迁移

android studio版本要求为 3.2 或更高版本

右键点击项目名称 选择 Refactor 再选 Migrate to AndroidX

AndroidX 迁移记录

勾选 以获取备份项目 以防万一

AndroidX 迁移记录

保存为zip文件

AndroidX 迁移记录

接下来就可以放心大胆的.......改代码了???? 一般需要几个小时完全搞定 当然也可能有一些bug会慢慢出现

都到这一步了  just do it

AndroidX 迁移记录

 

之前的各种支持库

implementation 'com.android.support:design:27.1.1'
implementation 'com.android.support:appcompat-v7:27.1.1'
...

迁移后会自动修改为对应的androidx库

implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.2'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'
...

跑项目 一般都会报错

看错误日志 逐一修改 没什么就是耗时间

列一下 常用的v4 v7对应类 更详细请访问androidx迁移

 

android.support.v4

支持库类 AndroidX 类
   
android.support.v4.app.DialogFragment androidx.fragment.app.DialogFragment
android.support.v4.app.Fragment androidx.fragment.app.Fragment
android.support.v4.app.FragmentActivity androidx.fragment.app.FragmentActivity
android.support.v4.app.FragmentContainer androidx.fragment.app.FragmentContainer
android.support.v4.app.FragmentController androidx.fragment.app.FragmentController
android.support.v4.app.FragmentHostCallback androidx.fragment.app.FragmentHostCallback
android.support.v4.app.FragmentManager androidx.fragment.app.FragmentManager
android.support.v4.app.FragmentManagerImpl androidx.fragment.app.FragmentManagerImpl
android.support.v4.app.FragmentManagerNonConfig androidx.fragment.app.FragmentManagerNonConfig
android.support.v4.app.FragmentManagerState androidx.fragment.app.FragmentManagerState
android.support.v4.app.FragmentPagerAdapter androidx.fragment.app.FragmentPagerAdapter
android.support.v4.app.FragmentState androidx.fragment.app.FragmentState
android.support.v4.app.FragmentStatePagerAdapter androidx.fragment.app.FragmentStatePagerAdapter
android.support.v4.app.FragmentTabHost androidx.fragment.app.FragmentTabHost
android.support.v4.app.FragmentTransaction androidx.fragment.app.FragmentTransaction
android.support.v4.app.FragmentTransition androidx.fragment.app.FragmentTransition
android.support.v4.app.FragmentTransitionCompat21 androidx.fragment.app.FragmentTransitionCompat21
android.support.v4.app.FragmentTransitionImpl androidx.fragment.app.FragmentTransitionImpl

android.support.v7

支持库类 AndroidX 类
   
android.support.v7.app.ToolbarActionBar androidx.appcompat.app.ToolbarActionBar
android.support.v7.app.TwilightCalculator androidx.appcompat.app.TwilightCalculator
android.support.v7.app.TwilightManager androidx.appcompat.app.TwilightManager
android.support.v7.app.WindowDecorActionBar androidx.appcompat.app.WindowDecorActionBar
android.support.v7.appcompat.R androidx.appcompat.R
android.support.v7.cardview.R androidx.cardview.R
   
android.support.v7.recyclerview.R androidx.recyclerview.R
   
android.support.v7.widget.CardView androidx.cardview.widget.CardView
android.support.v7.widget.CardViewApi17Impl androidx.cardview.widget.CardViewApi17Impl
android.support.v7.widget.CardViewApi21Impl androidx.cardview.widget.CardViewApi21Impl
android.support.v7.widget.CardViewBaseImpl androidx.cardview.widget.CardViewBaseImpl
android.support.v7.widget.CardViewDelegate androidx.cardview.widget.CardViewDelegate
android.support.v7.widget.CardViewImpl androidx.cardview.widget.CardViewImpl
   
android.support.v7.widget.LayoutState androidx.recyclerview.widget.LayoutState
android.support.v7.widget.LinearLayoutCompat androidx.appcompat.widget.LinearLayoutCompat
android.support.v7.widget.LinearLayoutManager androidx.recyclerview.widget.LinearLayoutManager
android.support.v7.widget.LinearSmoothScroller androidx.recyclerview.widget.LinearSmoothScroller
android.support.v7.widget.LinearSnapHelper androidx.recyclerview.widget.LinearSnapHelper
android.support.v7.widget.ListPopupWindow androidx.appcompat.widget.ListPopupWindow
   
android.support.v7.widget.RecyclerView androidx.recyclerview.widget.RecyclerView
   

不同项目会有不同的问题,迁移androidX就是需要耐心

 

迁移androidx 后

1.混淆文件

AndroidX 迁移记录

在文件中添加

#androidX
-keep class com.google.android.material.** {*;}

-keep class androidx.** {*;}

-keep public class * extends androidx.**

-keep interface androidx.** {*;}

-dontwarn com.google.android.material.**

-dontnote com.google.android.material.**

-dontwarn androidx.**

2.可以更好的使用Flutter进行混合开发了