[置顶] Android NDK开发学习:我的第一个NDK项目
2016-06-06
* 4,JNI是什么:Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。其作用简单的说有以下两点:
1、你可以使用JNI来实现“本地方法”(native methods),并在JAVA程序中调用它们。
2、JNI支持一个“调用接口”(invocation interface),它允许你把一个JVM嵌入到本地程序中。本地程序可以链接一个实现了JVM的本地库,然后使用“调用接口”执行JAVA语言编写的软件模块。例如,一个用C语言写的浏览器可以在一个嵌入式JVM上面执行从网上下载下来的applets。* 6,make文件介绍:Android NDK开发中,Android.mk文件是在使用NDK编译C代码时必须的文件,该文件描述了哪些C文件将被编译且指明了如何编译。
开始第一个NDK工程之旅:
第一步:在Eclipse中新建Android项目,我的第一个NDK项目就叫FirstNdk。
第二步:开始之前先介绍cmd环境下的javah命令,如图:
接下来我们进入cmd窗口,进行到项目所在目录。
执行javah -classpath bin/classes -d 项目包名+类名。如图
维埃里报错,提示找不到类文件,怎么办?
通常有两种解决方案:
1,找到我们电脑中SDK文件目录中的platforms下任意一个版本android.jar包,添加到环境变量中。
2,在上图的cmd命令中把android.jar的目录也写进去。如图:
可以看到运行成功了。
第三步:此时我们刷新项目,可以发现,项目中自动添加了jni文件目录,在此目录中新建first.c文件。接下来就开始代码之旅啦。
第四步:编写first.c文件代码,从未接触过C,视频学习+百度写的:
#include <stdio.h> #include <stdlib.h> #include <com_ldm_firstndk_MainActivity.h> JNIEXPORT jstring JNICALL Java_com_ldm_firstndk_MainActivity_getStringFromC(JNIEnv *env, jobject obj) { return (*env)->NewStringUTF(env,"My First JNI PROJECT!"); }第五步:从NDK工具包中的示例项目比如Hello-jni项目的jni目录下,把Android.mk文件和Application.mk文件复制到我们项目的jni目录下,做适当修改。我的Android.mk文件:
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := first LOCAL_SRC_FILES := first.c #指定c文件 include $(BUILD_SHARED_LIBRARY)
第七步:到止,我的第一个NDK项目就OK啦,运行工程如下: