Android NDK开发环境搭建记录

Android NDK开发环境搭建记录

导言

由于项目需要使用NDK开发,所以用这个博客来作为NDK记录,顺便试一试MarkDown

环境

系统:windows 7
IDE:eclipse
工具/插件:android-ndk-r10d

开始搭建

1. 下载

android-ndk-r10d:google目前最新的ndk包是r10d,使用这个包可以免去配置cygwin(一个在windows中也能使用linux命令的工具)的烦恼,建议百度自行下载(google封得太厉害);
com.android.ide.eclipse.ndk.xxx(可选):从google下载的最新的ADT(v23),有可能会没有自带的NDK插件,这个时候就需要主动下载这个插件,并且添加到eclipse\plugins文件夹内,重启eclipse


2. 安装

(1)配置NDK路径:把android-ndk-r10d解压到想要的路径后,在eclipse->Windows->Preferences->Android->NDK中设置成NDK包解压的路径
(2)配置环境变量:新建系统环境变量ANDROID_NDK_ROOT(名字随意),值为NDK包解压的路径;然后再PATH变量值前,添加 %ANDROID_NDK_ROOT%;
(3)验证安装结果:在cmd中输入ndk-build -version,看是否输出ndk版本


使用NDK

1.编译hello-jni.so

在google提供的NDK包中,包含了一个简单易懂的NDK操作例子hello-jni,其路径在[[NDK-Path]\samples\hello-jni。
打开cmd并切换路径到[NDK-Path]\samples\hello-jni,此时直接执行“ndk-build.cmd”,即会自动按照hello-jni内的Android.mk和Application.mk文件进行编译,并生成.so文件到libs文件夹内
这里写图片描述

在上面的例子中,我们可以看出NDK也是使用makefile组织编译任务的,“.so”文件直接又“.c/.cpp”文件(当然也包括C/C++的头文件“.h”)。但是独立使用NDK提供的工具在命令行里面执行编译任务,对于不熟悉命令行操作的朋友来讲确实比较麻烦,下面介绍怎样使用eclipse+NDK的方法实现快速开发。


2.在eclipse中使用NDK!

(1)新建Android Application Project,NDK-Test
这里写图片描述


(2)在工程中创建jni文件夹,并创建test.cpp,具体在NDK开发要注意的源码问题这里就不展开叙述了。拷贝hello-jni内的Android.mkApplication.mk到jni目录。根据工程中的源码,修改为自己所需的.mk文件。

文件说明
Android.mk工程的主要的配置makefile文件,定义了ndk-build指令如何编译我们的C/C++源码
Application.mk定义ndk-build针对何种CPU架构编译源码

这里写图片描述


(3)打开[工程]->Properties->Builders->New->Program
这里写图片描述

自定义我们编译NDKTest工程用的Builder并确认
这里写图片描述

这里写图片描述

属性说明
Location编译该工程的脚本或工具的路径,这里我们使用ndk-build.cmd的路径
Working Directory该Builder作用的工程目录

(4)上述完成后,基本就可以正常的做native开发了。


技巧1:利用javah生成java文件中native方法的头文件

利用NDK做native开发时,我们总需要在根据Java文件中对native方法的声明,来编写具体.h或.c/.cpp文件中的方法的名字(必须遵从NDK方法命名规则),下面利用javah可以快速根据java文件的声明情况生成相应的.h文件

(1)如图所示点击“External Tools Configurations”配置专用的Builder
这里写图片描述

(2)新建Builder并配置如下
这里写图片描述

属性说明
Location编译该工程的脚本或工具的路径,这里我们使用javah.exe的路径
Working Directory该Builder作用的工程目录,这里我们只针对工程的src文件夹作为javah构建.h文件的目录(因为.java文件都在src文件夹内)
Arguments编译工具的配置参数,这里写“-d ${project_loc}\jni -jni ${java_type_name}”。

-d ${project_loc}\jni :表示.h文件生成的目标路径
-jni ${java_type_name}:表示.h文件方法声明的规则

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值