2.2 Android下的开发环境配置
Android本意是“机器人”,是Google公司推出的开源手机操作系统。Android基于Linux操作系统,由操作系统、中间件、用户界面和应用软件组成,号称首个为移动终端打造的真正开放和完整的移动软件。
在Android最早发布时,Google公司官方将Java语言作为第三方应用的开发语言,但是也没有完全拒绝C语言的开发人员使用自己的语言进行开发,因为在Android发布初期,Google就表明其虚拟机支持JNI(Java Native Interface,Java本地调用),也就是第三方可以通过JNI调用自己的C动态库。但是最早Google并未为这种方式提供相应的工具支持这种开发方式。直到2009年6月,Google Android方面发布了NDK(Native Develop Kit,原生态本地开发包),支持开发者使用C/C++语言开发Android程序。
Android NDK作为Android SDK的一个附加组件提供给开发者,也就是说,开发者必须同时安装SDK和NDK。NDK只是作为SDK的一个补充,增加了代码的重用性和程序的运行效率,并且使C/C++程序员也可以加入Android的开发中。本书成书之时NDK的最新版本是android-ndk-r7版本,本书也是使用这个版本进行开发的。
正因为Android支持了C/C++的开发,Cocos2D-x才选择了C++作为主要的开发语言。因为Java语言是iOS开发不支持的,所以跨平台的Cocos2D-x选择了支持两个平台的C++作为主要的开发语言。因此配置Cocos2D-x环境需要如下的开发工具。
Eclipse:支持Java和Android开发的开源集成开发工具。
JDK:JDK(Java Development Kit)是Java开发工具。
ADT:ADT是(Android Development Tools,Android开发插件)Android开发的Eclipse插件。
CDT:CDT是(C++ Development Tools,C++开发插件)C++开发的Eclipse插件。
Android SDK:Android 开发工具,包括模拟器等。
Android NDK:Android原生态本地开发包,辅助SDK进行编译开发,支持C/C++。
Cygwin:在Windows平台上运行的UNIX模拟环境,是Cygnus Solutions公司开发的自由软件。
使用Cocos2D-x进行Android开发需要上述工具。本节就介绍如何使用这些工具来搭建Cocos2D-x的Android开发环境。
2.2.1 Cocos2D-x软件安装与配置
与Cocos2D-x的Win 32环境下的软件开发与配置相比,Android的环境配置要相对麻烦,包括Android开发环境的搭建、Android NDK开发环境的搭建、Cygwin的安装与配置及Cocos2D-x的编译运行等。
1)下载并安装JDK。
由于运行Android的模拟器和Eclipse等需要Java的JDK环境,JDK是Oracle公司的Java开发工具,下载地址为http://www.oracle.com/technetwork/java/javase/downloads/index.html
,下载的文件直接运行安装即可。
2) 下载Java的开发工具Eclipse。
Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具等。Eclipse的下载地址是http://www.eclipse.org/downloads/
。Eclipse无须安装,解压完成便可直接使用。
这里需要说明的是,一般的Java开发和Android开发需要的只是Eclipse的Java版开发工具,但是因为我们这里需要使用C++进行开发,所以建议下载Eclipse的C++版本,这样会更加方便些。本书成书之时最新的Eclipse的C++版本的下载地址是http:// www.eclipse.org/ downloads/ packages /eclipse-cc- developers/junor
。
3) 为Eclipse安装相应的插件,首先是ADT插件。
ADT是Android开发的Eclipse插件,为我们提供了Android的DDMS(Dalvik Debug Monitor Service,Android虚拟机调试监视服务)等Android开发的功能。一般使用Eclipse在线安装方式安装ADT。
首先打开Eclipse,选择Help→Install New Software(可能会由于Eclipse版本不同而有所不同),弹出如图2-11所示的界面,输入网址http://dl-ssl.google.com/android/eclipse
,单击Add按钮便可出现如图2-11所示的结果。
选择安装全部,同时安装开发工具和NDK插件。安装过程中会首先下载所需的软件,所以时间可能会长些,请耐心等待。
4)安装Eclipse的C++插件。
如果直接安装Eclipse的C++版本,可以跳过这一步。下载地址为http://wiki.eclipse.org/CDT/User/DownloadCDTLatest
。下载压缩包以后,同样选择Help-Install New Software,弹出相应的界面后新增本地CDT的地址,即可安装。第三步和第四步这两种方式同时适用于CDT和ADT的安装,这里分别介绍两种安装方式,大家可以根据自己的情况选择。
5) 下载安装Android SDK。
下载地址为: http://developer.android.com/sdk/index.html
。下载完成后解压到某个目录下,然后选择Window→Preferences→Android,弹出如图2-12所示的对话框,在SDK Location中输入Android SDK的地址,单击Apply按钮并确定,Android SDK的配置就完成了。
选择Window→Android SDK Manager,弹出如图2-13所示的界面,可以安装Android的其他版本和相应工具的补充安装。
6)安装和配置Android的NDK工具。
Android NDK的最新版本为r7,可以在编译时省去Cgywin,提高效率,下载地址为http://dl.google.com/ android/ndk/android-ndk-r7-windows.zip
。将NDK解压到某一目录下,然后选择Window→Preferences→Android→NDK,弹出如图2-14所示的对话框,在NDK Location中输入NDK的地址,单击应用按钮并确定,完成NDK的配置。
7)编译并运行HelloWorld项目。
选择File-New-project,在弹出的界面中选择Android Project from Existing Code,如图2-15所示。
选择项目路径下的proj.android路径(之前的版本是android文件夹),选中并新建文件,如图2-16所示。
8) 进行编译前的配置。
单击鼠标右键选中项目后,选择properties-Builder-New,添加NDK路径,如图2-17所示。
在如图2-18所示的界面中分别选择Browse File System和Browse Workspace,选择ndk-build.cmd和项目的路径。
Cocos2D-x 2.0以上版本还要设置NDK_MODULE_PATH环境变量,如图2-19所示,填写Cocos2D-x的库的路径和第三方库的路径,中间用分号相隔,如例:......cocos2d-2.0-rc0a-x-2.0; .....cocos2d-2.0-rc0a-x-2.0 cocos2dxplatform third_partyandroidprebuilt。
9)运行之前将资源文件复制到assest文件夹下。
将NDK目录下的/sources/cxx-stl/gnu-libstdc++/libs/armeabi/目录下的libgnustl_static.a文件复制到项目文件夹下的obj/local/armeabi/libgnustl_static.a目录下,之后右键项目选择runas-Android Application运行,效果如图2-20所示。
注意 从NDK的r7版本开始,编译部分不需要使用Cygwin的辅助了。如果使用之前的版本,建议升级,因为从2.0版本起Cocos2D-x只适用NDK的r7版本。否则需要打开Cygwin,输入工程路径下的Android文件夹的完整路径,然后运行build_native.sh文件,具体输入为./build_native.sh。使用命令行模式输入命令很麻烦,最好将命令以记事本形式打开cygwin根目录下的.etcbash.bashrc修改启动的目录。
2.2.2 Cocos2D-x工程目录介绍
Cocos2D-x在Android平台上的工程项目与Android的Application一致,其目录变化比较小,如图2-21所示。
Cocos2D-x的Android项目目录内容如下:
src:Java源文件的目录,由于Android项目的入口类都是Activity,所以这里包括Activity、事件捕捉在内的Java实现的程序。Java文件目录包括入口Activity的ApplicationDemo和它的父类Cocos2dxActivity,以及处理声音、加速度传感器的类,如图2-22所示。
gen:自动生成的R.java文件、BuildConfig.java文件等。
assets:资源文件。
bin:APK包文件等配置文件。
jni:包括编译时使用的MK文件等。
libs:顾名思义,库文件,包括SO文件等。
obj:包括部分SO文件和O文件等。
res:XML(Extensible Markup Language,可扩展标记语言)等配置文件。
2.2.3 新建项目及交叉编译
Android下的Cocos2D-x编译在2.0版本以后已经因为使用NDK的r7版本,而不需要使用Cygwin的辅助,但是新建项目还是需要Cygwin的。
1)下载Cygwin。
从官方地址http://cygwin.com/install.html
下载Cygwin的在线安装文件,双击下载安装Cygwin。
2)使用任意文本编辑工具打开Cocos2D-x目录下的create-android-project.bat文件。
如图2-23所示,方框中的部分为我们需要修改Cygwin、Android SDK和Android NDK目录的位置。
3)双击create-android-project.bat文件,在命令行模式下输入项目的包名项目名、SDK版本等,选择后完成新建,如图2-24所示。
4)根据2.2.1节中的内容编译运行firsttest项目,效果如图2-25所示。
5)编辑Android.mk文件。
把游戏项目的C++文件信息输入Android.mk文件中,如图2-26所示。
注意 不同版本的MK文件的位置是不同的,Cocos2D-x的1.0.1-x-0.11.0版本的是在Classes目录下,Cocos2D-x的2.0-rc2-x-2.0.1版本的在jni目录下。修改位置不正确,是起不到相应的效果的。
在Win32程序转换成Android项目的过程中,由于二者在规则上的不同,为了程序的可移植性更好,需要注意以下的内容:
Win32的程序对于资源的名称是大小写不敏感的,但是在Android中,却恰恰是大小写敏感的。比如图片的名称是Example.png,在Win32程序中如果写example.png,是可以找到相应的图片的,但是在Android中却不可以。所以为了提高程序的可读性,请保持大小写的敏感。
需要改变Android项目的横纵屏幕时,在图2-27所示的位置上修改,分别选择landscape(横向)和portrait(纵向)即可。
VS下的编码格式与Android下的编码格式不同,所以需要统一编码格式,或者使用转换工具转换。
如果需要添加新的库,这里以Box2D库为例,在2.0之前的版本需要经过如下步骤:
1)修改工程目录下的Classes目录下的Android.mk文件,需要修改的位置如图2-28所示。
2)修改Android工程目录下的jni目录下的Android.mk文件,需要修改的位置如图2-29所示。
3) 修改jni目录下的Application.mk文件,需要修改的位置如图2-30所示。
4)修改入口Activity类,需要修改的位置如图2-31所示。
在2.0之后的版本中,由于设置了环境变量NDK_MODULE_PATH,只需要修改Android工程目录下的jni目录下的Android.mk文件即可,如图2-32所示。