Android AndroidX的遷移
1. 前言
AndroidX replaces the original support library APIs with packages in the androidx namespace. Only the package and Maven artifact names changed; class, method, and field names did not change.,Google不再對(duì)android support
庫(kù)進(jìn)行維護(hù),android support
中的API由命名空間AndroidX
下的軟件包進(jìn)行替換,即相應(yīng)的包名
和Maven工件名
發(fā)生改變。
2. 遷移AndroidX
2.1 遷移之前的準(zhǔn)備
原有項(xiàng)目的support
庫(kù)版本升級(jí)至28(Android 9),這也是support library
的最后版本,SDK 28 和AndroidX 1.0 是等效的。This is because AndroidX artifacts with version 1.0.0 are binary equivalent to the Support Library 28.0.0 artifacts.,
compileSdkVersion 28
建議使用Android studio 3.2或更高版本,(當(dāng)前最新版已經(jīng)到了4.0)。
gradle-wrapper.properties
中Gradle插件版本不低于4.6。
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
如果代碼在版本控制器中,建議在單獨(dú)的分支中遷移。
2.2 執(zhí)行遷移
在gradle.properties文件中添加下列項(xiàng)。
# Android 插件會(huì)使用對(duì)應(yīng)的 AndroidX 庫(kù)而非支持庫(kù)。 android.useAndroidX=true # Android 插件會(huì)通過(guò)重寫(xiě)現(xiàn)有第三方庫(kù)的二進(jìn)制文件,自動(dòng)將這些庫(kù)遷移為使用 AndroidX,但并不完全自動(dòng)。 android.enableJetifier=true
如果是AS 3.2或更高版本,則提供了一鍵遷移,選擇菜單Refactor-> Migrate to AndroidX
,會(huì)提示備份當(dāng)前工程,勾選Backup project as Zip file
,可以自動(dòng)幫你備份。
左下角提示,點(diǎn)擊Do Refactor
3 遷移結(jié)果
在一鍵遷移之后,gradle文件中implementation的所有support庫(kù)被androidx替換,比如
implementation 'com.android.support:appcompat-v7:28.0.0' 變?yōu)? implementation 'androidx.appcompat:appcompat:1.0.0'
相應(yīng)類(lèi)名也會(huì)發(fā)生改變
import android.support.v7.app.AppCompatActivity; 變?yōu)? import androidx.appcompat.app.AppCompatActivity;
所以,可以先看看上面兩項(xiàng)結(jié)果,如果沒(méi)有替換成功,可手動(dòng)替換,相應(yīng)替換可查閱官方提供的CSV格式的依賴(lài)庫(kù)映射文件和類(lèi)映射文件。
rebuild project
,如果編譯通過(guò),那么恭喜你了,我反正是失敗了。
4 遷移出錯(cuò)
4.1 可手動(dòng)糾正的錯(cuò)
有的文件中沒(méi)能替換掉,需要按照上述兩項(xiàng)映射手動(dòng)替換。
檢查gradle中通過(guò)implementation
引入的庫(kù),比如implementation androidx.recyclerview:recyclerview:1.0.0'
,則一鍵遷移后導(dǎo)入的類(lèi)為import androidx.appcompat.widget.RecyclerView;
,需要替換為import androidx.recyclerview.widget.RecyclerView;
,猜測(cè)只是全局替換掉support
字樣。因?yàn)?code>類(lèi)似還有GridLayoutManager
、FragmentTransaction
;`等。
4.2 第三方庫(kù)沖突
support
庫(kù)和androidx
是不能共存的,
- 情況1 :當(dāng)遷移結(jié)束之后,理論上講自己的項(xiàng)目使用的是
androidx
,但是老項(xiàng)目中導(dǎo)入了許多第三方的庫(kù),這些舊版本的庫(kù)使用的是support
。 - 情況2:這種情況發(fā)生在未進(jìn)行遷移的項(xiàng)目中,由于導(dǎo)入了最新版的第三方庫(kù),而該庫(kù)使用了
androidx
,也會(huì)報(bào)錯(cuò)。
解決方法:
- 情況1,更新第三方庫(kù)到最新版本或使用
androidx
的版本,如果這個(gè)庫(kù)沒(méi)有使用androidx
的版本,那就要找其他的方案代替吧(不知道是否是正確的解決方案)。 - 情況2:使用舊版本的第三方庫(kù)。
總之,就是多build,根據(jù)異常信息解決問(wèn)題。
5 參考資料
谷歌開(kāi)發(fā)者-是時(shí)候遷移至 AndroidX 了
到此這篇關(guān)于Android AndroidX的遷移的文章就介紹到這了,更多相關(guān)AndroidX遷移內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Android 7.0 Settings 加載選項(xiàng)
本篇文章主要介紹了Android 7.0 Settings 加載選項(xiàng),Android 7.0 Settings頂部多了一個(gè)建議選項(xiàng),多了個(gè)側(cè)邊欄,操作更加便捷了,有興趣的可以了解一下。2017-02-02Android?ButterKnife依賴(lài)注入框架使用教程
ButterKnife是一個(gè)專(zhuān)注于Android系統(tǒng)的View注入框架,以前總是要寫(xiě)很多findViewById來(lái)找到View對(duì)象,有了ButterKnife可以很輕松的省去這些步驟。是大神JakeWharton的力作,目前使用很廣2023-02-02android開(kāi)發(fā)環(huán)境遇到adt無(wú)法啟動(dòng)的問(wèn)題分析及解決方法
開(kāi)始研究android開(kāi)發(fā),搭建開(kāi)發(fā)環(huán)境的時(shí)候就出了問(wèn)題,真是束手無(wú)策2013-02-02Android仿QQ首頁(yè)ListView左滑置頂、刪除功能
這篇文章主要為大家詳細(xì)介紹了Android仿QQ首頁(yè)ListView左滑置頂、刪除功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12Android之日期時(shí)間選擇控件DatePicker和TimePicker實(shí)例
本篇文章主要介紹了Android之日期時(shí)間選擇控件DatePicker和TimePicker實(shí)例,具有一定的參考價(jià)值,有興趣的可以了解一下2017-05-05Android 實(shí)現(xiàn)圖片轉(zhuǎn)二進(jìn)制流及二進(jìn)制轉(zhuǎn)字符串
這篇文章主要介紹了Android 實(shí)現(xiàn)圖片轉(zhuǎn)二進(jìn)制流及二進(jìn)制轉(zhuǎn)字符串,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03Android使用ViewPager實(shí)現(xiàn)圖片滑動(dòng)預(yù)覽效果
這篇文章主要為大家詳細(xì)介紹了Android使用ViewPager實(shí)現(xiàn)圖片滑動(dòng)預(yù)覽效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07Android實(shí)現(xiàn)漂亮的Gallery畫(huà)廊
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)漂亮的Gallery畫(huà)廊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05Android開(kāi)發(fā)筆記之:Handler Runnable與Thread的區(qū)別詳解
本篇文章是對(duì)在Android中Handler Runnable與Thread的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05