今天发现线上版本高德定位的时候 调用 mLocationClient.startLocation(); 就会崩溃 并且会抛出
java.lang.AbstractMethodError: abstract method "void android.telephony.TelephonyManager$CellInfoCallback.onCellInfo(java.util.List)" at android.telephony.TelephonyManager$1.lambda$onCellInfo$0(TelephonyManager.java:5420)
用户反馈Android 10.0 以下版本没问题 , 只有 Android 10.0 报错,
反复测试发现是混淆的问题,
在混淆文件添加:
-keep class com.loc.**{*;}
然后就好使了
定位问题:
一开始也不知道是什么问题引起的,后来发现当buildType是debug的时候是正常的,问我的debug没有配置混淆,所以怀疑是混淆造成的问题,然后在定位的方法里面挨个打断点试,最后定位到是:mLocationClient.startLocation();
这行会崩溃所以打开这个startLocation的方法看了看:
觉得可能是AMapLocationClient这个类有一些不可告人的秘密,又看了看它import的类,感觉这个com.loc的包有猫腻,所以索性就把这个包给放在混淆文件里面试了一下,然后就好使了.