詳解Android Studio3.5及使用AndroidX的一些坑
google的更新優(yōu)化往往會牽動一大批開發(fā)者的心。去年的androidx,到今年studio3.5后都默認(rèn)使用androidx了。其實(shí)對于我們開發(fā)者而言,我們都只是調(diào)用他的api,對我們的影響不大??!可是人性的習(xí)慣,還是比較不那么容易改變的?,F(xiàn)在我就來說說我遇到的一些坑吧。話說還是很嚴(yán)重。不知道androidx的請自行百度。
一、我們從新建一個項(xiàng)目說。
3.5新建項(xiàng)目,是默認(rèn)使用androidx的
看最后一樣,Use androidx.* artifacts。而且不能取消掉的。
那么到我們項(xiàng)目里,這一點(diǎn)就對應(yīng)于我們的 gradle.properties文件里的2句話
android.useAndroidX=true # Automatically convert third-party libraries to use AndroidX android.enableJetifier=true
1.1、那么這兩句話代表什么呢
意思就是,你所用的support的包,他會自動幫你遷移到androidx里。這里舉個例子(接下來的例子出現(xiàn)的bug是針對系統(tǒng)庫的),比如我們之前經(jīng)常會用support里的AppBarLayout組合CoordinatorLayout實(shí)現(xiàn)很酷炫的效果。我們都知道,這個是在support的design里。那么我們還是把它添加進(jìn)去, 注意:studio3.5后添加包會有點(diǎn)不一樣
右鍵你的項(xiàng)目,選中Open Module Setting
在打開的界面,選中Dependencies,點(diǎn)擊里面的加號,繼續(xù)選擇Library Dependency
在搜索框里,搜索design。出現(xiàn)一堆(androidx的版本就是這樣選擇的),這里我們選擇com.android.support
選擇加入后,studio會自動build,并加入依賴。build.gradle會加上
implementation 'com.android.support:design:28.0.0'
注意:此時你去xml打上AppBarLayout,并不會提示,甚至根本就沒有。個人覺得的是因?yàn)閟tudio3.5優(yōu)化的太好了,不會隨便你幫我們rebuild項(xiàng)目,也不知道是不是bug;這個時候點(diǎn)擊build --> Rebuild Project,項(xiàng)目。之后xml使用正常,如下
<com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="?actionBarSize"/>
你會發(fā)現(xiàn),這里不是support的包,點(diǎn)進(jìn)去已經(jīng)是遷移完的androidx的包。正是因?yàn)?gradle.properties 那兩句話,幫我們完成了。build.gradle顯示的還是support的包,怎么辦
額外注意:就如上面說的那個類似bug的問題,假如此時你再build.gradle去掉了這個依賴,如果按之前的操作,我們都會點(diǎn)擊Sync Projec with Gradl Files,去更新下。之后項(xiàng)目就沒這個包了。沒錯,studio3.5也是這樣,但是你再xml里,繼續(xù)打AppBarLayout后,依舊會提示,而且xml里不報(bào)錯,能運(yùn)行。只是運(yùn)行后,才會崩潰報(bào)錯。正確做法還是需要,在去掉依賴后,繼續(xù)點(diǎn)擊下Rebuild Project,這時候才會正常。(感覺這個時候就是bug了)
二、一鍵將build.gradle的support包改成andoridx
點(diǎn)擊 Refactor --> Migrate to AndroidX
后續(xù)一直點(diǎn)默認(rèn),我這里就不貼圖了,直接說操作,Migrate --> (選擇我們的項(xiàng)目,點(diǎn)擊OK) --> YES。后會彈出下圖,
點(diǎn)擊Do Refactor。之后,那么'com.android.support:design:28.0.0'會直接改變成響應(yīng)的androidx包
implementation 'com.google.android.material:material:1.0.0'
三、可能有些人升級了studio,但是卻不像使用androidx
正確做法是,把 gradle.properties 里那2句話去掉。同時,把你的build.gradle改成你之前的support包。我們知道support包最后一版本是28。之后一切導(dǎo)包,都不會在遷移了。是support,就是support包。
希望本篇能幫助一些人。再放一個support遷移到androidx的對照 support To androidx
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android Moveview滑屏移動視圖類完整實(shí)例
這篇文章主要介紹了Android Moveview滑屏移動視圖類,很有實(shí)用價值,需要的朋友可以參考下2014-07-07Android自定義Spinner下拉列表(使用ArrayAdapter和自定義Adapter實(shí)現(xiàn))
這篇文章主要介紹了Android自定義Spinner下拉列表(使用ArrayAdapter和自定義Adapter實(shí)現(xiàn))的相關(guān)資料,需要的朋友可以參考下2015-10-10android 設(shè)置圓角圖片實(shí)現(xiàn)代碼
在android應(yīng)用開發(fā)中,可能是美化需要,圖片需要處理成圓角,本文將給出實(shí)現(xiàn)代碼,開發(fā)中的遇到此問題的朋友可以參考下2012-11-11Android實(shí)現(xiàn)自定義View控件的流程詳解
這篇文章主要為大家詳細(xì)介紹了Android中實(shí)現(xiàn)自定義View控件的流程,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以了解一下2023-06-06Android變形(Transform)之Camera使用介紹
Camera主要實(shí)現(xiàn)3D的變形,有轉(zhuǎn)動,旋轉(zhuǎn)等,Camera的源碼是由Native(本地代碼)實(shí)現(xiàn),提供的接口也比較簡單,感興趣的朋友可以參考下,或許對你學(xué)習(xí)有所幫助2013-02-02Android Studio 報(bào)Integer types not allowed錯誤
本文給大家分享的是在使用Android Studio的過程中遇到的報(bào)Integer types not allowed錯誤的分析及解決方法,非常實(shí)用,有需要的小伙伴可以參考下2017-10-10Android提高之多級樹形菜單的實(shí)現(xiàn)方法
這篇文章主要介紹了Android多級樹形菜單的實(shí)現(xiàn)方法,很實(shí)用的功能,需要的朋友可以參考下2014-08-08Android實(shí)現(xiàn)可拖拽的GridView效果長按可拖拽刪除數(shù)據(jù)源
這篇文章主要介紹了Android實(shí)現(xiàn)可拖拽的GridView效果長按可拖拽刪除數(shù)據(jù)源,要實(shí)現(xiàn)的基本功能是長按,移到垃圾桶,刪除數(shù)據(jù),需要的朋友可以參考下2017-12-12