詳解Android Studio3.5及使用AndroidX的一些坑
google的更新優(yōu)化往往會(huì)牽動(dòng)一大批開發(fā)者的心。去年的androidx,到今年studio3.5后都默認(rèn)使用androidx了。其實(shí)對(duì)于我們開發(fā)者而言,我們都只是調(diào)用他的api,對(duì)我們的影響不大??!可是人性的習(xí)慣,還是比較不那么容易改變的?,F(xiàn)在我就來說說我遇到的一些坑吧。話說還是很嚴(yán)重。不知道androidx的請(qǐng)自行百度。
一、我們從新建一個(gè)項(xiàng)目說。
3.5新建項(xiàng)目,是默認(rèn)使用androidx的

看最后一樣,Use androidx.* artifacts。而且不能取消掉的。
那么到我們項(xiàng)目里,這一點(diǎn)就對(duì)應(yīng)于我們的 gradle.properties文件里的2句話
android.useAndroidX=true # Automatically convert third-party libraries to use AndroidX android.enableJetifier=true
1.1、那么這兩句話代表什么呢
意思就是,你所用的support的包,他會(huì)自動(dòng)幫你遷移到androidx里。這里舉個(gè)例子(接下來的例子出現(xiàn)的bug是針對(duì)系統(tǒng)庫(kù)的),比如我們之前經(jīng)常會(huì)用support里的AppBarLayout組合CoordinatorLayout實(shí)現(xiàn)很酷炫的效果。我們都知道,這個(gè)是在support的design里。那么我們還是把它添加進(jìn)去, 注意:studio3.5后添加包會(huì)有點(diǎn)不一樣
右鍵你的項(xiàng)目,選中Open Module Setting

在打開的界面,選中Dependencies,點(diǎn)擊里面的加號(hào),繼續(xù)選擇Library Dependency

在搜索框里,搜索design。出現(xiàn)一堆(androidx的版本就是這樣選擇的),這里我們選擇com.android.support

選擇加入后,studio會(huì)自動(dòng)build,并加入依賴。build.gradle會(huì)加上
implementation 'com.android.support:design:28.0.0'
注意:此時(shí)你去xml打上AppBarLayout,并不會(huì)提示,甚至根本就沒有。個(gè)人覺得的是因?yàn)閟tudio3.5優(yōu)化的太好了,不會(huì)隨便你幫我們r(jià)ebuild項(xiàng)目,也不知道是不是bug;這個(gè)時(shí)候點(diǎn)擊build --> Rebuild Project,項(xiàng)目。之后xml使用正常,如下
<com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="?actionBarSize"/>
你會(huì)發(fā)現(xiàn),這里不是support的包,點(diǎn)進(jìn)去已經(jīng)是遷移完的androidx的包。正是因?yàn)?gradle.properties 那兩句話,幫我們完成了。build.gradle顯示的還是support的包,怎么辦
額外注意:就如上面說的那個(gè)類似bug的問題,假如此時(shí)你再build.gradle去掉了這個(gè)依賴,如果按之前的操作,我們都會(huì)點(diǎn)擊Sync Projec with Gradl Files,去更新下。之后項(xiàng)目就沒這個(gè)包了。沒錯(cuò),studio3.5也是這樣,但是你再xml里,繼續(xù)打AppBarLayout后,依舊會(huì)提示,而且xml里不報(bào)錯(cuò),能運(yùn)行。只是運(yùn)行后,才會(huì)崩潰報(bào)錯(cuò)。正確做法還是需要,在去掉依賴后,繼續(xù)點(diǎn)擊下Rebuild Project,這時(shí)候才會(huì)正常。(感覺這個(gè)時(shí)候就是bug了)
二、一鍵將build.gradle的support包改成andoridx
點(diǎn)擊 Refactor --> Migrate to AndroidX

后續(xù)一直點(diǎn)默認(rèn),我這里就不貼圖了,直接說操作,Migrate --> (選擇我們的項(xiàng)目,點(diǎn)擊OK) --> YES。后會(huì)彈出下圖,

點(diǎn)擊Do Refactor。之后,那么'com.android.support:design:28.0.0'會(huì)直接改變成響應(yīng)的androidx包
implementation 'com.google.android.material:material:1.0.0'
三、可能有些人升級(jí)了studio,但是卻不像使用androidx
正確做法是,把 gradle.properties 里那2句話去掉。同時(shí),把你的build.gradle改成你之前的support包。我們知道support包最后一版本是28。之后一切導(dǎo)包,都不會(huì)在遷移了。是support,就是support包。
希望本篇能幫助一些人。再放一個(gè)support遷移到androidx的對(duì)照 support To androidx
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android Easeui 3.0 即時(shí)通訊的問題匯總
這篇文章主要介紹了Android Easeui 3.0 即時(shí)通訊的問題匯總的相關(guān)資料,需要的朋友可以參考下2016-09-09
談?wù)凙ndroid6.0運(yùn)行時(shí)的權(quán)限處理
之前有人在 Android 6.0 的機(jī)型上運(yùn)行了DragGridView結(jié)果出異常奔潰了。想必問題的原因大家都知道,是Android 6.0新引入了在運(yùn)行時(shí)權(quán)限申請(qǐng)(Runtime Permissions)的功能。那么這所謂的運(yùn)行時(shí)申請(qǐng)權(quán)限究竟是怎么一回事呢,下面跟著小編一起來看看吧!2016-08-08
Android編程獲取網(wǎng)絡(luò)連接方式及判斷手機(jī)卡所屬運(yùn)營(yíng)商的方法
這篇文章主要介紹了Android編程獲取網(wǎng)絡(luò)連接方式及判斷手機(jī)卡所屬運(yùn)營(yíng)商的方法,涉及Android針對(duì)網(wǎng)絡(luò)的判斷及本機(jī)信息的獲取技巧,需要的朋友可以參考下2016-01-01
Android仿微信語(yǔ)音聊天界面設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了Android仿微信語(yǔ)音聊天界面設(shè)計(jì)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
AndroidStudio安全管理簽名文件keystroe和簽名密碼(星空武哥)
我們?cè)谑褂肁ndroidStudio進(jìn)行release版的apk簽名的時(shí)候,往往都是將簽名文件keystore放在項(xiàng)目中,密碼寫在build.gradle中,keystore和密碼就隨著代碼上傳到了Git倉(cāng)庫(kù)中了,這樣往往很不安全,因?yàn)檫@樣被人獲取2017-09-09
Kotlin基礎(chǔ)通關(guān)之字符串與數(shù)字類型
這篇文章主要介紹了Kotlin基礎(chǔ)知識(shí)中的字符串與數(shù)字類型,編程中的入門知識(shí),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
Android基于RecyclerView實(shí)現(xiàn)高亮搜索列表
本文詳細(xì)介紹了Android基于RecyclerView實(shí)現(xiàn)高亮搜索列表的方法。具有一定的參考價(jià)值,下面跟著小編一起來看下吧2017-01-01
Android實(shí)現(xiàn)軟件列表的點(diǎn)擊啟動(dòng)另外一個(gè)程序功能【附demo源碼下載】
這篇文章主要介紹了Android實(shí)現(xiàn)軟件列表的點(diǎn)擊啟動(dòng)另外一個(gè)程序功能,涉及Android針對(duì)應(yīng)用程序的讀取、加載、啟動(dòng)等操作相關(guān)技巧,需要的朋友可以參考下2016-07-07

