Android NDK调用c/c++

来源:互联网 发布:linux怎么修改用户组 编辑:程序博客网 时间:2024/06/05 17:59

Android NDK博客目录

简单建一个android ndk工程(android环境+android-ndk-r8)
http://blog.csdn.net/nsw911439370/article/details/9246241

Android NDK 概述,翻译OVERVIEW.html整体了解NDK
http://blog.csdn.net/nsw911439370/article/details/9260085

Android.mk语法
http://blog.csdn.net/nsw911439370/article/details/9260473

Application.mk语法
http://blog.csdn.net/nsw911439370/article/details/9260489

Android NDK调用c/c++
http://blog.csdn.net/nsw911439370/article/details/9264993



前提:命令行 -javac 和-javah好使,就是你已经配置了java的环境变量。

java里声明方法 比如你的com.test.jni目录下Main类里声明了

方法

class Main{

public native String getString (String string);

}

方法,然后c/c++里怎么实现它呢;

如图

你程序编译后 通过命令行到达程序的  bin目录下

运行

-javah -d jni -classpath classes come.test.jni.Main            (这是你java里声明的方法)


然后 你的jni目录下会多了个com_test_jni_Main.h 一个c的头文件


内容如下

#include <jni.h>
/* Header for class com_test_jni_Main */


#ifndef _Included_com_test_jni_Main
#define _Included_com_test_jni_Main
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_test_jni_Main
 * Method:    getString
 * Signature: (Ljava/lang/String;)Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_test_jni_Main_getString
  (JNIEnv *, jobject, jstring);

#ifdef __cplusplus
}
#endif
#endif


然后你就可以通过 c/c++知识实现里面的方法了(上面的红字方法)

至于怎么生成动态库(真正连接Android和c/c++)我博客里有。


(JNI最难的是传递的参数的转换,这里有详细介绍和实例http://helloxuweifu.iteye.com/blog/1168647)