android 动态加载的 class 无法加载 so 。
写了一个 sdk 静态导入的时候可以调用 native 方法。
但是吧 sdk 改用动态加载的时候(通过 dexClassLoader 加载)。这个时候加载 so 的时候报错了。
报错信息: java.lang.UnsatisfiedLinkError: Couldn't load fraudmetrix: findLibrary returned null
1
814084764 2016-02-18 13:39:32 +08:00
不会的。肯定是你写错了。。
|
2
gnaix OP @814084764
try { long e = System.currentTimeMillis(); System.loadLibrary("fraudmetrix"); Log.d("MAIN", System.currentTimeMillis() - e + "s"); } catch (UnsatisfiedLinkError var3) { var3.printStackTrace(); } 就简单的加载代码。普通情况下是正常的,但是把这段代码放在动态加载的 class 中就抛 UnsatisfiedLinkError 了 |
3
r00tt 2016-02-18 14:42:10 +08:00
dexClassLoader 初始化的时候是可以传入 so 查找路径的,试试加入 so 的路径,必须是在当前应用的文件目录下,其他目录不行
|
4
gnaix OP 改用 System.load()可以了
|
5
faywong8888 2016-02-18 15:47:00 +08:00
肯定是 classload 的资源查找路径的问题
|
6
gnaix OP @faywong8888 是的 刚刚发现是因为 dexClassLoader 的 libPath 参数自己设为 null 了,没用 /data/data/package/lib
|