google的更新优化每每会牵动一大批开发者的心。去年的androidx,到今年studio3.5后都默认使用androidx了。其实对于咱们开发者而言,咱们都只是调用他的api,对咱们的影响不大??!但是人性的习惯,仍是比较不那么容易改变的。如今我就来讲说我遇到的一些坑吧。话说仍是很严重。不知道androidx的请自行百度。java
3.5新建项目,是默认使用androidx的android
看最后同样,Use androidx.* artifacts。并且不能取消掉的。api
那么到咱们项目里,这一点就对应于咱们的 gradle.properties文件里的2句话bash
android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true
复制代码
意思就是,你所用的support的包,他会自动帮你迁移到androidx里。这里举个例子(接下来的例子出现的bug是针对系统库的),好比咱们以前常常会用support里的AppBarLayout组合CoordinatorLayout实现很酷炫的效果。咱们都知道,这个是在support的design里。那么咱们仍是把它添加进去,注意:studio3.5后添加包会有点不同app
右键你的项目,选中Open Module Settinggradle
在打开的界面,选中Dependencies,点击里面的加号,继续选择Library Dependency优化
在搜索框里,搜索design。出现一堆(androidx的版本就是这样选择的),这里咱们选择com.android.supportui
选择加入后,studio会自动build,并加入依赖。build.gradle会加上google
implementation 'com.android.support:design:28.0.0'
复制代码
注意: 此时你去xml打上AppBarLayout,并不会提示,甚至根本就没有。我的以为的是由于studio3.5优化的太好了,不会随便你帮咱们rebuild项目,也不知道是否是bug;这个时候点击build --> Rebuild Project,项目。以后xml使用正常,以下spa
<com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="?actionBarSize"/>
复制代码
你会发现,这里不是support的包,点进去已是迁移完的androidx的包。正是由于 gradle.properties 那两句话,帮咱们完成了。build.gradle显示的仍是support的包,怎么办
额外注意: 就如上面说的那个相似bug的问题,假如此时你再build.gradle去掉了这个依赖,若是按以前的操做,咱们都会点击Sync Projec with Gradl Files,去更新下。以后项目就没这个包了。没错,studio3.5也是这样,可是你再xml里,继续打AppBarLayout后,依旧会提示,并且xml里不报错,能运行。只是运行后,才会崩溃报错。正确作法仍是须要,在去掉依赖后,继续点击下Rebuild Project,这时候才会正常。(感受这个时候就是bug了)
点击 Refactor --> Migrate to AndroidX
后续一直点默认,我这里就不贴图了,直接说操做,Migrate --> (选择咱们的项目,点击OK) --> YES。后会弹出下图,
点击Do Refactor。以后,那么'com.android.support:design:28.0.0'会直接改变成响应的androidx包
implementation 'com.google.android.material:material:1.0.0'
复制代码
正确作法是,把 gradle.properties 里那2句话去掉。同时,把你的build.gradle改为你以前的support包。咱们知道support包最后一版本是28。以后一切导包,都不会在迁移了。是support,就是support包。
但愿本篇能帮助一些人。再放一个support迁移到androidx的对照support To androidx
这里我提一个小小的优势把,还有不少优势点,等你们去发现。好比咱们再作项目的时候,不论是用系统库仍是第三方库或是依赖,颇有可能咱们用的仍是之前项目的版本,或者是看到一些老博客里提到的版本。可能都不是最新版本,甚至有些过期了。在3.5之后,studio会自动提示,一样是打开咱们以前添加依赖的界面,选中咱们的Suggestions,里面就会自动提示咱们哪一个依赖有最新版本了