1. 升级版本
① Android Studio:升级到 3.2 以上的版本
② build.gradle(Project)插件:classpath ‘com.android.tools.build:gradle:3.2.1’,3.2.0以上
③ gradle:distributionUrl=https://services.gradle.org/distributions/gradle-4.10.1-all.zip,对应build.gradle插件版本号
④ build.gralde(Moudle:app):
compileSdkVersion 更改为 28
targetSdkVersion 更改为 28
buildToolsVersion 更改为 28.0.3
2. gradle.properties
# AndroidX增加两行
android.useAndroidX=true
android.enableJetifier=true
3. 使用顶部工具栏,Refactor,Migrate to AndroidX
即可一键转为 AndroidX
4. 迁移操作完成后,可能会有以下问题
(1)以前警告下面这个的,现在可以去掉项目中android.enableAapt2=false了
WARNING: API 'variant.getAssemble()' is obsolete and has been replaced with 'variant.getAssembleProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance.
To determine what is calling variant.getAssemble(), use -Pandroid.debug.obsoleteApi=true on the command line to display a stack trace.
Affected Modules: app
(2)Androidx 默认buildToolsVersion是28.0.3,所以不需要再写buildToolsVersion '26.0.2’了,可以按照如下提示,点击 Remove Build Tools version and sync project 移除
WARNING: The specified Android SDK Build Tools version (26.0.2) is ignored, as it is below the minimum supported version (28.0.3) for Android Gradle Plugin 3.2.1.
Android SDK Build Tools 28.0.3 will be used.
To suppress this warning, remove "buildToolsVersion '26.0.2'" from your build.gradle file, as each version of the Android Gradle Plugin now has a default version of the build tools.
Remove Build Tools version and sync project
Affected Modules: jdkepler
(3)手动修改错误包名,由于"Migrate to AndroidX"执行之后,部分控件的包名/路径名转换的有问题,所以还需要我们手动调整,如下需要修改
Import android.support.design.widget.AppBarLayout;
Import android.support.design.widget.CoordinatorLayout;
Import android.support.design.widget.CoordinatorLayout;
Import android.support.design.widget.FloatingActionButton;
Import android.support.design.widget.Snackbar;
(4)去除 attr.xml 中重复的属性名称,在迁移到 androidX 之前,我们为自定义控件编写自定义属性时,可以与android已有的属性重名,但是,在AndroidX环境下不行了,如果存在重名的情况, 必然会报如下错误,会提示你重复定义
G:\AndroidWorkmultiTypeAdapter\build\generated\not_namespaced_r_class_sources\debug\generateDebugRFile\out\multitypeadapter\R.java:2777: 错误: 已在类 styleable中定义了变量 TextAppearance_android_typeface
public static int TextAppearance_android_typeface = 26;
^
(5)导入重复依赖/jar导致
[TAG] Failed to resolve variable '${project.groupId}'
[TAG] Failed to resolve variable '${project.version}'