加载so异常总结:System.loadLibrary
程序引力关注
2018.12.11 23:58:08字数 1,271阅读 2,402
安卓开发中可能会遇到加载so的场景,但可能会遇到加载异常的情况。笔者对自己遇到的此类情况稍作总结。
问题背景
有一段网络请求的业务代码原本是在一个应用中的,为了实现复用,将这段业务代码封装成一个模块(module),然后编译成aar给另一个应用使用。但结果发现,原应用中这段业务代码是正常的,但是移植到另一个应用就出现了异常。
分析思路
分析此类问题的思路就是重点考察差异点。因为业务代码是相同的,但是在其中一个应用正常,在另一个应用异常,则需要考虑两个应用的差异点。最初考虑到的差异点或者可能的原因有:
- 包名:两个应用,最基本的不同就是包名的不同。它的不同可能会带来异常。
- 签名:不同的应用可能使用不同的签名,签名可能会引起业务认证或者鉴权不通过。
- 权限:应用不同,拥有的权限也不同
- 其他方面:其他未考虑到的差异点。
最初的思路即为这几个点。在分析问题时可以暂时确认这几个方向。若没有更为准确的思路或者灵感,最靠谱的手段还是查看日志。
分析问题最基本的手段:查看日志
尽管考虑了多个差异点,分析了可能的原因。但最实在的方式还是查看异常日志,进而为定位问题缩小范围。通过日志,定位到异常日志为:
dlopen failed: librar