Jni+Ndk初次开发

来源:互联网 发布:优阅网络下载 编辑:程序博客网 时间:2024/05/12 21:05

经过一天的磕磕碰碰,终于完成第一个JNI+NDK开发。

(1)下载安装cygwin,我采用的是在线安装方式,这里我们只需要以下组件 : binutils , gcc , gcc-mingw , gdb , make , 不用下全部的组件

(2)下载NDK工具,并配置ndk环境变量


配置完成后,我们开发第一个NDK程序

a:创建android工程

b:在一个java类中声明一个native方法


c:编译并生产头文件

注意事项:先在cmd中编译 javac Jni.java

cd 到该项目下bin目录下并

set classpath=D:\workspace\DiskNumber\src ,到项目的src根目录下,然后运行

javah -jni com.tjn.test.TestDll,

d:创建c文件

引入头文件: 首先要包含头文件 jni.h, 该头文件位置定义在 android-ndk-r9c\platforms\android-5\arch-arm\usr\include目录下的 jni.h, 下面是该头文件中定义的一些方法, 包括本项目中使用的 NewString 方法;
[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. jstring     (*NewString)(JNIEnv*, const jchar*, jsize);  
  2. jsize       (*GetStringLength)(JNIEnv*, jstring);  
  3. const jchar* (*GetStringChars)(JNIEnv*, jstring, jboolean*);  
  4. void        (*ReleaseStringChars)(JNIEnv*, jstring, const jchar*);  
  5. jstring     (*NewStringUTF)(JNIEnv*, const char*);  
  6. jsize       (*GetStringUTFLength)(JNIEnv*, jstring); 
e:编写Android.mk文件

  1. LOCAL_PATH := $(call my-dir)  
  2.   
  3. include $(CLEAR_VARS)  
  4.   
  5. LOCAL_MODULE    := hello  
  6. LOCAL_SRC_FILES := hello.c  
  7.   
  8. include $(BUILD_SHARED_LIBRARY)  
其中local_module := hello;//hello代表so库名称

local_src_files := hello.c;//hello.c代表我们创建的c文件

f:编译NDK动态库

进入Cygwin相应目录 : 从Cygwin中的cygdrive 中进入windows的工程jni目录

编译hello.c文件


g:Java中加载动态库

  1. //静态代码块加载C语言库文件  
  2. static{  
  3.     System.loadLibrary("hello");  
  4. }  

0 0
原创粉丝点击