Android应用调用so库的方法

在Android中调用事先写好的so库时,必须知道库中函数名的结构。库中JNI函数的名字命名规范是Java_包名(点用'_'代替)_类名_方法名,比如Jave_com_example_hellojni_HelloJni_stringFromJNI(...)。现在知道了JNI函数的命名规范我们就可以根据这个规范来进行调用so库的处理:

  1. 将so库的libs目录放在Android应用的根目录下,libs的目录结构为libs\armeabi\hello-jni.so。
  2. 由于JNI的规范,我们必须用JNI函数中规定的包名和类名创建类,比如在包com.example.hellojni中创建HelloJni.java。
  3. 在HelloJni.java 中设置so库的调用,如:
        public String getString(){
            return stringFromJNI();
        }
        private native String stringFromJNI();
        
        static{
            System.loadLibrary("hello-jni");
        }

    这样的好处是,你的其他的业务和UI类不受JNI调用函数名的制约,在其他包里就可以调用HelloJni这个类的getString(),间接调用so库中的函数了

     

posted @ 2012-07-03 16:02  chiboo  阅读(1382)  评论(0编辑  收藏  举报