AndroidX 迁移记录

历史项目AndroidX迁移记录

AndroidX是什么?

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

前提条件

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

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

android {
    compileSdkVersion 28
    buildToolsVersion "28.0.3"

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

 

2.修改gradle版本3.2.0 及以上

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

3.修改gradle.properties文件

添加以下标记:

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

开始迁移

使用android studio迁移

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

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

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

保存为zip文件

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

都到这一步了  just do it

 

之前的各种支持库

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.DialogFragmentandroidx.fragment.app.DialogFragment
android.support.v4.app.Fragmentandroidx.fragment.app.Fragment
android.support.v4.app.FragmentActivityandroidx.fragment.app.FragmentActivity
android.support.v4.app.FragmentContainerandroidx.fragment.app.FragmentContainer
android.support.v4.app.FragmentControllerandroidx.fragment.app.FragmentController
android.support.v4.app.FragmentHostCallbackandroidx.fragment.app.FragmentHostCallback
android.support.v4.app.FragmentManagerandroidx.fragment.app.FragmentManager
android.support.v4.app.FragmentManagerImplandroidx.fragment.app.FragmentManagerImpl
android.support.v4.app.FragmentManagerNonConfigandroidx.fragment.app.FragmentManagerNonConfig
android.support.v4.app.FragmentManagerStateandroidx.fragment.app.FragmentManagerState
android.support.v4.app.FragmentPagerAdapterandroidx.fragment.app.FragmentPagerAdapter
android.support.v4.app.FragmentStateandroidx.fragment.app.FragmentState
android.support.v4.app.FragmentStatePagerAdapterandroidx.fragment.app.FragmentStatePagerAdapter
android.support.v4.app.FragmentTabHostandroidx.fragment.app.FragmentTabHost
android.support.v4.app.FragmentTransactionandroidx.fragment.app.FragmentTransaction
android.support.v4.app.FragmentTransitionandroidx.fragment.app.FragmentTransition
android.support.v4.app.FragmentTransitionCompat21androidx.fragment.app.FragmentTransitionCompat21
android.support.v4.app.FragmentTransitionImplandroidx.fragment.app.FragmentTransitionImpl

android.support.v7

支持库类AndroidX 类
  
android.support.v7.app.ToolbarActionBarandroidx.appcompat.app.ToolbarActionBar
android.support.v7.app.TwilightCalculatorandroidx.appcompat.app.TwilightCalculator
android.support.v7.app.TwilightManagerandroidx.appcompat.app.TwilightManager
android.support.v7.app.WindowDecorActionBarandroidx.appcompat.app.WindowDecorActionBar
android.support.v7.appcompat.Randroidx.appcompat.R
android.support.v7.cardview.Randroidx.cardview.R
  
android.support.v7.recyclerview.Randroidx.recyclerview.R
  
android.support.v7.widget.CardViewandroidx.cardview.widget.CardView
android.support.v7.widget.CardViewApi17Implandroidx.cardview.widget.CardViewApi17Impl
android.support.v7.widget.CardViewApi21Implandroidx.cardview.widget.CardViewApi21Impl
android.support.v7.widget.CardViewBaseImplandroidx.cardview.widget.CardViewBaseImpl
android.support.v7.widget.CardViewDelegateandroidx.cardview.widget.CardViewDelegate
android.support.v7.widget.CardViewImplandroidx.cardview.widget.CardViewImpl
  
android.support.v7.widget.LayoutStateandroidx.recyclerview.widget.LayoutState
android.support.v7.widget.LinearLayoutCompatandroidx.appcompat.widget.LinearLayoutCompat
android.support.v7.widget.LinearLayoutManagerandroidx.recyclerview.widget.LinearLayoutManager
android.support.v7.widget.LinearSmoothScrollerandroidx.recyclerview.widget.LinearSmoothScroller
android.support.v7.widget.LinearSnapHelperandroidx.recyclerview.widget.LinearSnapHelper
android.support.v7.widget.ListPopupWindowandroidx.appcompat.widget.ListPopupWindow
  
android.support.v7.widget.RecyclerViewandroidx.recyclerview.widget.RecyclerView
  

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

 

迁移androidx 后

1.混淆文件

在文件中添加

#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进行混合开发了

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值