system.load和system.loadLibrary 网上反馈的问题
1、使用System.loadLibrary加载so成功,用System.load就失败?
遇到一个怪问题:
把so放到内置SD卡中,调用System.load(),加载,出现以下报错:
第一个错:dlopen("/storag/sdcard1/Marstool/VehDiag/Audi/libDiag.so")failde:Cannot load library:load_library(linker.cpp:814) can't map loadable segments for '/storag/sdcard1/Marstool/VehDiag/Audi/libDiag.so' :invalid argument
第二个错:UnsatisfiedLinkError:Cannot load library:load_library(linker.cpp:814):can't map loadable segments for '/storag/sdcard1/Marstool/VehDiag/Audi/libDiag.so' :invalid argument(两个错其实都差不多一个意思)
猜测的原因:
1.文件不存在(查过发现路径没错,用代码能搜到该文件)
2.so文件有问题(后把so放到项目中进行System.loadLibrary()加载,发现可以,所以又排除)。
3.Root的权限问题(可它本身就是在内置SD文件下的,不需要Root权限,所以排除)。
4.是系统本身存在问题?(用了同样配置差不多的平板,安卓系统都是4.2.1,发现别的平板可以,所以觉得奇怪
问题未解决。
问题原网址:http://www.mayflyask.org/question/96
2、问题:
System.loadLibrary加载so库时报警告JNI_OnLoad returned bad version(-1)并且crash
原因:
System.loadLibrary加载的so库,必须有被用到,不然gDvmJni.jniVm就失败返回-1,然后就会导致程序卡死
问题原网址:http://blog.csdn.net/shirleyxiao/article/details/38386693
3、JNI例子碰到的问题:System.loadLibrary失败
问题:
在Activity的onCreate里面 System.loadLibrary时报错:java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1479]: 33 unknown reloc type 8 @ ( 0)
不知道原因。
解决方案:
楼主用Android for ARM的source code编译了一下.so,OK了。
问题原网址:http://bbs.csdn.net/topics/360074016
4、Android中动态加载JNI失效问题探究
问题:
在做so动态加载时遇到了后加载的JNI方法失效的问题。在进行动态加载3期分享时,使用so文件的动态加载作为示例,发现一个有趣的现象——在某些情况下,通过System.load("foo.so")加载进来的so并没有生效。
原因未知。
未解决。
问题原地址:http://lilei.work/2016/06/17/Dynamic-Loading-JNI-Not-Work/
5、 问题:
昨天测试人员在测试的时候,经过各种断网联网以及其他功能操作之后。 在System.loadLibrary这行的时候就会报 java.lang.UnsatisfiedLinkError: Couldn't load secret: findLibrary returned null,程序关了,重开,走到这里也一直会报这个问题了,即使重新安装也是。 只有在清除应用数据后才能正常使用。
原因未知。
解决方案:楼主找到原因,说是其他问题造成的,然后楼主就跑了。
其他留言解决方案:
产生原因1:加载库名错误
产生原因2:生成的库和运行平台不匹配,
解决办法:在jni文件夹下新建Application.mk文件其中指定 APP_ABI := all 生成所有支持平台的.so库