基于 Android NDK 的学习之旅-----环境搭建

工欲善其事 必先利其器 , 以下介绍下 Eclipse SDK NDK Cygwin CDT 集成开发环境的搭建。

1、Android 开发环境搭建

Android开发环境搭建不是重点,相信看此文章的非常多人都已经搭建成功,这里随便概述性的说说。

1)      下载 JDK

2)      下载 Eclipse

3)      下载 Android SDK

4)      启动Eclipse , 安装 ADT

2、下载安装Android NDK

NDK下载戳这里: https://dl.google.com/android/ndk/android-ndk-r9d-windows-x86.zip

3、下载安装cygwin

因为NDK编译代码时必需要用到make和gcc,所以你必须先搭建一个linux环境。 cygwin是一个在windows平台上执行的unix模拟环境,它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,很实用。

通过它,你就能够在不安装linux的情况下使用NDK来编译C、C++代码了。以下我们一步一步的安装cygwin吧。

(安装的时候忘记截图了)

首先。你得先跑到http://www.cygwin.com下载setup.exe

1、 然后双击执行吧,执行后你将看到安装向导界面:

2、  点击下一步

此时让你选择安装方式:

1)Install from Internet:直接从Internet上下载并马上安装(安装完毕后,下载好的安装文件并不会被                   删除。而是仍然被保留。以便下次再安装)。

2)Download Without Installing:仅仅是将安装文件下载到本地。但临时不安装。

3)Install from Local Directory:不下载安装文件,直接从本地某个含有安装文件的文件夹进行安装。

3、选择第一项,然后点击下一步:

4、选择要安装的文件夹,注意,最好不要放到有中文和空格的文件夹里,似乎会造成安装出问题,其他选项不用变。                  之后点下一步:

5、上一步是选择安装cygwin的文件夹,这个是选择你下载的安装包所在的文件夹,默认是你执行setup.exe的目                      录。直接点下一步就能够:

6、此时你共同拥有三种连接方式选择:

1) Direct Connection:直接连接。

2) Use IE5 Settings:使用IE的连接參数设置进行连接。

3) Use HTTP/FTP Proxy:使用HTTP或FTP代理server进行连接(须要输入server地址、port号)。

用户可依据自己的网络连接的实情情况进行选择,一般正常情况下,均选择第一种,也就是直接连接方式。然后               再点击“下一步”,

7、 这是选择要下载的网站,我用的是http://mirrors.kernel.org,速度感觉还挺快。选择后点下一步

8、 此时会下载载入安装包列表

9、Search是可以输入你要下载的包的名称。可以高速筛选出你要下载的包。

那四个单选button是选择下边树的样式,默认即可,不用动。View默认是Category,建议改成full显示所有包再查,省的一些包被隐藏掉。左下角那个复选框是是否隐藏过期包。默认打钩。不用管它即可。下边開始下载我们要安装的包吧。为了避免所有下载,这里列出了后面开发NDK用得着的包:autoconf2.1、automake1.10、binutils、gcc-core、gcc- g++、gcc4-core、gcc4-g++、gdb、pcre、pcre-devel、gawk、make共12个包

10、  然后開始选择安装这些包吧。点skip。把它变成数字版本号格式,要确保Bin项变成叉号,而Src项是源代码,这个就不是必需选了。

11、  以下測试一下cygwin是不是已经安装好了。

执行cygwin,在弹出的命令行窗体输入:cygcheck -c cygwin命令,会打印出当前cygwin的版本号和执行状       态,假设status是ok的话。则cygwin执行正常。

然后依次输入gcc –version,g++ --version,make –version,gdb –version进行測试(或,输入make -v 和 gcc -v ),假设都打印出版本号信息和一些描写叙述信息,很高兴的告诉你,你的cygwin安装完毕了!

4、配置NDK环境变量

1、  首先找到cygwin的安装目录,找到一个home\<你的username>\.bash_profile文件,我的是:E:\cygwin\home\Administrator\.bash_profile,(注意:我安装的时候我的home目录以下神马都没有。解决的办法:首先打开环境变量。把里面的用户变量中的HOME变量删掉,在E:\cygwin\home目录下建立名为Administrator的目录(是username),然后把E:\cygwin\etc\skel\.bash_profile复制到该目录下)。

2、  打开bash_profile文件。加入NDK=/cygdrive/<你的盘符>/<android ndk 文件夹> 比如:NDK=/cygdrive/e/android-ndk-r5

export NDK

NDK这个名字是随便取的,为了方面以后使用方便。选个简短的名字,然后保存

3、打开cygwin。输入cd $NDK,假设输出上面配置的/cygdrive/e/android-ndk-r5信息,则表明设置环境变量成功了。

5、用NDK来编译程序

1、  如今我们用安装好的NDK来编译一个简单的程序吧,我们选择ndk自带的样例hello-jni,我的位于E:\android-ndk-r5\samples\hello-jni(依据你详细的安装位置而定),

2、 执行cygwin。输入命令cd /cygdrive/e/android-ndk-r5/samples/hello-jni,进入到E:\android-ndk-r5\samples\hello-jni文件夹。

3、 输入$NDK/ndk-build,运行成功后,它会自己主动生成一个libs文件夹,把编译生成的.so文件放在里面。

($NDK是调用我们之前配置好的环境变量,ndk-build是调用ndk的编译程序)

4、  此时去hello-jni的libs文件夹下看有没有生成的.so文件,假设有。你的ndk就执行正常啦!

6、在eclipse中集成c/c++开发环境

1、 装Eclipse的C/C++环境插件:CDT,这里选择在线安装。

首先登录http://www.eclipse.org/cdt/downloads.php,找到相应你Eclipse版本号的CDT插件的在线安装地址。

2、  然后点Help菜单,找到Install New Software菜单

3、  点击Addbutton。把取的地址填进去。出来插件列表后,选Select All。然后选择下一步就可以完毕安装

4、  安装完毕后,在eclispe中右击新建一个项目。假设出现了c/c++项目,则表明你的CDT插件成功安装啦。

7、配置C/C++的编译器

1、  打开eclipse,导入ndk自带的hello-jni样例,右键单击项目名称,点击Properties,弹出配置界面,之后再点击Builders,弹出项目的编译工具列表。之后点击New,新加入一个编译器。点击后出现加入界面。选择Program,点  击OK

2、出现了加入界面。首先给编译配置起个名字。如:C_Builder

设置Location为<你cygwin安装路径>\bin\bash.exe程序,比如:E:\cygwin\bin\bash.exe。设置Working Directory为<你cygwin安装路径>\bin文件夹,比如:E:\cygwin\bin

设置Arguments为

--login -c "cd /cygdrive/I/JavaWorkSpace/Blog/NDK_02 && $NDK/ndk-build"

上面的配置中 /cygdrive/I/JavaWorkSpace/Blog/NDK_02是你当前要编译的程序的文件夹,$NDK是之前配置  的ndk的环境变量,这两个依据你详细的安装文件夹进行配置,其它的不用变,Arguments这串參数实际是  给bash.exe命令行程序传參数。进入要编译的程序文件夹,然后执行ndk-build编译程序

3、接着切换到Refresh选项卡,给Refresh resources upon completion打上钩

4、然后切换到Build Options选项卡,勾选上最后三项

5、之后点击Specify Resourcesbutton,选择资源文件夹。勾选你的项目文件夹就可以

6、  最后点击Finish,点击OK一路把刚才的配置都保存下来,注意:假设你配置的编译器在其他编译器下边。记得一定要点Upbutton,把它排到第一位。否则C代码的编译晚于Java代码的编译。会造成你的C代码要编译两次才干看到最新的改动

7、  这一路下来肯定非常累了吧,如今再次恭喜你。编译配置也配置完毕啦,如今来測试一下能否够自己主动编译呢,打开项目jni文件夹里的hello-jni.c文件把提示Hello from JNI!改成其它的文字:如:Hello。My name is alex.,然后再模拟器中执行你的程序。假设模拟器中显示了你最新改动的文字。那么Congratulations!

你已经所有配置成功啦!

  文章參考 http://yueguc.iteye.com/blog/946724

cocos2d-x之android编译环境搭建(第二篇)[版本号:cocos2d-x-3.1.1]的更多相关文章

  1. windows下cocos2dx3.0开发环境及Android编译环境搭建

    cocos2dx更新到了3.x版本号,自己一直没有换,如今开发组要求统一换版本号,我就把搭建好开发环境的过程记录下来. 一.Windowns下开发环境搭建 1.  所需工具         1)coc ...

  2. Android编译环境搭建(0818-0819)

    1 在虚拟机VMware上安装64位Ubuntu14.04LTS 首先需要安装虚拟机并激活.然后新建虚拟机,选择使用下载好的Ubuntu镜像.注意需要将光驱改为自己下载的,而不是autoinst.is ...

  3. ubunut 12.04 (64bit) android编译环境搭建

    sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl libgl1-mesa-dev zlib1g ...

  4. jvm编译环境搭建 Debina篇

    这里参考了 <Java虚拟机精讲> <深入理解Java虚拟机 JVM高级特性与最佳实践> http://www.cnblogs.com/zxfdream/p/5411511.h ...

  5. Hadoop环境搭建|第二篇:hadoop环境搭建

    硬件配置:1台NameNode节点.2台DataNode节点 一.Linux环境配置 这里我只配置NameNode节点,DataNode节点的操作相同. 1.1.修改主机名 命令:vi /etc/sy ...

  6. cocos2d-x(vs2012)环境搭建(第一篇)[版本号:cocos2d-x-3.1.1]

    1.下载资源 下载cocos2d-x包V3.1.1,下载戳这里: http://www.cocos2d-x.org/download vs2012下载戳这里: http://www.xiazaiba. ...

  7. C语言编程入门之--第二章编译环境搭建

    第二章 编译环境搭建 导读:C语言程序如何工作,首先需要编译链接成可执行文件,然后就可以运行在不同的环境中,这个“环境”的意思就是比如说,电脑,手机,路由器,蓝牙音箱等等智能设备中,其中编译器启到了关 ...

  8. Docker容器搭建android编译环境

    Docker容器搭建android编译环境 目录 1 部署容器 1.1 手动部署 1.1.1 配置docker 1.1.2 启动容器 1.1.3 配置环境 1.2 Dockerfile 2 镜像管理 ...

  9. ubuntu12.04下安卓编译环境搭建总结

    前言:      因为工作需要,经常要编译安卓下的动态库,公司有已经搭建好环境的服务器,但是第一自己想自己搭建一下了解一个整个过程,另外,公司的服务器也经常出现问 题,导致编译不了,所以就想自己搭建环 ...

随机推荐

  1. linux gcc编译protocol

    gcc -c test.pb-c.c//生成test.pb-c.o文件 gcc -c udp_socket_server.c//生成udp_socket_server.o gcc -o test1 u ...

  2. Java 基础入门随笔(11) JavaSE版——继承、覆盖、抽象类

    1.面向对象的特征二:继承 定义: 指一个对象直接使用另一对象的属性和方法. 继承好处: 1.提供代码的复用性. 2.让类与类直接产生了关系,给第三个特征多态提供了前提. java中支持单继承.不直接 ...

  3. SQL SERVER 2008 在某表中新增一列时失败

    背景:新增列语句如:“alter table 表名 add 列名 float default 0 with values”(用VS2010做网站,这句话是在C#代码里执行的) 报错提示: 警告: 已经 ...

  4. codeforces_455B

    B. A Lot of Games time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  5. Discuz!伪静态原理分析

    伪静态在seo火热的时代,是每个站长都比较关注的问题,discuz!论坛如何伪静态,为什么伪静态失效了,为什么列表页无法实现伪静态,为什么有些页面不是伪静态呢?下面dz官方nxy105从两个角度入手为 ...

  6. IIS发布403报错

    报错信息如下图 解决方案,inetmgr打开IIS,找到对应网站的目录浏览,双击 开启

  7. 创建一个 Vue 的实例

    每个 Vue 应用都是通过 Vue 函数创建一个新的 Vue 实例开始的: var vm = new Vue({         // 选项 }) 选项:el.data.methods el: 类型: ...

  8. 18SVN进行版本控制

    SVN进行版本控制 SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS. SVN Website.

  9. __cdecl、__stdcall、__fastcall 与 __pascal 浅析

    call 指令与 retn 指令 首先我们得了解 CALL 和 RETN 指令的作用,才能更好地理解调用规则,这也是先决条件. 实际上,CALL 指令就是先将下一条指令的 EIP 压栈,然后 JMP ...

  10. 电子笔记本的思考(1)(ver0.2)

    章节:电子笔记本的思考(1)   陶哲轩在<解题·成长·快乐——陶哲轩教你学数学>中着重强调,用纸笔来“缓存”思维对于数学解题的重要性: 用选定的符号表达你所知道的信息,并画一个示意图.把 ...