Android应用调用so库的方法
在Android中调用事先写好的so库时,必须知道库中函数名的结构。库中JNI函数的名字命名规范是Java_包名(点用'_'代替)_类名_方法名,比如Jave_com_example_hellojni_HelloJni_stringFromJNI(...)。现在知道了JNI函数的命名规范我们就可以根据这个规范来进行调用so库的处理:
- 将so库的libs目录放在Android应用的根目录下,libs的目录结构为libs\armeabi\hello-jni.so。
- 由于JNI的规范,我们必须用JNI函数中规定的包名和类名创建类,比如在包com.example.hellojni中创建HelloJni.java。
- 在HelloJni.java 中设置so库的调用,如:
public String getString(){ return stringFromJNI(); } private native String stringFromJNI(); static{ System.loadLibrary("hello-jni"); }
这样的好处是,你的其他的业务和UI类不受JNI调用函数名的制约,在其他包里就可以调用HelloJni这个类的getString(),间接调用so库中的函数了
不积跬步,无以至千里;不积小流,无以成江海