适配 AndroidX 笔记

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}'
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值