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

 

 

 

 

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