前言
Android5.0系统(64位),开发的一个系统应用,声明了一个服务,进程名为system,调用armeabi-v7a的库时抛出了dlopen failed to load 32 bit instead of 64 bit library异常,并且系统重启。
Debug
dlopen failed to load 32 bit instead of 64 bit library异常时因为当前环境是64位,却打开的是32位的动态库。但是我的工程里面只有armeabi-v7a的库,不存在64位的库,所以运行环境应该是32位的,在stackoverflow上(下图)找到了线索。
最后搜索到http://www.jianshu.com/p/8686931d31f0 64位系统的system进程是64位的,所以不能用32位库,这个进程已崩溃系统就重启了。系统应用加载库的路径只能/system/lib和/system/lib64,其他的路径都不可以。
解决办法
1.修改进程名,不要轻易使用system进程名。
2.增加64位的库。