Android平台下的JNI开发
来源:互联网 发布:淘宝服务器有几台 编辑:程序博客网 时间:2024/05/16 17:06
http://blog.sina.com.cn/s/blog_4298002e01013zk8.html
JNI是Java Native Interface的缩写,通过JNI可以方便我们在Android平台上进行C/C++编程。要用JNI首先必须安装Android的NDK,配置好NDK环境之后就可以在Eclipse下进行C/C++开发了。
1 创建Android工程
2 设计Java接口
打开TestJNI.java,我们将在这个文件里创建一个JNI接口类,该Java类提供一个加法运算的接口:
这里的函数声明一定要加native修饰。
3
在bin文件夹下,如果没有则创建目录:/com/TestJNI/jni,并把TestJNI.class复制到/bin/com/TestJNI/jni目录下。然后在终端里进入工程的bin目录,输入javah -jni com.TestJNI.jni.TestJNI,此时会生成一个com_TestJNI_jni_TestJNI.h文件。
com_TestJNI_jni_TestJNI.h文件就是对应于上面定义的Java接口的C/C++头文件。打开这个文件,可以看到系统已经为我们自动完成了接口函数的声明:
这三个函数分别对应于JNI的三个接口函数,命名方式只是在前面加上了Java包名。
4 用C/C++实现JNI
下面我们就来实现CAdd类和JNI接口。首先实现CAdd类:
Add.h
Add.cpp
然后我们来写com_TestJNI_jni_TestJNI.cpp,实现JNI:
到此我们的C/C++部分就全部实现了。
5
然后打开文件在里面输入如下内容:
其中LOCAL_PATH是C/C++代码所在目录,也就是我们的jni目录。
LOCAL_MODULE是要编译的库的名称。编译器会自动在前面加上lib,在后面加上.so。
LOCAL_SRC_FILES是要编译的C/C++文件。
现在我们在工程的根目录下创建一个Application.mk文件,并输入如下内容:
6 编译动态链接库
编译成功后会在工程目录的libs/armeabi目录下生成一个libTestJNI.so文件。
7 在Java中调用JNI
在这里我们首先用System.loadLibrary("TestJNI")加载了C/C++编译的so文件,然后创建了一个TestJNI对象,通过该对象调用了so库中的方法。现在的代码应该是编译不过去的,因为我们还没有给TextView添加ID,所以R.id.tv是无效的。那么我们来添加这个ID。找到res/layout目录下的main.xml文件:
双击打开该文件,在TextView标签下添加一行android:id="@+id/tv",这样就创建了一个名为tv的域并自动分配ID,如下图:
现在编译工程,就可以顺利通过了。程序运行结果如下:
- 【笔记】Android平台下的JNI开发
- Android平台下的JNI开发
- Android平台下的JNI开发
- Android平台下的JNI开发
- Android平台下的JNI开发
- Android平台下的JNI开发
- Android平台下的JNI开发
- Android平台下的JNI开发
- Android平台下的JNI开发linux平台下
- Android平台的JNI开发初步
- Android平台的JNI开发初步
- 分享自风之忧伤 《【笔记】Android平台下的JNI开发》
- android平台的jni
- 使用Eclipse开发工具实现Android平台JNI的开发
- android下jni开发
- android下JNI开发
- Linux平台下的JNI开发[88250原创]
- Eclipse下的Android JNI 开发
- 五月,记忆藏在石榴花下
- 有一个人、在我心里
- 用得真心,换的孑然心境
- 感谢对手
- 长春办理信用卡的微博_腾讯微博
- Android平台下的JNI开发
- [Leetcode]Valid Number
- View Barbara Canellis's Obituary
- Using Trade Shows to Launch or License Your Novel Consumer Product Is Key
- The ghosts of World War I still haunt us
- sql server 2008 评估期已过期解决办法
- 我们都是龙的传人
- Crytek的幕后花絮
- ubuntu 14.04安装gnome3桌面