目标

面向 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 演示示例应用程序的更多相关文章

  1. NDK安装 eclipse 不出现NDK目录问题

    android adt自带eclipse无法设置ndk路径 具体情况是 我在mac上搭建android环境 到android sdk官网下载r23版本的adt时自带的eclipse没有设置ndk路径的 ...

  2. android adt自带eclipse无法设置ndk路径(找不到NDK配置)

    分步阅读 到android sdk官网下载r23版本的adt时自带的eclipse没有设置ndk路径的地方,通过Install New Software 发现无法更新,那么如何解决这个问题呢? 方便他 ...

  3. android adt自带eclipse无法设置ndk路径

    android sdk官网下载r23版本的adt时自带的eclipse没有设置ndk路径的地方,通过Install New Software 发现无法更新,那么如何解决这个问题呢?     软件百度云 ...

  4. 【Android】Eclipse自动编译NDK/JNI的三种方法

    [Android]Eclipse自动编译NDK/JNI的三种方法 SkySeraph Sep. 18th  2014 Email:skyseraph00@163.com 更多精彩请直接访问SkySer ...

  5. Android SDK +Eclipse+ADT+CDT+NDK 开发环境在windows 7下的搭建

    Android SDK+Eclipse+ADT+CDT+NDK 开发环境在windows 7下的搭建 这几天一直在研究 Android SDK  C/C++平台的搭建,尽管以前有成功在Windows ...

  6. Android+NDK+CDT+eclipse+OPenGL ES编制和native调试

    周围环境: NDK版本号r8,eclipse和Android运用adt-bundle-windows-x86打包版本是更方便, 一.NDK汇集 1.源代码 NDK的examples文件夹中有Hello ...

  7. android -------- Eclipse下的NDK配置环境

    NDK 全称是Native Development Kit,是一个让开发人员在Android应用中嵌入使用本地代码编写的组件的工具集 原生开发工具包 (NDK) 是一组可让您在 Android 应用中 ...

  8. Eclipse连接VirtualBox中的Android x86

    Android x86 Alt+F1打开命令行,命令netcfg查看当前ip,记住,然后Alt+F7回界面. Eclipse-Window-Preferences-Android-DDMS-Use A ...

  9. NDK(6)eclipse下断点调试ndk代码

    Using the NDK Plugin 1. First set the path to SDK and NDK: Eclipse -> Window -> Preferences -& ...

随机推荐

  1. cocos2d-x 3.0 使用Sax解析xml文件(中国显示器问题解决)

    今天是个好日子.我以为事情可以变得,明天是个好日子.打开门儿春风... 恩,听着歌写文档生活就是这么享受. 今天曾经的邻居大神突然在qq上赞了我一下,这让我异常激动啊.. 这还要从前前前几天说起,那会 ...

  2. cocos2d/-x 用CCRenderTexture为一个CCLabelTTF创建阴影。

    游戏UI中为了使字体更加漂亮,通常需要为字体添加一个阴影.其实不用美工,程序就可以添加.先为CCLabelTTF创建一个CCRenderTexture: CCRenderTexture* CCLabe ...

  3. Face-landmarks-detection-benchmark 人脸特征定位网站汇总

    源地址:https://www.douban.com/note/525032729/   https://github.com/delphifirst/FaceXhttps://github.com/ ...

  4. Delphi数组复制(只能使用System单元的Move函数)

    const AA : arrary[..] ,,,,) var BB : arrary[..] of byte; begin BB := AA ; {这样是错误的} Move(AA,BB,sizeof ...

  5. 如何关闭android studio开发环境自动保存

    使用DW习惯了现在转到学习开发android,请问怎样关闭android studio的自动保存功能,然后按ctrl+s进行保存,因为有时候代码不想让其保存,他也自动保存了. File -> S ...

  6. 祝贺自己itpub和csdn双双荣获专家博客标题

    这是业界难以得到认同内的技能,记录下来.油...所有的钱,明天会更好.

  7. Access Violation at address 00000000.Read of address 00000000 解决办法

    是数组越标或没有初始化某个对象之类的问题,搂住细细检查一下代码, 使用指针前未做检查,而这个指针未初始化. 可能是new后没有delete,这样出现溢出的可能性比较大     检查代码或者跟踪试试 使 ...

  8. 【从0到1学Web前端】CSS伪类和伪元素

    1.CSS中的伪类 CSS 伪类用于向某些选择器加入特殊的效果. 语法: selector : pseudo-class {property: value} CSS 类也可与伪类搭配使用 select ...

  9. 7.数据本地化CCString,CCArray,CCDictionary,tinyxml2,写入UserDefault.xml文件,操作xml,解析xml

     数据本地化 A CCUserDefault 系统会在默认路径cocos2d-x-2.2.3\projects\Hello\proj.win32\Debug.win32下生成一个名为UserDef ...

  10. python语言学习8——字符串和编码

    Unicode编码 计算机只能处理数字,如果要处理文本,就必须把文本转化为数字才能处理 有许多编码标准,但是不同的编码标准有时候会混乱,所以Unicode应运而生 Unicode把所有语言统一到一套编 ...