studio碰到问题:java.lang.UnsatisfiedLinkError解决办法

studio中碰到的jni问题

最近在做supervideo,解析youku视频地址,是加过密处理,须要用对应的key去解析,获取对应数据,在引用jni时,发现接二连三出问题,以前用eclipse时开发,直接把so文件放在libs/armeabi/下,就可以了,如果有有平台差异,也最多加个libs/armeabi-v7a之类的,在studio中,jni以前虽然写过相关工程,但是没有没有遇到相关问题,看来应了一句话:没有问题,可能以后才是最大的问题。那就总结下这两天这个接二连三的异常。

首先,在拼接好了url之后,接用把key和url去加密,调用jni方法。报出第一个错误,信息如下:

看了下,是说so文件没有打进apk中,于是开始在main目录下建立一个jniLibs,把so拷进去。(ps:之前是以引用的方式)
这下so应该拷贝进去了,一运行,又挂了,看下异常如下:

这个直接说是so文件没有相关方法,这有点说不过去了,又开始折腾了一会,还是这个错误,不合理啊,这不是什么技术上的难点。没理由这么。。。肯定是那里写的有问题。于是再review下代码。发现了,我在用调用native方法时,没有按规则来,想起很久以前调用aidl时,也有一个类似的情况,就是无法link里面的方法。我看了下引用native方法的包名和文件名,。。。。我自己改成我的package了,so文件声明却不是以我的命名开头的。好吧,明白了。改成对应的包名及文件名,问题解决。不是什么技术难点的时候,尤其多review下自己的代码。因为没理由让你耗费大量时间。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!