AndroidX 遷移

AndroidX.png

引言:Android Support Library Exit History.

作者:JustDo23

時(shí)間:2019年09月18日

官網(wǎng):https://developer.android.google.cn/jetpack/androidx

01. 簡單概覽

  • AndroidXJetPack 中與操作系統(tǒng) 解除捆綁 并且 向后兼容 的開源項(xiàng)目。
  • AndroidX 完全取代 Support 并提供新的功能及特性。
  • 所有 Support 有關(guān)舊類 完整映射AndroidX 中。
  • AndroidX 使用嚴(yán)格的 語義版本控制 并可以進(jìn)行 單獨(dú)更新 。
  • 語義版本控制

02. 初步使用

  • 需要設(shè)置 compileSdkVersion28 及以上
  • gradle.properties 文件中進(jìn)行配置
# 是否指定使用 AndroidX
android.useAndroidX=true
# 是否將第三方依賴轉(zhuǎn)換為 AndroidX
android.enableJetifier=true
  • useAndroidXtrue 則 Android 插件 會自動使用相應(yīng)的 AndroidX 而非 Support
  • enableJetifiertrue 則 Android 插件 會重寫第三方庫的 二進(jìn)制 文件,自動遷移 現(xiàn)有的第三方庫 以使用 AndroidX

03. 項(xiàng)目遷移

  • 使用 Android Studio 3.2 及更高版本
  • 菜單欄依次選擇 Refactor > Migrate to AndroidX
  • 彈窗提示是否進(jìn)行 項(xiàng)目備份
  • 指定備份路徑或者跳過備份
  • 自動進(jìn)行 項(xiàng)目掃描 并在 Find 中提示 所有引用
  • 點(diǎn)擊 Do Refactor 進(jìn)行遷移
  • 注意:這里并不是結(jié)束,有可能還有很多包名替換是錯(cuò)誤的,需要手動調(diào)整

04. Glide

dependencies {
    implementation 'com.github.bumptech.glide:glide:4.9.0'// Glide
    annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'// Glide
}

如上配置,在 編譯時(shí) 仍舊會報(bào)錯(cuò),自動生成的文件總是引用 android.support.annotation.CheckResultSupport 注解包內(nèi)的類。

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50"http:// Kotlin

dependencies {
    implementation 'com.github.bumptech.glide:glide:4.9.0'// Glide
    kapt 'com.github.bumptech.glide:compiler:4.9.0'// Glide
}

如上解決,項(xiàng)目原本沒有引入 Kotlin 在引入之后使用 kapt 替換注解編譯器,問題解決。

05. FileProvider

<provider
    android:name="androidx.core.content.FileProvider"
    android:authorities="${applicationId}.fileProvider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths" />
</provider>

如上結(jié)果,遷移 AndroidX 只需要修改 provider 節(jié)點(diǎn)下的 android:name 其余配置不變。

06. 遷移檢查

  • 執(zhí)行指令來檢查依賴關(guān)系
# 只查看 release 的依賴關(guān)系
$ ./gradlew app:dependencies --configuration releaseCompileClasspath
  • 快捷鍵 Command + Shift + F 全局搜索 android.support
  • 運(yùn)行程序隱藏的編譯錯(cuò)誤

07. 個(gè)人經(jīng)驗(yàn)

  • 第一個(gè)項(xiàng)目本身引入了 Kotlin 在自動遷移之后需要手動修改很多錯(cuò)誤的包名
  • 第二個(gè)項(xiàng)目沒有引入過 Kotlin 在自動遷移之后包名基本全部正確替換
  • 可以嘗試多次進(jìn)行自動遷移操作以達(dá)到正確替換包名的目的

08. 包名替換

  • 快捷鍵 Command + Shift + R 進(jìn)行全局搜索替換
問題包名 新版包名
android.support.annotation.NonNull androidx.annotation.NonNull
android.support.annotation.Nullable androidx.annotation.Nullable
android.support.constraint.ConstraintLayout androidx.constraintlayout.widget.ConstraintLayout
android.support.v4.widget.NestedScrollView androidx.core.widget.NestedScrollView
android.support.v7.widget.RecyclerView androidx.recyclerview.widget.RecyclerView
android.support.v7.widget.LinearLayoutManager androidx.recyclerview.widget.LinearLayoutManager
android.support.constraint.Guideline androidx.constraintlayout.widget.Guideline
android.support.v7.widget.CardView androidx.cardview.widget.CardView
androidx.core.view.ViewPager androidx.viewpager.widget.ViewPager
android.support.v4.view.PagerAdapter androidx.viewpager.widget.PagerAdapter
android.support.v4.app.FragmentManager androidx.fragment.app.FragmentManager
android.support.v4.app.FragmentTransaction androidx.fragment.app.FragmentTransaction
android.support.v7.app.AppCompatDialog androidx.appcompat.app.AppCompatDialog

09. 拓展閱讀

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • (1)常用依賴庫對比: Old build artifact-->AndroidX build artifact ...
    anap閱讀 2,382評論 0 6
  • title: androidx遷移date: 2019-10-15 11:49:20tags: Androidx ...
    王占剛閱讀 1,110評論 0 0
  • 修改gradle.properties 點(diǎn)擊:Refactor > Migrate to AndroidX,如下圖...
    主音King閱讀 7,705評論 1 3
  • 什么是 AndroidX? Google 2018 IO 大會推出了 Android新的擴(kuò)展庫 AndroidX,...
    釣星星的小魚閱讀 1,372評論 0 1
  • 為什么遷移 現(xiàn)在來說,那就又是去年的事情了。到目前為止,androidx 庫很多版本已經(jīng)推出了正式穩(wěn)定版,版本詳情...
    lovejjfg閱讀 1,059評論 8 1

友情鏈接更多精彩內(nèi)容