Android Studio3.5及使用AndroidX的一些坑

google的更新優化每每會牽動一大批開發者的心。去年的androidx,到今年studio3.5後都默認使用androidx了。其實對於咱們開發者而言,咱們都只是調用他的api,對咱們的影響不大??!但是人性的習慣,仍是比較不那麼容易改變的。如今我就來講說我遇到的一些坑吧。話說仍是很嚴重。不知道androidx的請自行百度。java


1、咱們重新建一個項目說。

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
複製代碼

1.一、那麼這兩句話表明什麼呢

意思就是,你所用的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了)


2、一鍵將build.gradle的support包改爲andoridx

點擊 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'
複製代碼

3、可能有些人升級了studio,可是卻不像使用androidx

正確作法是,把 gradle.properties 裏那2句話去掉。同時,把你的build.gradle改爲你以前的support包。咱們知道support包最後一版本是28。以後一切導包,都不會在遷移了。是support,就是support包。

但願本篇能幫助一些人。再放一個support遷移到androidx的對照support To androidx


4、總的來講,優勢是大於缺點的,但願你們都用起來。

這裏我提一個小小的優勢把,還有不少優勢點,等你們去發現。好比咱們再作項目的時候,不論是用系統庫仍是第三方庫或是依賴,頗有可能咱們用的仍是之前項目的版本,或者是看到一些老博客裏提到的版本。可能都不是最新版本,甚至有些過期了。在3.5之後,studio會自動提示,一樣是打開咱們以前添加依賴的界面,選中咱們的Suggestions,裏面就會自動提示咱們哪一個依賴有最新版本了

相關文章
相關標籤/搜索