1.编辑jprint.java文件
gliethttp@Leith:~/Android$ cat jprint.java
public class jprint
{
/*******************************************************
*the print() function will call the printf() funcion which is a ANSI c funciton
********************************************************/
public native void print();
static
{
System.loadLibrary("jnilibs");
}
}
2.生成class和.h文件
gliethttp@Leith:~/Android$ javac jprint.java
这样会生成jprint.class
然后使用javah生成jprint.h文件
gliethttp@Leith:~/Android$ javah jprint
3.将jprint.h作为hello.c的头文件,并实现jprint.h中定义了的jni接口函数.
4.编写hello.c文件
gliethttp@Leith:~/Android$ cat hello.c
#include <stdio.h>
#include "jprint.h"

JNIEXPORT void JNICALL Java_jprint_print(JNIEnv *env, jobject obj)
{
printf("hello,Android!/n###Leith_gliethttp./n");
}
5.编译jni的java共享库
gliethttp@Leith:~/Android$ gcc -fPIC -I /usr/local/jdk1.5/include -I /usr/local/jdk1.5/include/linux -shared -o libjnilibs.so *.c
6.成功后会在当前目录下生成libjnilibs.so文件,将当前libjnilibs.so所在目录加入LIB路径变量中.
gliethttp@Leith:~/Android$ export LD_LIBRARY_PATH=.:./lib:/home/gliethttp/Android:$(LD_LIBRARY_PATH)
7.编写java应用程序,调用c中的print函数
gliethttp@Leith:~/Android$ cat gliethttp_hello.java
public class gliethttp_hello
{
public static void main(String[] args)
{
jprint p = new jprint();
p.print();
}
}
8.编译应用程序gliethttp_hello
gliethttp@Leith:~/Android$ javac gliethttp_hello.java
9.好了,一切完成了,执行看效果吧:
gliethttp@Leith:~/Android$ java gliethttp_hello
hello,Android!
###Leith_gliethttp.

PS:使用vim编辑java程序的时候,必须要注意的是,TAB按键一定要正确为^I,绝对不要用4个空格替代,否则
javac老是提示错误,对于vim可以使用ctrl+v+tab的输入来输入一个正确的TAB键,
可以使用:set list,:set nolist取消:).
PS1:应该这样建立目录,这样格式比较统一
|-- c_source
| |-- hello.c
| `-- jprint.h
|-- java
| |-- gliethttp_hello.java
| `-- jprint.java
|-- lib
| `-- libjnilibs.so

http://blog.chinaunix.net/u1/38994/showart_1100966.html

更多相关文章

  1. Android从网上下载文件
  2. Android遍历某个文件夹的图片并实现滑动查看的的Gallery
  3. Android SDcard目录文件操作
  4. android sdcard文件存储 + 媒体库更新方法
  5. 【Android自学笔记】为Android应用程序添加Rate功能
  6. 录音及播放音频文件

随机推荐

  1. android节点网站代码
  2. 【Android】去除小数点后多余的零
  3. Android(安卓)Cursor之MergeCursor
  4. 通过网卡连接android设备
  5. [置顶] Android开发最佳实践---Futurice
  6. Android开发之自动换行LinearLayout
  7. 基于 Android(安卓)NDK 的学习之旅-----
  8. Android(安卓)Material Design控件之Navi
  9. 环境搭建好后的第一个Android(安卓)项目
  10. ListView监听OnItemClick无响应