将 Android* x86 NDK 供 Eclipse* 而移植 NDK 演示示例应用程序
目标
面向 Eclipse (ADT) 的 Android 插件如今支持基于 NDK 的应用开发。 其可自己主动生成项目和构件文件以及代码存根。并可集成到整个 Android 应用开发中(构建原生库、将库拷贝到项目内的对应 JNI 目录、将应用打包以及生成带有 NDK 代码的终于 APK)。 本文将讨论怎样配置 Eclipse 以利用该功能,并示范移植 NDK 应用的演示样例。
配置 Eclipse ADT 插件以配合 NDK 使用
必须先配置 Eclipse ADT 插件指向 NDK 安装路径的位置后,方可使用该新功能。 首先务必更新 Eclipse 中的 ADT 插件以获得最新更改,并从以下的站点下载最新的 NDK:
http://developer.android.com/tools/sdk/ndk/index.html
在 Eclipse 中。打开“窗体”->“首选项”->Android->NDK。
例如以下所看到的输入 NDK 安装路径(在此我们假定您已将 NDK 下载至了 Windows* 上的 c:\sw\android-ndk),单击“应用”,然后单击“确定”。
图 1: Eclipse Android ADT 插件中的 NDK 配置
我们如今应当在 Eclipse ADT 中启用和激活与 NDK 相关的功能。
让我们打开当中一个 NDK JNI 演示样例并进行构建。
打开 Eclipse 中的 hello-jni 演示样例 NDK 应用,并将 NDK build 支持加入至项目
要在 Eclipse 中构建 NDK JNI 原生演示样例,我们须要让 Eclipse ADT 了解该演示样例使用原生/NDK 代码。
让我们先将 HelloJni 演示样例导入 eclipse。
在 Eclipse 中打开“文件”->“新建”->“项目”-> Android ->“来自现有代码的 Android 项目”。 在下个屏幕中,输入 hello-jni 演示样例项目(在 NDK 安装目录中提供)的路径,并选择“拷贝到工作区”复选框。再单击“完毕”。 使用来自您 NDK 安装目录的 HelloJni 路径替代根目录路径。
图 2: 将演示样例 HelloJni 项目导入 Eclipse
因为 x86 Android NDK 支持 Gingerbread* 及更高的 Android 平台,我们要确保更新应用描写叙述文件里的最小和目标 SDK 配置。 在 Eclipse 中打开 HelloJni 演示样例下的 AndroidManifest.xml。单击 AndroidManifest 编辑器中的“使用 SDK”并检查最小 SDK 是否设置为 10 (API 10)。
图 3: Eclipse 中的描写叙述文件编辑器
我们如今已准备好向 Eclipse 中的该项目加入 NDK build 支持。 在 Eclipse 中。右键单击 hello-jni 项目 (com.example.hellojni.HelloJni) -> Android 工具 -> Add Native 支持 -> 完毕。
图 4: 将 NDK 支持加入至 Eclipse 中的项目
这样将使用和 NDK 构件相关的设置更新项目配置。 在我们又一次构建项目时。它将先编译并构建 NDK 代码,将构建的库拷贝到对应的项目目录,然后继续常规的 APK 构建流程。
在模拟器中构建并执行应用
如今继续构建应用,并在 Android 模拟器中执行它。
我们假定已经在基于 HAXM 的 Android 模拟器上执行 Gingerbread x86 AVD。
在 Eclipse 中,右键单击 hello-jni 项目 (com.example.hellojni.HelloJni) -> 执行为 -> Android 应用。 Eclipse 应当自己主动重建项目并尝试在模拟器上部署/执行 APK。
可是在模拟器执行时我们看到了以下的错误消息,这是由于默认的 NDK 项目设置不支持 x86。
图 5: 在模拟器中执行演示样例应用
在 Eclipse 中。您可看到 logcat 显示错误“无法载入 hello-jni”
图 6: Logcat 显示无法载入原生库
默认情况下,NDK build 不会自己主动为 x86 ABI 进行构建。
我们将须要创建构件文件“Application.mk”来明白指定我们的构建目标,或将命令行參数传入 NDK build 命令。
移植应用以使用 x86 ABI 和 NDK build 文件
我们可改动项目以支持 x86 ABI。 在 Eclipse 中,右键单击 hello-jni 项目中的“jni”目录,然后选择“新建”->“文件”-> 将“Application.mk”作为文件名称输入,然后单击“完毕”。
图 7: 将新的 NDK build 文件“Application.mk”加入至演示样例项目
编辑文件“Application.mk”。例如以下所看到的加入行“APP_ABI := all”。然后保存文件。
图 8: 编辑 Application.mk 文件以将“all”架构作为目标
构建应用,验证它是否构建 x86 库,并在 x86 模拟器中測试应用
当前在我们又一次构建应用时。其将为 NDK 中全部支持的 ABI 进行构建。 右键单击 Eclipse -> 执行为 -> Android 应用中的“hello-jni”。 Eclipse 将自己主动调用 NDK build 并生成全部原生库。
您可例如以下所看到的在库目录下验证它。
图 9: Eclipse 项目资源管理器显示生成的原生库
Eclipse 将在模拟器中部署应用。
此时我们应当会看到应用成功执行,如该截屏中所看到的:
图 10: 演示样例应用成功地在 x86 Android 模拟器内执行
我们希望该文章可帮助您了解怎样配置 Eclipse ADT 以在 NDK 代码开发中使用它,以及怎样使用 NDK build 文件“Application.mk”来为所需的目标 ABI 进行构建。
相关文章与资源:
声明
本文件里包含关于英特尔产品的信息。
本文件不构成对不论什么知识产权的授权,包含明示的、暗示的,也不管是基于禁止反言的原则或其它。
英特尔不承担不论什么其它责任。英特尔在此作出免责声明:本文件不构成英特尔关于其产品的使用和/或销售的不论什么明示或暗示的保证,包含不就其产品的(i)对某一特定用途的适用性、(ii)适销性以及(iii)对不论什么专利、版权或其它知识产权的侵害的承担不论什么责任或作出不论什么担保。
本文件里包含关于英特尔产品的信息。 本文件不构成对不论什么知识产权的授权,包含明示的、暗示的,也不管是基于禁止反言的原则或其它。 英特尔不承担不论什么其它责任。
英特尔在此作出免责声明:本文件不构成英特尔关于其产品的使用和/或销售的不论什么明示或暗示的保证,包含不就其产品的(i)对某一特定用途的适用性、(ii)适销性以及(iii)对不论什么专利、版权或其它知识产权的侵害的承担不论什么责任或作出不论什么担保。
英特尔有权随时更改产品的规格和描写叙述。恕不另行通知。 设计者不应信赖不论什么英特产品所不具有的特性。设计者亦不应信赖不论什么标有保留权利摂或没有定义摂说明或特性描写叙述。 对此,英特尔保留将来对其进行定义的权利。同一时候,英特尔不应为因其日后更改该等说明或特性描写叙述而产生的冲突和不相容承担不论什么责任。 此处提供的信息可随时更改,恕不另行通知。 请勿依据本文件提供的信息完毕一项产品设计。
本文件所描写叙述的产品可能包括使其与宣称的规格不符的设计缺陷或失误。 这些缺陷或失误已收录于勘误表中,可索取获得。
在发出订单之前,请联系当地的英特尔营业部或分销商以获取最新的产品规格。
如欲获得本文涉及的带编号文档的副本或其它英特尔文献。可致电 1-800-548-4725。或訪问:http://www.intel.com/design/literature.htm
在性能检測过程中涉及的软件及其性能仅仅有在英特尔微处理器的架构下方能得到优化。 诸如SYSmark和MobileMark等測试均系基于特定计算机系统、硬件、软件、操作系统及功能。 上述不论什么要素的变动都有可能导致測试结果的变化。
请參考其它信息及性能測试(包含结合其它产品使用时的执行性能)以对目标产品进行全面评估。
对本文件里包括的软件源码的提供均根据相关软件许可而做出。不论什么对该等源码的使用和复制均应依照相关软件许可的条款运行。
英特尔和 Intel 标识是英特尔在美国和/或其它国家的商标。
英特尔公司 © 2012 年版权全部。
全部权保留。
* 其它的名称和品牌可能是其它全部者的资产。
优化声明
版权声明:本文博主原创文章,博客,未经同意不得转载。
将 Android* x86 NDK 供 Eclipse* 而移植 NDK 演示示例应用程序的更多相关文章
- NDK安装 eclipse 不出现NDK目录问题
android adt自带eclipse无法设置ndk路径 具体情况是 我在mac上搭建android环境 到android sdk官网下载r23版本的adt时自带的eclipse没有设置ndk路径的 ...
- android adt自带eclipse无法设置ndk路径(找不到NDK配置)
分步阅读 到android sdk官网下载r23版本的adt时自带的eclipse没有设置ndk路径的地方,通过Install New Software 发现无法更新,那么如何解决这个问题呢? 方便他 ...
- android adt自带eclipse无法设置ndk路径
android sdk官网下载r23版本的adt时自带的eclipse没有设置ndk路径的地方,通过Install New Software 发现无法更新,那么如何解决这个问题呢? 软件百度云 ...
- 【Android】Eclipse自动编译NDK/JNI的三种方法
[Android]Eclipse自动编译NDK/JNI的三种方法 SkySeraph Sep. 18th 2014 Email:skyseraph00@163.com 更多精彩请直接访问SkySer ...
- Android SDK +Eclipse+ADT+CDT+NDK 开发环境在windows 7下的搭建
Android SDK+Eclipse+ADT+CDT+NDK 开发环境在windows 7下的搭建 这几天一直在研究 Android SDK C/C++平台的搭建,尽管以前有成功在Windows ...
- Android+NDK+CDT+eclipse+OPenGL ES编制和native调试
周围环境: NDK版本号r8,eclipse和Android运用adt-bundle-windows-x86打包版本是更方便, 一.NDK汇集 1.源代码 NDK的examples文件夹中有Hello ...
- android -------- Eclipse下的NDK配置环境
NDK 全称是Native Development Kit,是一个让开发人员在Android应用中嵌入使用本地代码编写的组件的工具集 原生开发工具包 (NDK) 是一组可让您在 Android 应用中 ...
- Eclipse连接VirtualBox中的Android x86
Android x86 Alt+F1打开命令行,命令netcfg查看当前ip,记住,然后Alt+F7回界面. Eclipse-Window-Preferences-Android-DDMS-Use A ...
- NDK(6)eclipse下断点调试ndk代码
Using the NDK Plugin 1. First set the path to SDK and NDK: Eclipse -> Window -> Preferences -& ...
随机推荐
- CloseHandle(),TerminateThread(),ExitThread()的差别
线程的handle用处: 线程的handle是指向"线程的内核对象"的,而不是指向线程本身.每一个内核对象仅仅是内核分配的一个内存块,而且仅仅能由内核訪问.该内存块是一种数据结构, ...
- 网络编程API-上 (基本API)
htons.ntohs.htonl和ntohl函数 Linux提供了4个函数来完毕主机字节序和网络字节序之间的转换 #include <netinet/in.h> uint16_t hto ...
- mfc 导出数据保存成excel和txt格式
最近做了一些东西,项目到了收尾的工作.不过这次我没有参与到控件机器的功能的那一部分,都是主管自己写的.不过,所有的控件重写都是由我来做的.还有数据库这一方面是我和主管共同完成的.不过还不错,主管写一部 ...
- Go的String转码包
https://github.com/qiniu/iconv https://github.com/djimenez/iconv-go 这是与go不相干的转码包:https://github.com/ ...
- Scriptcase价格调整(五折销售)
芬兰诺基亚!芬兰诺基亚!最大手机公司倒闭了!王八蛋老板埃洛普,吃喝嫖赌欠下了3.5个亿,带着他的小姨子跑了!我们没有办法,拿着手机抵工资!原价都是一千多.两千多.三千多的手机,统统二百块!统统二百块! ...
- javascritp封装的类似java HashMap的类
function Map(){ this.init(); }; //map的大小 Map.prototype.size = function(){ return this._size; }; //将数 ...
- android编译自己 内置的jar做法
1.首先 android.mk LOCAL_PATH := $(call my-dir) # ===================================================== ...
- poj 2166 构造
一个看了解题报告才能想明白的题目,第一点比较容易想明白,就是每次把1交换到堆顶之后如果能够换到最后面的位置那么一定是最优的,但是怎么实现这个没有想明白. 题解的那种构建方法,及从2开始插入,是可以保证 ...
- 设置SVN忽略文件和文件夹(文件夹)
在多数项目中你总会有文件和文件夹不须要进行版本号控制.这可能包含一些由编译器生成的文件,*.obj,*.lst,也许是一个用于存放可运行程序的输出文件夹.仅仅要你提交改动,TortoiseSVN 就会 ...
- GitHub基本操作(转)
一.上传代码到仓库 步骤一:创建本地仓库,如下: 创建结果: 步骤二:发布自己创建的仓库,如下: 发布完显示如下: 步骤三:向自己发布仓库上传代码,如下: 首先将代码复制到本地仓库,如下: 复制完,显 ...