1. 程式人生 > >不管你喜不喜歡 androidX 它都來了

不管你喜不喜歡 androidX 它都來了

本著我踩的坑都要分享出來的精神寫了今天文章。

com.android.support 系列的依賴報名已經不陌生了,為了相容而出現的他們在更新到28時候谷歌官方宣佈停止更新,原因就是谷歌爸爸不喜歡這個名字了!! 呵呵 玩笑,只是版本管理有些亂,開發中也經常會碰到各種compat 而且原來越多,所以谷歌開始規範支援包,androidX 孕育而生。

androidx 出現規範程式碼,但是產生一個過渡期,什麼過渡期? support到androidx過渡,對於我們來說又是一頓查詢替換。為什麼查詢替換,因為原來api類名不變的情況下,androidx報名全部發生變化。這導致同一個專案中androidx 和 support會產生衝突,常見錯誤如下:

Manifest merger failed : Attribute [email protected] value=(androidx.core.app.CoreComponentFactory) from [androidx.core:core:1.0.0-beta01] AndroidManifest.xml:22:18-86
    is also present at [com.android.support:support-compat:28.0.0-alpha3] AndroidManifest.xml:22:18-91 value=(android.support.v4.app.CoreComponentFactory).
    Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:11:5-49:19 to override.

注意:這個錯誤基本上在後面開發中經常會遇見,這就是專案中同時使用了androidx 和 support 。

現在很多國外程式碼已經開始使用了androidx 了 ,例如 photoview google+ sdk等。
所以以後support肯定是要被淘汰的!!

首先看看依賴包變化,例如:

api 'com.android.support:appcompat-v7:28.0.0'

變成了:

api 'androidx.appcompat:appcompat:1.0.0'

其他包變化可以參照官方文件:

//  https://developer.android.com/jetpack/androidx/migrate

那麼怎麼過渡到androidx?

首先:
將專案中android support 包和引用都改成androidx,這就是前面說的查詢替換。

然後:
專案中肯定有第三方依賴,而且現在很多依賴都是使用sopport 包,那麼就必須保證

classpath 'com.android.tools.build:gradle:3.1.+'

那麼android studio就提供了sopport轉androix的能力;需要在gradle.properties 檔案中加入配置:

android.useAndroidX=true
android.enableJetifier=true

上面工作完成後,那麼恭喜你,你的專案已經進入androix時代了 。

如果對你有幫助麻煩點個贊哦 !! _