JNI之Hello-JNI进阶

时间:2015-12-07 08:31:03
【文件属性】:

文件名称:JNI之Hello-JNI进阶

文件大小:1.76MB

文件格式:ZIP

更新时间:2015-12-07 08:31:03

android jni

1. linux下jni环境搭建 参考:http://blog.csdn.net/zhouyuanjing/article/details/7553706 2. 编写HelloJni工程,在主Activity(本例:HelloJni.java)里声明native函数: 如下: public native String stringFromJNI(); public native double add(double a, double b); public native double sub(double a, double b); public native double multi(double a, double b); public native double div(double a, double b); static { System.loadLibrary("hello-jni"); } 3. 在根目录下创建 jni 目录(mkdir jni). 4. 利用命令生成相应的头文件,在根目录下执行:javah -classpath bin/classes -d jni com.xxx.hello.HelloJni ————————————— ——————— ^ ^ 包名 类名 5. 编写相应的.c文件(hello-jni.c) #include #include JNIEXPORT jstring JNICALL Java_com_xxx_hello_HelloJni_stringFromJNI(JNIEnv *env, jobject obj) { return(*env)->NewStringUTF(env, "Hello World from JNI !"); } JNIEXPORT jdouble JNICALL Java_com_xxx_hello_HelloJni_add(JNIEnv *env, jobject obj, jdouble a, jdouble b) { return a + b; } JNIEXPORT jdouble JNICALL Java_com_xxx_hello_HelloJni_sub(JNIEnv *env, jobject obj, jdouble a, jdouble b) { return a - b; } JNIEXPORT jdouble JNICALL Java_com_xxx_hello_HelloJni_multi(JNIEnv *env, jobject obj, jdouble a, jdouble b) { return a * b; } JNIEXPORT jdouble JNICALL Java_com_xxx_hello_HelloJni_div(JNIEnv *env, jobject obj, jdouble a, jdouble b) { return a / b; } 6. jni目录下编写Android.mk文件 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := hello-jni LOCAL_SRC_FILES := hello-jni.c include $(BUILD_SHARED_LIBRARY) 在根目录下运行:ndk-build xxx@xion-driver:~/android_env/eclipse/Workspace/HelloJni$ndk-build Install : libhello-jni.so => libs/armeabi/libhello-jni.so 可以看到已经正确的生成了libhello-jni.so共享库了。 7. Eclipse运行该工程即可。 ~~完~~


【文件预览】:
HelloJni
----操作流程(2KB)
----jni()
--------hello-jni.c(697B)
--------Android.mk(144B)
----AndroidManifest.xml(704B)
----res()
--------layout()
--------drawable-ldpi()
--------drawable-mdpi()
--------drawable-hdpi()
--------drawable-xhdpi()
--------values()
----src()
--------com()
----proguard-project.txt(781B)
----bin()
--------classes()
--------res()
--------jarlist.cache(119B)
--------HelloJni.apk(454KB)
--------classes.dex(6KB)
--------resources.ap_(443KB)
----.classpath(356B)
----assets()
----project.properties(563B)
----.settings()
--------org.eclipse.jdt.core.prefs(203B)
----libs()
--------armeabi()
----.project(811B)
----gen()
--------com()

网友评论

  • 学习了 android有些库还是编译器来不方便
  • 挺好的资源
  • 表示没有用起的~~~
  • 代码简单,可以了解一下jni的运行原理
  • 很好啊! 入门用的,帮助很大啊
  • 可能是版本的问题吧,导入后有好多错误啊!