MicroKibaco / CrazyDailyQuestion

每日一问: 水滴石穿,聚沙成塔,坚持数月, 必有收获~
35 stars 1 forks source link

借助addr2line,ndk-stack等方式分析adjust源码,对load so进行原理性分析,解决Adjust v2包含的so在部分6.0以下有兼容问题 #70

Open MicroKibaco opened 4 years ago

MicroKibaco commented 4 years ago

1. 问题场景

  1. fresco libimagepipeline.so 在部分64位手机上有兼容问题 , 官方最新的2.0androidx版本
  2. Adjust-v2 包含的so在部分6.0以下有兼容问题 NativeMethod Not Found image

2. 64位手机兼容问题定位过程

  1. 尝试使用各种策阅回捞crash日志,但是没有发现任何日志输出 ,导致该问题无法定位到具体原因

    线上监控:

    firebase 寻找线上日志

分析内存

  1. 闪退时,内存正常,没有内存抖动情况

分析APP启动代码

4.  逐行逐行去看启动过程native层日志输出

so库反编译

  1. 分析so包 ,分析so包的加载,排查so
    • 分析 so 异常可以借助 addr2line 和 ndk-stack 等方式

3. 问题原因

so问题,但是日志被哪里拦截,所以启用第三方兼容测试

第一次兼容测试未能发现有帮助的日志输出 第二次兼容测试发现adjust的so异常 其中包括分析adjust源码,对so 进行try catch 处理,导致native 方法找不到

4. 最终解决方案

回退adjust版本 V3.0