Android Studio:AndroidX的迁移

目录

前言

迁移准备

备份

添加支持

两种迁移方式

Android Studio一键迁移

手动迁移

AndroidX的影响


前言

早在Google 2018 IO 大会就推出了 Android新的扩展库 AndroidX,用于替换原来的 Android扩展库,androidx 是对 android.support.xxx 包的整理后得产物。由于之前的support包过于混乱,所以google推出了 androidX。将原来的android.*替换成androidx.*;只有包名和Maven工件名受到影响,原来的类名,方法名和字段名不会更改(原来废弃的方法可能会删除)。

自support v7:28.+开始,大部分support包都会迁移到androidx下,所以建议开发者们尽早将项目转移到androidx下接下来我们来看看使用 AndroidX的扩展库需要哪些配置。

AndroidX官方文档谷歌传送门https://developer.android.google.cn/jetpack/androidx/migrate

迁移准备

备份

首先对现有项目进行数据备份,以防万一升级失败或者错误导致不必要的问题

添加支持

  1. Android Studio需要升级3.2或更高版本
  2. compileSdkVersion的版本升级到28及以上
  3. buildToolsVersion的版本升级到28.0.2及以上
  4. Gradle 插件版本改为 4.6及以上,在项目根目录下gradle/wrapper/gradle-wrapper.properties文件中的distributionUrl的值改为 distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
  5. 在项目根目录下的gradle.properties文件内添加 android.useAndroidX=true (Android 插件会使用对应的 AndroidX 库(而非支持库))和 android.enableJetifier=true(Android 插件会通过重写其二进制文件来自动迁移现有的第三方库以使用 AndroidX);

两种迁移方式

Android Studio一键迁移

友情提示:内置的 Android Studio 迁移功能可能并不是一切都能处理。根据具体的编译配置,可能需要手动更新编译脚本,依赖关系和导包

1:对着需要迁移的项目右键,选择Refactor/Migrate to AndroidX:

2:紧接着会有一个提醒,大意就是做备份处理一下后续的可能的错误,点击迁移:

3:勾选则会会选择一个路径保存整个项目压缩包,然后开始迁移,然后再下方预览要迁移的相关文件,如下图: 

4:选中最上面的蓝色条,全选然后点击Do Refactor,继续执行迁移,等待迁移完成,如果出现部分迁移错误,请按照谷歌上的映射关系表:https://developer.android.google.cn/jetpack/androidx/migrate/artifact-mappings手动修改依赖和https://developer.android.google.cn/jetpack/androidx/migrate/class-mappings手动修改导包。

5:如果网络不支持google,请查看我的资源:https://download.csdn.net/download/Huangggf/12117879

手动迁移

1:首先满足准备迁移的条件是否OK

2:下载资源映射文档https://download.csdn.net/download/Huangggf/12117879查看AndroidX和Android支持库的依赖库和导入包映射关系,链接:

3:按照映射关系修改依赖(只列出大概 具体参照映射表):

    implementation 'com.android.support:appcompat-v7:28.0.0'-->                implementation 'androidx.appcompat:appcompat:1.0.0'
    implementation 'com.android.support:design:28.0.0'-->                          implementation 'com.google.android.material:material:1.0.0'
    implementation 'com.android.support:support-v4:28.0.0'-->                      implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'com.android.support:recyclerview-v7:28.0.0'-->                 implementation 'androidx.recyclerview:recyclerview:1.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'-->     implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

4:修改导入包(只列出大概 具体参照映射表):

import com.google.android.material.tabs.TabLayout;//--->import android.support.design.widget.TabLayout;
import androidx.fragment.app.Fragment;//--->import android.support.v4.app.Fragment;
import androidx.fragment.app.FragmentActivity;//--->import android.support.v4.app.FragmentActivity;
import androidx.appcompat.app.AppCompatActivity;//--->import android.support.v7.app.AppCompatActivity;
import androidx.recyclerview.widget.RecyclerView;//--->import android.support.v7.widget.RecyclerView;

5:出现其他方法之类的错误看情况处理

AndroidX的影响

目前来说对需要上架海外的应用有很大影响,还是尽快更新,对于在国内霍霍的我们可以依然可以使用旧版,毕竟没有强制,AndroidX重新设计了包结构,鼓励库的小型化,支持库和架构组件包的名字也都简化了,减轻Android生态系统碎片化问题,长远来说利大于弊,然而受限制与各个国内的SDK,比如广告,账号,统计,推送,地图,聊天,视频,拍摄美化等各类功能的SDK没有统一的规则,不具有兼容性,特备是当集合的三方库变得很多很大,依赖层次变深,迁移的影响就比较大了,由于两者不兼容,目前针对小型项目可以考虑出两套,分别接入两者比较合适

提前了解,有备无患,随着科技发展,时代变更,可以预见androidX终将取代支持库取而代之。

发布了6 篇原创文章 · 获赞 6 · 访问量 638

猜你喜欢

转载自blog.csdn.net/huangggf/article/details/104069664