zoukankan      html  css  js  c++  java
  • C++开发安卓、windows下搭建Android NDK开发环境

    1. NDK(Native Development Kit)

    1.1 NDK简介

    Android NDK是一套允许开发人员使用本地代码(如C/C++)进行Android APP功能开发的工具,通过这个工具,我们可以把用C/C++代码编译成可以直接运行在Android平台上的本地代码,这些本地代码以动态链接库( *.so )的形式存在,也正因为这样,我们可以通过复用这些动态链接库从而复用本地代码。

    那么,通过NDK这个开发工具包,那么我们是否可以将一个APK完全使用C/C++来编写呢?

    答案是不可以的。众所周知,Android应用程序是运行在Dalvik虚拟机上的。而NDK只开发了部分接口,所以NDK只是允许开发人员通过C/C++实现Android APP的部分功能。由于Android系统本身就是Linux核心,NDK只是负责把这些本地代码编写成可以运行在linux上的动态链接库,从而绕过了Dalvik虚拟机,直接运行在Android平台上了。

    1.2 NDK下载

    1.2.1 下载说明

    下载地址:http://www.cr173.com/soft/66623.html
    http://developer.android.com/tools/sdk/ndk/index.html#Downloads

    截至2013-12-9为止,也就是我写这篇博客的时候,最新版本为:r9

    在同一个平台中,下载包有两个,我们选择下载android-ndk-r9b-windows-x86

    1.2.2 下载项区别

    NDK支持三大平台(windows, Mac, Linux),下面我以windows作为例子进行讲解一下下载项中的Package的区别,如图:

    从图中,我们可以看到,每个平台,都有两个相应的下载包,分别是android-ndk-r9b-windows-x86.zip和android-ndk-r9b-windows-x86-legacy-toolchains.zip,那么这两个包有什么区别呢?

    官网的解释是这样子的:第一个下载包,也就是图中的android-ndk-r9b-windows-x86.zip,包含了所有平台默认的工具链,如果你不想使用当前默认推荐的工具链,那么可以下载第二个。可能直接这么说会有点空,下面一起看下下面这张图:

    从图中我们知道了legacy包只有一个工具链包,而非legacy包中含有各种默认的已经制定好的工具,同时包含有例子,文档等等。

    1.3 NDK安装说明

    1) 直接把下载到的安装包解压到你想要放的路径;

    2) 配置环境变量

    I. 新建一个系统环境变量,变量名为ANDROID_NDK_ROOT, 变量值为你的NDK所在的路径,比如我的就是D:DevToolsJAVAadt-bundle-windowsandroid-ndk-r9b

    II. 在系统变量 Path 的最前面添加%ANDROID_NDK_ROOT%;

     

    1.4 NDK 安装验证

    完成上面的步骤之后,NDK的安装到此就完成了,下面我们来验证一下NDK安装成功与否.

    1) 打开cmd.exe,在里面输入ndk-build -version,输出以下内容,表示安装成功。

    1.5 NDK 的使用说明

    根据官方文档的说明,从 r7 版本之后,NDK中就多出了一个 ndk-build.cmd,让我们可以直接在windows下运行啦,如果没有特别需求的话,我们再也不用花费一大堆时间去下载安装Cygwin啦……

    下面我们以官方给的Project hello-jni 作为例子来讲解吧。

    1) 进入到hello-jni目录下或者它的任意父目录,当前我就直接进入到 hello-jni 目录下吧;

    2) 直接输入命令ndk-build进行本地代码编译,输出以下内容,表示成功编译成动态链接库,同时我们在hello-jniobjlocalarmeabi路径下可以看到编译好的libhello-jni.so;

     

    编译成功后,我们来尝试一下,看看刚才编译成功的动态链接库是否能够使用。

    1) 执行前面博文中我们讲解过的adb update project命令升级该项目,为该项目添加上build.xml等文件,不懂的可以直接查看前面的博文《Android学习第二天-android常用命令》,下面我直接在机子上执行以下命令:

    android update project -p . -t 1

    输出以下结果表示Update成功。

    2) 直接执行命令ant debug进行编译打包成apk(这里需要预先搭建好ANT的环境,如果没有搭建的话可以参考博文:http://my.oschina.net/xiahuawuyu/blog/71296)

    3) 开启模拟器

    4) 直接执行命令安装bin目录下的APK到模拟器中adb install HelloJni-debug.apk以下是执行结果:

     

    2. Eclipse中使用NDK

    2.1 Eclipse CDT (C/C++ Development Tooling)

    2.1.1 CDT介绍

    CDT是C/C++在Eclipse平台下的开发工具.它提供的功能包括:C/C++编辑器(一些基本的功能:语法高亮显示,代码编辑等),C/C++调试器,C/C++ Launcher,剖析器,内容提示,Makefile生成器等。

    2.1.2 CDT 下载与安装

    2.1.2.1 CDT 安装前说明

    如果大家下载的是谷歌提供的ADT 绑定版,那么它已经默认安装好了相应的CDT了,可以忽略该章不阅读,具体我们还可以通过 Help-> About ADT 进行查看相关信息,如图:

    2.1.2.2 CDT 下载

    下载地址:http://www.eclipse.org/cdt/downloads.php

    该地址上下载的是离线安装包,由于安装包比较大,所以也建议采取这种方式。

    注意:不同eclipse版本要下载对应的包,否则安装不了

    那么我们应该怎么知道我们的eclipse版本呢?

    同样通过Help -> About Eclipse 打开相关信息,如图:

    从图中,我们可以知道自己的Eclipse版本,比如我的是Indigo,然后就到下载地址上根据版本下载相应的即可,比如我下载的是就是 cdt-master-8.0.2.zip

    2.1.2.3 CDT 安装

    1) 通过 Help -> Install New Software打开一个对话框,点击按钮 add。

    2) 在弹出来的对话框中,建议给Name的值为:CDT_版本号;然后点击Archive按钮,定位到我们下载到的CDT离线安装包

    3) 等待安装完成后,重启eclipse后生效

    4) 安装完成重启后,在Eclispe中新建一个项目,如果出现了C/C++项目,则表明CDT插件安装成功了

    2.1.2.4 CDT 安装问题解决

    1) 如果Location的下面出现“Duplicate location”错误,请到Window -> preferences -> Install/Update -> Avaliable Software Site中找到remove掉。

    2) 如果出现缺少eclipse包说明你下载的版本和eclipse版本不匹配,重新下载匹配的重新安装就可以了。

    2.2 Sequoyah

    2.2.1 Sequpyah 简介

    Sequoyah插件用于设置Android工程对Native开发的支持,如果安装的是ADT 绑定版的同学,可以直接阅读 章节2.2.4 NDK的配置

    2.2.2 Sequoyah 下载

    下载地址:http://www.eclipse.org/sequoyah/downloads/index.php#latest

    我们可以从上面的地址中下载离线安装包,具体的安装方法跟上文中的CDT离线安装方法相同,再次不做重复说明。

    2.2.3 Sequoyah 在线安装

    由于Sequoyah本身并不是太大,在线安装速度也比较快,所以建议在线安装,下面我们来说明一下在线安装的方法

    1) 通过 Help -> Install New Software打开一个对话框,点击按钮 add,具体不截图啦,跟CDT中安装的第一步一样。

    2) 在弹出的窗口中,Name 输入Sequoyah,Location直接输入http://download.eclipse.org/sequoyah/updates/2.0/ ,如图:

    注意:在安装界面不要勾选“Group items by category”复选框,默认是勾选的,出现了列表为空(There are no categorized items)的情况,如图:

    2.2.4 NDK的配置

    我们以NDK中给出的例子hello-gl2为例子进行讲解:

    1) 通过Preference -> Android -> NDK ,点击Browser按钮,定位到我们NDK安装的根目录,如图:

    2.3 Eclipse中NDK使用说明

    1) 首先我们应该导入项目,右键,选择Import

    2) 由于例子不是一个Eclipse项目,所以我们必须如图中那般选择 ,让Eclipse根据已有的安卓代码进行项目构建, 点击Next

    3) 定位到我们要导入的项目,并且勾上复制到工作空间中,让例子中搞定代码保持原来的样子作为备份,而我们操作的是复 制到工作区间中的代码。

    4) 对我们引入的项目右键,选择Android Tools -> Add Native Support

    5) 因为demo中已经为我们写好了cpp文件,所以直接跟他一样名字,点击确定。

    6) 如图,点击右上角的按钮进入Perspective C/C++

    如果找不到改按钮,我们还可以通过Windows -> Open Perspective -> Other... ,选择C/C++ 即可打开

    7) 点击工具栏中的锤子按钮进行编译

    8) 等待控制台输出以下内容,说明动态链接库已经编译完成了,同时我们还能够在objlocalarmeabi看到编译好了的动态链接库。

    9) 注意:改项目想要直接运行的话会出错,具体解决方法可以参考:http://hi.baidu.com/huareal/item/f00ad3cf8d35ebd7ee183b83,根据该文章修改后,我们发现就可以正常运行了,这也说明了我们在Eclipse中的NDK相关设置配置成功了

  • 相关阅读:
    Silverlight实例开发 简单的拖拽效果
    使用DataReader读取记录集 输出全部记录
    MSDTC on server ''ServerName'' is unavailable. 的解决办法
    从GridView中直接导出数据到Excel文件 处理导出乱码 类型“GridView”的控件“XXXX”必须放在具有 runat=server 的窗体标记内。”的异常
    基于nginx的tomcat负载均衡和集群(转)
    apache tomcat 6集群负载和session复制(转)
    Fedora 12下安装Google Chrome和RealPlayer 11
    使用ImageMagick为你的网站减重(转)
    Nginx负载均衡如何进行配置
    hessian 演示
  • 原文地址:https://www.cnblogs.com/skyofbitbit/p/3703325.html
Copyright © 2011-2022 走看看