文章

Android NDK入门之FirstJNI:Eclipse篇

文章目录

工欲善其事必先利其器

本文设计软件信息如下:

一、工具简介

操作系统     :Windows 7

Eclipse 版本:Luna Service Release 2 (4.4.2)

NDK   版本:android-ndk-r12b-windows-x86_64 (Native Development Kit)

ADT 版本  :Version: 23.0.4.1468518 (Android Development Toolkit)

二、NDK配置

注意,本文是基于Eclipse+ADT环境配置好了之后的教程哈,如果没有配置号ADT,请移步到http://www.125la.com/android.html 中找到“android-studio中文”网站,里面有对应软件下载。

哈哈 插播一则广告:<125啦·读书导航 - 为每个阅读者创造舞台>是我在维护的读书导航网站,欢迎使用。

如果你没有下载NDK,可以看看这篇文章《Android NDK 部分版本下载

原归正传,我们继续。

0、打开Eclipse新建一个Android 工程

我这创建一个FirstJNI项目(略)

1、NDK的配置系统环境

PS:这一步可以忽略,不过后续我们需要使用,现在有空可以花点时间先配置。

点击计算机右键属性-->高级系统设置-->环境变量,如图

然后在用户变量path和系统变量中增加如下内容:
系统变量:我们新定义一个变量NDK_ROOT,值:D:\android\android-ndk-r12b-windows-x86_64 (这个是你NDK目录路径)
用户变量:我们只需要修改path的值,在其最后新增:%NDK_ROOT% (记住,各个值直接是使用英文输入的";"进行分割的)

PS:红色字体是新增或需要注意的部分。

2、配置Eclipse的NDK环境

点击Eclipse的Window-->Preferences,进入如图界面,然后导入NDK路径:D:\android\android-ndk-r12b-windows-x86_64\build

3、添加NDK支持

选中Android工程“FirstJNI”右键属性-->Android Tools-->Add Native Support-->在lib输入行中输入“FirstJNI”(这个你可以随便定义),点击“Finish”键后,会自动在“FirstJNI”项目中新增如下目录:

jni、obj等,重点是jni目录,其中新增了两个文件:Android.mkFirstJNI.cpp

如果在Add Android Native Support界面中无法按“Finish”键,并有“NDK location not valid in preferences.”提示时,这说明是上一步(2、配置Eclipse的NDK环境)没有配置好,因此要重新按照上面步骤配置一下即可。

4、创建native 方法

在MainActivity.java中新增如下代码

	private native String sayHello(); //定义native方法
	
	static{
		System.loadLibrary("FirstJNI");//加载FirstJNI.so库
	}
5、编辑FirstJNI.cpp文件

在编辑FirstJNI.cpp前,我们先把后缀“cpp”改为“c”。

为什么呢?我尝试过不改,但发现有些函数解析不了,因此按照网上很多教程方法,就是把“cpp”改为“c”。(这个后续研究一下)

除了要把“FirstJNI.cpp”改为“FirstJNI.c”之外,还需要把Android.mk文件的内容改为如下(红色字体):

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := FirstJNI
LOCAL_SRC_FILES := <span style="color: #ff0000;">FirstJNI.c</span>

include $(BUILD_SHARED_LIBRARY)

上面改好了我们就修改“FirstJNI.c”的内容,添加内容(红色字体)如下:

#include <jni.h>

<span style="color: #ff0000;">jstring Java_com_la_firstjni_MainActivity_sayHello(JNIEnv* env, jobject thiz) {

	return (*env)->NewStringUTF(env, "您好啊,125啦读书导航");
}</span>

恩恩,这是个简单的方法。不过,聪明的你会发现此时Eclipse提示有错误“Method 'NewStringUTF' could not be resolved”、“Unresolved inclusion: <jni.h>”、“Type 'JNIEnv' could not be resolved”

不急,因为jni等相关的库文件没有导入,我们继续。

6、导入NDK中的库文件

在导入库前,我们先要看看我们创建的项目版本信息。在“FirstJNI”工程中找到“project.properties”文件并打开,有如下内容:

# Project target.
<span style="color: #ff0000;">target=android-17
</span>

注意看红色字体的内容,此信息告诉我们“FirstJNI”工程的target版本是:android-17

因此我们要在“FirstJNI”工程中导入对应的头文件。

选择“FirstJNI”工程右键属性后显示如图(C/C++ General-->Paths and Synbols-->Add-->File system),最后找到NDK中的include文件,点击确认保存即可。

比如我们的是:D:\android\android-ndk-r12b-windows-x86_64\platforms\android-17\arch-arm\usr\include

顺利导入后上面错误提示就全部消失啦。

7、编译apk运行即可

经过上面步骤,我这里可以正常运行啦。

0 0
发表评论