System.loadLibrary()进程不断重启

时间:2024-03-19 13:39:03

解决这个问题花费了最近很长的一段时间,所以觉得非常有写出来分享的必要。其实这个问题,主要还是需要考虑细心!因为说到底是权限的问题,但是又与平常所说的权限问题有很大的差别。网上遇到的一些关于加载so库的问题都是什么连接问题、什么又找不到了的之类,都是可以正常吐出Exception的情况,这个连个Exception都没有打印出来。

问题描述

主要的log为Process xxxxx (pid xxxxx) has died : fore BFGS。前面的TAG是在System.loadLibrary(xxxx)之前的一条语句。
System.loadLibrary()进程不断重启

原因

所加载的so库进行了外部存储的访问,但是加载so库的时候并没有获得到访问外部存储的权限。因此崩溃得连一句像样的有点用处的log都没有。

吐槽

真的是奇了怪了。都没听说过so库访问外部存储还需要访问权限的!但是,它是在一个App中,所以它的行为也可以看成是App的行为,因此需要权限也是可以理解的。但是为什么会在加载的时候,就会去检测这些权限呢?而且没有权限的时候,一个像样的错误都爆不出来,好生苦找啊!