利用NDK编写helloworld
一、创建工程
工程的创建参数如上图所示,具体每个参数的含义在第二章《利用SDK编写helloworld》中有介绍,这里多了个参数,就是设置了SDK Version其实这个参数是不用设置的,因为我们选择的sdk包Android2.2实际上就已经表明了我们使用的sdk version是8了。
得到的工程文件如下图所示。
二、使用NDK创建一个库
其实NDK的编写时可以在window环境进行的,而不需要必须进Cygwin中使用vi编写。
这里我们在window下进入NDK目录的apps中。
我们看到这里有几个NDK的demo程序,这里我们为自己需要编写的NDK程序创建一个目录,这里我使用的是hm。
进入hm目录,我们创建一个Application.mk文件。
并加入如下内容
APP_PROJECT_PATH := $(call my-dir)
APP_MODULES := my_jni
这里最好使用EDET PLUS ,UE等专门的编辑工具,而不要是用windows自带的记事本。
其中APP_PROJECT_PATH表示我们android工程的目录,这里写的是$(call my-dir)也就表示当前目录,不过可以根据自己的需求更改,由于我的工程是创建在E盘的,所以其实应该将该目录指向E盘,不过为了保证我们第一个程序较为简单,所以就直接使用当前路径了。
APP_MODULES表示我们要编译的库的名称。这里使用的是my_jni.
这里之后就是我们项目相关的内容了,在工程路径,也就是刚才APP_PROJECT_PATH中所设置的路径中,创建一个jni的文件夹(这个名称是固定的,不可更改)。
进入该文件夹后我们创建两个文件。
Android.mk, my_jni.c。
这里Android.mk的主要作用是配置makefile的编译选项,比如要加载的库啊,我们源码的文件啊之类的,这里我们的Android.mk的内容如下所示
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := my_jni
LOCAL_SRC_FILES := my_jni.c
include $(BUILD_SHARED_LIBRARY)
其中LOCAL_MODULE表示我们模块的名称,LOCAL_SRC_FILES表示我们的源文件。
由于这部分涉及到一些makefile的内容,非linux程序员可能有些陌生,不过今后的内容应该会更详细的说明的。