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再也不對android support
庫進行維護,android support
中的API由命名空間AndroidX
下的軟件包進行替換,即相應的包名
和Maven工件名
發生改變。android
support
庫版本升級至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
gradle-wrapper.properties
中Gradle插件版本不低於4.6。distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
# Android 插件會使用對應的 AndroidX 庫而非支持庫。 android.useAndroidX=true # Android 插件會經過重寫現有第三方庫的二進制文件,自動將這些庫遷移爲使用 AndroidX,但並不徹底自動。 android.enableJetifier=true
Refactor-> Migrate to AndroidX
,會提示備份當前工程,勾選Backup project as Zip file
,能夠自動幫你備份。Do Refactor
在一鍵遷移以後,gradle文件中implementation的全部support庫被androidx替換,好比app
implementation 'com.android.support:appcompat-v7:28.0.0' 變爲 implementation 'androidx.appcompat:appcompat:1.0.0'
相應類名也會發生改變gradle
import android.support.v7.app.AppCompatActivity; 變爲 import androidx.appcompat.app.AppCompatActivity;
因此,能夠先看看上面兩項結果,若是沒有替換成功,可手動替換,相應替換可查閱官方提供的CSV格式的依賴庫映射文件和類映射文件。ui
rebuild project
,若是編譯經過,那麼恭喜你了,我反正是失敗了。google
implementation
引入的庫,好比implementation androidx.recyclerview:recyclerview:1.0.0'
,則一鍵遷移後導入的類爲import androidx.appcompat.widget.RecyclerView;
,須要替換爲import androidx.recyclerview.widget.RecyclerView;
,猜想只是全局替換掉support
字樣。由於相似
還有GridLayoutManager
、FragmentTransaction
;support
庫和androidx
是不能共存的,spa
androidx
,可是老項目中導入了許多第三方的庫,這些舊版本的庫使用的是support
。androidx
,也會報錯。解決方法:插件
androidx
的版本,若是這個庫沒有使用androidx
的版本,那就要找其餘的方案代替吧(不知道是不是正確的解決方案)。總之,就是多build,根據異常信息解決問題。版本控制
AndroidX預覽
官方遷移教程
谷歌開發者-是時候遷移至 AndroidX 了code
本文如有出入,請指正!
我是小小范同窗。教程
本文由博客一文多發平臺 OpenWrite 發佈!