您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > Windows平台下搭建Android原生C、C++开发环境
Windows平台下搭建Android原生C/C++开发环境1.准备工作下载androidNDK1.6下载Cygwin2.安装CygwinCygwin是Windows上类似于Linux的环境。它包括一个提供UNIX功能性基本子集的DLL以及在这之上的一组工具。确保您具有相当快速的Internet连接。GCC编译器及相关实用程序大约有50兆字节。确保在您的管理员帐户下安装这个程序,并选择为“所有用户”安装。将您的Internet浏览器指到。在屏幕的中央是一个黑绿两色组成的“C”徽标,标题是“Installorupdatenow.”。在该链接上点击,这将下载一个小程序setup.exe(250KB)。这个安装程序将在您的机器上引导Cygwin环境的安装或更新过程。2.1运行安装程序将setup.exe下载到一个已知地方,如桌面,然后运行它。它将打开安装向导,如下图所示:图1.Cygwin环境的安装向导点击Next按钮。选择下载位置在这个页面上,选择InstallfromInternet。图2.选择安装类型点击Next按钮。选择一个安装目录在这个页面上,选择执行Cygwin所在的目录。设置图3所示的剩余选项。图3.选择一个安装目录点击Next按钮。选择一个临时安装目录在这个页面(图4),为安装包选择一个临时目录。当Cygwin安装完成后,您可以删除这个目录和它的内容。注意安装程序记住了这个目录,并在更新时只下载比这个目录中的包更新的版本。如果您删除这个目录并重新安装,setup将重新安装您选择的所有内容而不管这些包的安装程序在运行目录中已经存在。图4.选择一个临时安装目录点击Next按钮。指定您的Internet连接在这个页面上(图5),指定Internet连接。如果你有代理服务器,选择“使用IE5设置”,或从您的浏览器选项获得服务器名,选择使用代理,然后输入代理服务器的主机名和端口号。图5.选择连接类型点击Next按钮。选择下载站点在这个页面上(图6),选择一个下载站点。因为这些站点是义务的镜像,所以选择一个下载点有点风险(通常它们是可用的,但有时不可用)。通常,试试离你比较近的那个站点。图6.选择一个下载站点点击Next按钮。选择包进行安装在这个页面上,您将选择要安装的包。默认情况下,Cygwin基本包将不安装GCC,因此,您必须修改默认设置。将鼠标移动到Devel边的加号(+)上,然后点击它展开Devel类。图7.选择包进行安装在你还没确定哪些需要哪些不需要时,最好全部下载,点击All后的default为install。即是完全安装了。保证了GCC编辑器的使用。您会看到在Devel下有许多入口,其中只有三个是您需要的,次序如下:gcc-mingw不是所有默认的基本包都需要运行GCC,但它们不太大,因此为简单化,就安装它们。注意很容易选错包或版本,尤其在重新安装的时候,因为选择窗口中的循环按钮是不标准的。在这一步我们建议的就是多加小心,尤其是有多个GCC版本的情况下。为选择这三个包,点击列New中每个双向箭头直到显示每个包的版本号。根据您机器上已安装的以及镜像上所拥有的合适的版本,列入口在各图标间循环:如果有多个版本可用,选择数字最大的一个。要下载二进制文件,确保选中了“Bin”列的复选框。图9.下载二进制文件完成下载选择完三个包之后,Cygwin就访问选择的镜像主机,然后下载那三个包以及默认的基本包。根据您的连接速度这将持续几分钟,在安装期间,将打开和关闭许多弹出窗口。因为存放Cygwin安装的镜像站点是义务的,有时不可用或负荷过重。如果发现选择的镜像没有响应,就按取消(Cancel),这将终止整个安装程序。惟一的办法就是重新开始安装并选择另一个镜像;这非常让人感到沮丧。幸运的是,安装程序记住了大多数您上次所做的,因此通常取默认情况。在重新选择正确的包时必须小心,因为在后面的安装中不帮你选择这些内容。setup程序然后询问是否在您的桌面或开始菜单创建一个Cygwin快捷键。该快捷键启动Cygwinshell(称为bash),这对我们计划中的DB2使用并不是必须的,但对测试我们的安装是有用的。因此让setup至少创建一个桌面快捷键。我们将在安装的后面使用它。最后,点击Finish按钮。我们将在后面测试安装结果。图10.完成安装3.配置Cygwin安装完成后会在桌面上建立一个快捷方式,双击Cygwin,在shell提示符下修改当前目录的配置文件.bash_profile(C:\cygwin\home\Administrator),在文件后边添加上以下两行:ANDROID_NDK_ROOT=/cygdrive/c/android-ndk-1.6_r1exportANDROID_NDK_ROOT退出Cygwin,重新进入,执行以下命令cd$ANDROID_NDK_ROOTbuild/host-setup.sh一切顺利的话会提示设置成功,如果出错,则检查错误并修复.4.测试环境进入Cygwin,输入cd$ANDROID_NDK_ROOTmakeAPP=hello-jni一切顺利则会生成libhello-jni.so文件在$ANDROID_NDK_ROOT/apps/hello-jni/project/libs/armeabi目录下启动预先配置好的Eclipse+ADT环境,创建一个AndroidProject,选择CreateprojectformexistringsourceLocation=c:\android-ndk-1.6_r1\apps\hello-jni\project,直接确认即可开始编译并生成apk文件运行这个Project,及可看到效果。5.创建实例5.1创建java文件,定义接口在Eclipse中创建packet:com.hikvision.player,然后创建HikPlayer类,类代码如下:packagecom.hikvision.player;publicclassHikPlayer{publicnativeintHikPlayer_InitLib();publicnativeintHikPlayer_FiniLib();}声明了初始化和析构的接口。5.2生成.h文件通过javah工具生成.h文件:生成com_hikvision_player_HikPlayer.h文件,如下:/*DONOTEDITTHISFILE-itismachinegenerated*/#includejni.h/*Headerforclasscom_hikvision_player_HikPlayer*/#ifndef_Included_com_hikvision_player_HikPlayer#define_Included_com_hikvision_player_HikPlayer#ifdef__cplusplusexternC{#endif/**Class:com_hikvision_player_HikPlayer*Method:HikPlayer_InitLib*Signature:()I*/JNIEXPORTjintJNICALLJava_com_hikvision_player_HikPlayer_HikPlayer_1InitLib(JNIEnv*,jobject);/**Class:com_hikvision_player_HikPlayer*Method:HikPlayer_FiniLib*Signature:()I*/JNIEXPORTjintJNICALLJava_com_hikvision_player_HikPlayer_HikPlayer_1FiniLib(JNIEnv*,jobject);#ifdef__cplusplus}#endif#endif该步骤也可以省略,可以直接按照JNI规范书写该文件!不过通过javah工具生成的文件可以确保正确。5.3编写c/c++文件定义com_hikvision.player.HikPlayer.c文件,如下:#includecom_hikvision.player.HikPlayer.hJNIEXPORTjintJNICALLJava_com_hikvision_player_HikPlayer_HikPlayer_1InitLib(JNIEnv*env,jobjectobj){return1;}JNIEXPORTjintJNICALLJava_com_hikvision_player_HikPlayer_HikPlayer_1FiniLib(JNIEnv*env,jobjectobj){return0;}5.4创建编译文件在NDK的apps目录下创建hikplayer目录,并且创建相关文件,目录结构如下:Hikplayer–Application.mk–project–jni–Android.mk–helloworld.c5.4.1定义Application.mkAPP_PROJECT_PATH:=$(callmy-dir)/projectAPP_MODULES:=hikplayerApplication.mk定义如下:APP_PROJECT_PATH:=$(callmy-dir)/projectAPP_MODULES:=hikplayerAPP_PROJECT_PATH,这个是ANDROID工程路径和相应指定库生成目录(复制而来,名称为“lib源文件模块名”),一般设置成$(callmy-dir)/project,即当前目录下project中,而库生成目录就是project/libs。APP_MODULES则是这个ANDROID将包含的上述源文件工程,填入涉及的一个或多个源文件工程名称。最后在主目录中用makeAPP=APP工程名称5.4.2定义Android.mk文件语法规范Android.mk编译文件是用来向AndroidNDK描述你的C,C++源代码文件的,这篇文档描述了它的语法。在阅读下面的内容之前,假定你已经阅读了docs/OVERVIEW.TXT文件,了解了它们的角色和用途。概述:一个Android.mkfile用来向编译系统描述你的源代码。具体来说:-该文件是GNUMakefile的一小部分,会被编译系统解析一次或更多次的build系统。因此,您应尽量减少您声明的变量,不要认为某些变量在解析过程中不会被定义。-这个文件的语法允许把你的源代码组织成模块,一个模块属下列类型之一:静态库共享库只有共享库将被安装/复制到您的应用软件包。虽然静态库能被用于生成共享库。可以在每一个Android.mkfile中定义一个或多个模块,也可以在几个模块中使用同一个源代码文件。编译系统为你处理许多细节问题。例如,你不需要在你的Android.mk中列出头文件和依赖文件。NDK编译系统将会为你自动处理这些问题。这也意味着,在升级NDK后,你应该得到新的toolchain/platform支持,而且不需要改变你的Android.mk文件。注意,这个语法同公开发布的Android平台的开源代码很接近,然而编译系统实现他们的方式却是不同的,这是故意这样设计的,可以让程序开发人员重用外部库的源代码更容易。Android.mk定义如下:#Copyright(C)2009TheAndroidOpenSourceProject##LicensedundertheApacheLicense,Version2.0(theLicense);#youmaynotusethisfileexceptincompliancewiththeLicense.#YoumayobtainacopyoftheLicenseat##
本文标题:Windows平台下搭建Android原生C、C++开发环境
链接地址:https://www.777doc.com/doc-3517607 .html