您的位置:首页 > 移动开发 > Android开发

[android学习笔记]学习jni编程

2011-06-24 09:41 363 查看
由于笔者一直从事c++的开发,因此转移到android平台时不免需要使用jni的模式进行开发。

本人使用的ndk版本为r5b,该目录下面自带了一个hello-jni的sample程序,在导入该project到eclipse的时候破费周折,

按照网上教程均无法奏效,后来查阅官方文档,才顺利完成导入,编译。

(eclipse + ndk + cygwin平台的搭建请参阅该文档:windows系统集成cygwin与Eclipse与使用Android NDK r5(支持OpenglES),集成(转)
)

官方文档:

In Eclipse:

Click File > New Android Project...

Select the Create project from existing source
radio button.

Select any API level above Android 1.5.

In the Location
field, click Browse...
and select
the
<ndk-root>/samples/hello-jni

directory.

Click Finish
.

之后就可以编译了。

如果想自己建一个jni工程也很简单,建立一个新的android工程,然后在工程目录下面手动建立一个"jni"目录(与src目录平级),然后在该目录下面建立一个Android.mk(android的makefile)和你的c文件或者cpp文件,在函数声明和调用方面可以参照sample程序hello-jni,特别注意的是函数名字需要遵循"Java_packetname_projectname_functionname"的规则,否则运行期间会报链接错误。

编写c或者c++程序时的一个小的注意事项:

1.c代码,如实例中那样使用env参数,(*env)->NewStringUTF(env, "Hello from JNI!");

2.c++代码,需要这样调用 env->NewStringUTF("Hello from JNI!");

原因在于jni.h中对JNIEnv的声明针对c和c++是不同的,如下:


#if defined(__cplusplus)

typedef _JNIEnv JNIEnv;

#else

typedef const struct JNINativeInterface* JNIEnv;

#endif

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: