Android ndk r4b开发环境搭建

简介:

资源准备
说明:本文以Mac系统为例,所以准备的软件都需要是适合Mac版本的.
Android SDK:android-sdk-mac_86
Android NDK: android-ndk-r4b-darwin-x86
Eclipse
ADT
CDT
ANT
搭建Android SDK开发环境
Android SDK还发环境搭建步骤:
1:Jdk安装,要求1.5以上.一般的Mac OS中已经预装了jdk,我的是jdk 1.6.用"java -version"在terminal可以查看.
2:eclipse IDE安装. 需要去Eclipse官网下载,我下载的是eclipse 3.5.2.解压到合适的路径,不需要编译安装,直接运行目录下的eclipse.app文件就可以启动eclipse.
3:android sdk安装. 到Android.同eclipse一样,只需要解压到合适目录.同时需要将该目录下的tools路径加到PATH中.编辑~/.bash_profile, 添加:PATH=${PATH}:/{your-android-sdk}/tools.
4: 安装Android Developer Tools. 打开Eclipse,点击Help菜单,找到Install New Sofeware,在Add Site中添加一个location为:
http://dl-ssl.google.com/android/eclipse/,然后会出现Android DDMS,和Android Development Tools,选择并Install.重启之后可以选择”Eclipse->偏好设置”,然后选择Android项来指定Android SDK的安装目录.如下图所示.

5: 开启terminal,使用"android list targets"发现没有可以sdk target.需要在eclipse的window菜单里面打开 Android SDK And AVD Manager窗口,找到avilable packages,选中相关的packages.如下图所示.

6:等待下载.完成之后可以在Install packages中找到自己已经安装的包.如下图所示.

7:使用"android create avd --name sdk_2_2_version  --target 8",创建avd.创建之后即可在”Virtual Devices”中找到我们已经创建的AVD,如下图所示.

现在可以编写HelloWorld来测试环境了,这里笔者在搭建SDK开发环境时将Eclipse和android sdk都放置在了”/Developer/Android/”目录下,如下图所示.

搭建Android ndk开发环境
从上面的图片大家可以看到,我们实际上也将Android NDK安装到了同一个目录下,NDK的安装很简单,就是将下载的包进行解压到指定位置即可,解压之后我们一般需要配置环境变量,这里我们将环境变量的配置放在最后一起来配置.
设置环境变量
运行命令” pico .bash_profile”来打开或创建.bash_profile文件,然后输入如下图的代码.

安”control+x”退出,并输入”Y”表示确认保存,然后退出(必须退出重新打开才行),其中我们将sdk的tools目录和ndk的安装目录都加入了环境变量,方便我们使用,同时设置了ANDROID_NDK_ROOT和ANDROID_SDK_ROOT目录.
到这里我们就完成了NDK的环境搭建,android ndk r4开始我们并不需要使用” build/host-setup.sh”命令了,接下来我们将介绍如何使用ndk来编译.这里需要注意的是对于ndk提供的例子没有放置在apps目录下面了,而是放置在samples中,为了兼容,同时也支持将项目文件放置在apps目录下面.下面我们来看如何编译,运行和调式.
编译Hello-Jni工程
进入ndk下面的” samples/hello-jni/”目录,然后使用命令” ndk-build”即开始编译,出现如下图所示,则表示成功.如果不成功,可能是环境没有设置正确,请检查并重新设置.

运行Hello-Jni项目
下面我们首先生成apk文件,生成apk文件需要使用ant,由于Mac系统预装了ant所以我们少一步,没有安装的安装一下便可,注意安装之后还是要将ant目录下买了的bin目录加入环境变量才行.
现在使用” cd ../”命令返回hello-jni目录的上一个目录,然后使用” android update project --path hello-jni”命令来更新hello-jni工程,就是生成一个build.xml文件来编译生成apk文件.在更新了工程之后,需要进入工程的根目录,使用cd hello-jni命令即可,下面进入最关键的一步,编译apk文件,使用”ant debug”命令即可,如果出现如图所示,则表示编译成功.

现在你可以在” samples/hello-jni/bin”中找到一个生成的apk文件,现在可以链接手机或者模拟器来进行测试了.
调式Hello-jni工程
在android ndk r4开始我们可以使用gdb来对jni代码进行单步调试了,关于gdb调试我们就不多说了,网上去搜索吧,这里我们看一下如何来调试.
进入” samples/hello-jni/”目录,然后执行”ndk-gdb”命令,这时,你的手机或者模拟器的hello-jni工程是否已经启动了,这时终端也进入了gdb调试界面,如下图所示.,注意要在xml中设置debug为true才能进行调试哦.

在Eclipse中集成NDK开发
因为大多数人在些代码时可能使用的是记事本,,有好的IDE为什么不用呢?那这里我们就使用Eclipse来编写ndk程序,在开始之前我们需要进行一些必要的配置.
1:安装CDT,使得Eclipse具有编辑C++程序的功能.
2:我们推荐大家可以安装anyedit插件 
http://andrei.gmxhome.de/anyedit/下载并导入eclipse中.当然这不是必须的,只是方便我们在Eclipse中编辑各种类型的文件.
3:新建一个ndk的工程,这里我们就使用hello-jni为例来演示即可,就不在单独新建了,将hello-jni导入到Eclipse中.然后按照如下步骤操作:
右击项目,选择“properties”
在左边的列表中选择“Builders”
在右侧,点击“New…”按钮
在列表框,选择“Program”作为配置类型;点击“OK”按钮,进入下一个配置对话框。
命名name为“NDK Builder”
选择Location为“/bin/bash”,如果是windows使用cygwin则填写” c:\cygwin\bin\bash.exe”其中表明cygwin安装于c:\cygwin中,这个路径可以根据自己的情况更改.
 “Working Directory”为“/bin”,同样如果在windows上使用cygwin则填写” c:\cygwin\bin”.
“Arguments”为:
--login -c "cd $ANDROID_NDK_ROOT/samples/hello-jni && ndk-build"
确保在login前有两个连接号,-c后面的引号。 ANDROID_NDK_ROOT为NDK的安装路径….整个界面操作之后如下图所示.

接着打开“refresh”的tab面板:
选中“Refresh resources upon completion”
选择“Specific resources”
点击“Specify resources”按钮,选择你项目的lib目录
选中“Recursively include sub-folders”
操作完成之后如下图所示.

接着打开“Build Options”的tab面板:
选中“Allocate Console”
选中“Launch in background”
选中“Run the builder After a Clean”
选中“Run the builder During manual builds”
选中“Run the builder During auto builds”
选中“Specify working set of relevant resources”
点击“Specify Resources”按钮,选择你项目的JNI目录,并包含所有的文件。
完成之后如下图所示.

点击“OK”按钮。完成配置,这时当我们在Ecisplse中改动一下C++代码,Eclipse都回自动调用ndk来编译,并在控制台输出编译信息,如下图所示.然后自动更新生成的so文件.

这里处理都不是必须的,只是为了我们方便开发而做的.当然为了项目需求可能还会有更好的方法,随着项目的进度,我们会更新一些开发中遇到的问题.先写到这里,谢谢大家支持!
其实要是在ndk中开发opengl es程序也可以直接在windows中使用VC之类的工具先开发,完成之后再用ndk来编译,这样调试就方便多了。




本文转自 yarin 51CTO博客,原文链接:http://blog.51cto.com/yarin/382109,如需转载请自行联系原作者

相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
2月前
|
IDE Android开发 iOS开发
深入解析Android与iOS的系统架构及开发环境差异
本文旨在探讨Android和iOS两大主流移动操作系统在系统架构、开发环境和用户体验方面的显著差异。通过对比分析,我们将揭示这两种系统在设计理念、技术实现以及市场策略上的不同路径,帮助开发者更好地理解其特点,从而做出更合适的开发决策。
159 2
|
2月前
|
开发工具 Android开发 Swift
安卓与iOS开发环境对比分析
在移动应用开发的广阔舞台上,安卓和iOS这两大操作系统无疑是主角。它们各自拥有独特的特点和优势,为开发者提供了不同的开发环境和工具。本文将深入浅出地探讨安卓和iOS开发环境的主要差异,包括开发工具、编程语言、用户界面设计、性能优化以及市场覆盖等方面,旨在帮助初学者更好地理解两大平台的开发特点,并为他们选择合适的开发路径提供参考。通过比较分析,我们将揭示不同环境下的开发实践,以及如何根据项目需求和目标受众来选择最合适的开发平台。
49 2
|
1月前
|
开发工具 Android开发 iOS开发
深入解析安卓与iOS开发环境的优劣
【10月更文挑战第4天】 本文将深入探讨安卓和iOS两大主流移动操作系统的开发环境,从技术架构、开发工具、用户体验等方面进行详细比较。通过分析各自的优势和不足,帮助开发者更好地理解这两个平台的异同,从而为项目选择最合适的开发平台提供参考。
23 3
|
1月前
|
编译器 Android开发
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
|
1月前
|
安全 Android开发 数据安全/隐私保护
探索安卓与iOS的安全性对比:哪个更适合企业环境?
在数字化时代,移动设备已成为企业日常运营不可或缺的一部分。选择合适的操作系统对于保障企业数据安全至关重要。本文深入分析了Android和iOS两大主流操作系统的安全性,从系统架构、安全功能、应用生态及更新频率四个维度进行全面比较,旨在为企业提供一个清晰的决策依据,帮助企业在Android的开放性与iOS的封闭性之间找到最适合自身需求的平衡点。
57 6
|
1月前
|
开发工具 Android开发 开发者
Android开发环境搭建
如何搭建Android开发环境,包括下载和安装Android Studio、配置SDK、创建新的Android工程项目等。
71 0
Android开发环境搭建
|
2月前
|
Dart 开发工具 Android开发
在 Android 系统上搭建 Flutter 环境的具体步骤是什么?
在 Android 系统上搭建 Flutter 环境的具体步骤是什么?
|
1月前
|
开发工具 Android开发 Swift
安卓与iOS开发环境的差异性分析
【10月更文挑战第8天】 本文旨在探讨Android和iOS两大移动操作系统在开发环境上的不同,包括开发语言、工具、平台特性等方面。通过对这些差异性的分析,帮助开发者更好地理解两大平台,以便在项目开发中做出更合适的技术选择。
|
2月前
|
Java Android开发 C++
🚀Android NDK开发实战!Java与C++混合编程,打造极致性能体验!📊
在Android应用开发中,追求卓越性能是不变的主题。本文介绍如何利用Android NDK(Native Development Kit)结合Java与C++进行混合编程,提升应用性能。从环境搭建到JNI接口设计,再到实战示例,全面展示NDK的优势与应用技巧,助你打造高性能应用。通过具体案例,如计算斐波那契数列,详细讲解Java与C++的协作流程,帮助开发者掌握NDK开发精髓,实现高效计算与硬件交互。
129 1
|
1月前
|
开发工具 Android开发 iOS开发
安卓与iOS开发环境深度对比
【10月更文挑战第1天】本文旨在探讨和分析安卓(Android)与苹果(iOS)两大主流移动操作系统在应用开发环境上的不同点。通过比较它们的开发工具、语言、用户体验设计、市场策略及生态系统,本文将为开发者提供一份详尽的参考指南,帮助他们做出更合适的开发平台选择。此外,文章还将探讨两大平台未来的发展趋势,以及这些趋势可能对开发者和用户产生的影响。
48 0