文章目录
1.概述
AndroidX 将原始支持库 API 替换为 androidx 命名空间中的软件包。只有软件包和 Maven 工件名称发生了变化;类、方法和字段名称没有变化。
2.迁移前准备
- 备份项目。
- 创建新分支,进行迁移。
3.迁移步骤
1.项目版本更新到28
1.gradle 版本更新为 3.2.0 及以上。
// 项目下 build.gradle
buildscript {
...
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
}
}
2.项目更新为使用支持库的最终版本:版本 28.0.0。
// build.gradle
android {
compileSdkVersion 28
...
}
2.引入 AndroidX
1.引入 AndroidX。
// build.gradle
implementation 'androidx.core:core:1.1.0'
2.provider,android:name 修改为 androidx.core.content.FileProvider。
// AndroidMenifest
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_config" />
</provider>
3.启用 Jetifier
Jetifier 帮助迁移第三方依赖以使用AndroidX。Jetifier 将更改这些依赖项的字节码,以使其与使用AndroidX的项目兼容。但是,Jetifier不会更改您的源代码或迁移您生成的代码。
- android.useAndroidX=true,Android 插件会使用对应的 AndroidX 库而非支持库。
- android.enableJetifier=true,Android 插件会通过重写现有第三方库的二进制文件,自动将这些库迁移为使用 AndroidX。
// gradle.properties
android.useAndroidX=true
android.enableJetifier=true
4.更新依赖关系
1、第三方库升级为支持 AndroidX 版本。如 Glide、OKhttp 等。
5.更新原始码
1、使用 Android Studio 3.2 及更高版本,只需从菜单栏中依次选择 Refactor > Migrate to AndroidX,即可将现有项目迁移到 AndroidX。
2、run 下,报错地方改为 AndroidX 里边的引用。
如:
- Fragment、FileProvider 改为 AndroidX 里面的 Fragment、FileProvider 等。
- Nullable 注解改为 AndroidX 里面的注解 等。
- 布局文件里面的控件改为 AndroidX 里面的控件。如:CoordinatorLayout。
6.ProGuard 和构建脚本
迁移工具不会自动更新ProGuard和任何相关的内置脚本。因此,如果您正在使用这些文件并在其中包含程序包名称,则需要手动进行编辑。
// ProGuard 混淆文件
-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.**
7.获取最新的稳定版本
implementation 'androidx.appcompat:appcompat:1.1.0-alpha01'
改为
implementation 'androidx.appcompat:appcompat:1.0.2'