目录
前言
迁移准备
备份
添加支持
两种迁移方式
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
迁移准备
备份
首先对现有项目进行数据备份,以防万一升级失败或者错误导致不必要的问题
添加支持
- Android Studio需要升级3.2或更高版本
- compileSdkVersion的版本升级到28及以上
- buildToolsVersion的版本升级到28.0.2及以上
- Gradle 插件版本改为 4.6及以上,在项目根目录下gradle/wrapper/gradle-wrapper.properties文件中的distributionUrl的值改为 distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
- 在项目根目录下的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,请查看我的资源:
手动迁移
1:首先满足准备迁移的条件是否OK
2:下载资源映射文档查看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终将取代支持库取而代之。