AndroidX升級日記
前言
參加 Google 大會的感受

今年有幸參加了 Google 的 IO 大會, 簡單的分享一下令我為之興奮的幾點
- 今年 Google 主要力推了 TensorFlow 甚至為其安排了為期一天的專場, 可見推廣力度之大, TensorFlow Lite 讓我感受到了在手機客戶端訓練神經網路的可能性, 這是非常令人著迷的, 國內的大廠如 阿里的鹹魚 和 網易有道, 均已跟進, 不得不向大廠致敬, 以下是官網和相關程式碼
- Flutter 即將迎來 1.0 的版本, 可以看的出來移動端總是沿著更高效開發的路線去推進, 所有 Flutter 誕生了, 身為 Android 開發者, 學習 Flutter 有得天獨厚的優勢, Google 也為 Flutter 添加了很多 Material 的元件
- Kotlin 的 1.3 版本將會將 Coroutines 協程升級為正式版, 可以安心大膽的用, 不用擔心被 Google 爸爸去掉了
AndroidX 的由來
好了回到正題, 你是否有每次變更 targetsdk 變更的時候 com.android.support:xxx 的相關依賴均要更新的困擾, 如果有的話, 本文所述的內容, 便有可能解決你的困擾
Google 推出了新的 jetpack 包, 它是完美向下相容的, 日後將會使用 androidx.appcompat:xxx 來代替 com.android.support:xxx 依賴, 當然前提是需要把 targetSdkVersion 升級到 28 即 Andorid 9.0
心動不如行動, 接下來就介紹一下, 如何從 com.android.support 遷移到 androidx
遷移工作
將 IDEA 升級到 3.2 以上的版本
升級 Gradle 的版本
- 開啟 gradle-wrapper.properties
- 將 gradle 的版本升級為 4.10
... distributionUrl=https\://services.gradle.org/distributions/gradle-4.10-all.zip
升級外掛版本號
- 開啟 project 工程下的 build.gradle 檔案(注意不是 module 下的)
- 將 gradle 外掛的版本升級為 3.2.0+
dependencies { classpath "com.android.tools.build:gradle:3.2.0-rc03" ... }
- 開啟 module 下面的 build.gralde 檔案
- compileSdkVersion 更改為 28
- targetSdkVersion 更改為 28
- buildToolsVersion 更改為 28.0.2
使用 Migrate to androidx
- 點選 Android Studio 導航條的 Refactor 中的 Migrate to androidx, 即可一鍵轉為 androidX

- 會發現 import 匯入的檔案字首變更了

注意: 一定要點選 Migrate to androidx 轉換, 手動切換如有遺漏, 可能會出現 com.android.support:xxx 包與 androidx 並存的情況, 導致編譯無法通過
總結
好了, 就這麼簡單, 喜歡嚐鮮的朋友們, 可以親自動手試一試
我自己的圖片選擇框架在 feature/androidx 分支上也已經升級到了 androidx, 下面附上鍊接