先说下大致思路:如果想要完成这个目标,就需要大致了解 JNI 的调用过程,本人也是走了很多弯路才摸明白的,现在将经验分享如下:
实际上2者本来应该是一样的,结果都是一样的都是生成的so库被JNI调用,只不过 JNI->JNI 不用其他交叉编译工具,直接NDK就可以搞定。而我们自定义的c文件想要变成android JNI 识别的库 需要用到 NDK 的arm-linux-androideabi-gcc 命令,这个就需要在linux上有NDK for linux的环境,然后编译出.so 最后对头文件添加3行代码就可以被JNI直接调用了。
先说JNI->JNI
1.新建第三方工程即是新建android工程Glesso,android-tools添加native support,然后新建java类NativeClass,用于javah生产头文件,然后就去.cpp文件里实现这些方法吧。最后实现完就可以编译运行一遍,如果没问题就把armeabi下的 .so文件 和头文件拷出来。
2.新建工程JNITestPro,添加native support,然后新建java类NativeClass,用于javah生产头文件,然后就去.cpp文件里写上调用的方法,代码如下:
void * functionlib;
FILE * pFile;
int r =0.0f;
int