Android X 升級步驟以及遇到的坑

1、什麼是AndroidX?

官方文檔上說

AndroidX是對原始Android 支持庫的重大改進 。與支持庫不同,AndroidX軟件包是單獨維護和更新的。從版本1.0.0開始。您可以單獨更新項目中的AndroidX庫。

也就是說,以前的話,如果appcompat這個庫使用的是27這個版本,那麼其他的庫比如recyclerview也要使用27這個版本;使用AndroidX,就可以使用不同版本的庫,可以單獨更新項目中使用的庫。很多老的項目如果繼續維護,建議升級到 Android X

2.升級步驟:Android Studio 提供了非常方便的升級Android X的方法:Refactor ------>Migrate to AndroidX... -------->Migrate 

3.遇到的坑

     坑1:本以爲一鍵升級到了AndroidX 就大功告成了呢,迫不及待的運行下,結果一片紅😭,接下來排查原因,發現是註解的問題,目前項目中的註解一方面是support包中的  一方面是butterknife用到了註解 ,分析下問題毫無疑問就是butterknife 的事情了,目前項目中使用的butterknife的版本是8.81  去GitHub 看下butterknife :https://github.com/JakeWharton/butterknife 的最新版本是10.2.1  果斷升級到最新,然後在測試環境運行了下,真的運行起來了

這裏提醒下:升級Android X 一定要把 ButterKnife升級到10.0以上

implementation 'com.jakewharton:butterknife:10.2.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1'

坑2:debug 環境可以跑起來了  切換到Release再測試下   運行了一會,項目可以運行起來 但是運行起來直接Crash,看下日誌,class not found,毫無疑問就是混淆的問題了,仔細分析下確實有問題  之前混淆文件keep 了support類 但是沒有加AndroidX 的類 ,然後就去Android Developer :https://developer.android.com/jetpack/androidx 看了下文檔,加上混淆就可以了:

#------------------AndroidX start-------------
-keep class com.google.android.material.** {*;}
-keep class androidx.** {*;}
-keep public class * extends androidx.**
-keep interface androidx.** {*;}
-dontwarn com.google.android.material.**
-dontnote com.google.android.material.**
-dontwarn androidx.**
#------------------AndroidX End-------------

坑3:還有一些之前的三方庫 比如:Utilcode庫 ,Lottie庫等 要升級到最新的AndroidX的版本  一些方法使用上也可能會有差別 

 

歡迎留言 撩,一起探討  個人GitHub:https://github.com/HuaDanJson

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章