首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android调用so文件解决思路

2012-05-31 
android调用so文件我反编译了一个人的apk,得到了一些源码和一个so文件,我把这个so拷贝到新的工程的lib/arm

android调用so文件
我反编译了一个人的apk,得到了一些源码和一个so文件,我把这个so拷贝到新的工程的lib/armeabi文件夹中,使用同样方法调用怎么老是提示 10-25 08:42:08.787: ERROR/AndroidRuntime(4182): Caused by: java.lang.UnsatisfiedLinkError: Library faceBlend not found libfaceBlend.so 是这个so文件的全名

android里面能不能直接调用啊?
还有,我看百度地图api,就是一个jar文件和一个so文件,我在没有安装NDK,cygwin之类的东西,依然可以使用,意思就是百度可以不依赖NDK cygwin 等东西吧?


[解决办法]
so里提供的借口要和你java里累的名字一样 比如你在 com.java.test的包下有一个类名为123的类,那么与之对因的so里的类名是 com_java_test_123

假如你的so里的 函数名是这样的:com_java_test_123_test(); 那么他对应123类里的test方法
[解决办法]
举个例子你就明白了。比如你的包名com.android.test. 项目名:testActivity.

public native String gethello()

那么在.so中源文件的JNI函数名应该这么写jstring Java_com_android_test_testActivity_gethello(......)

所以你的工程必须有相同的包名及项目名才能直接用别人的.so文件。

热点排行