在VisualStudio里面写完游戏代码后需要将游戏项目部署到安卓编译环境,并且编译成apk装到手机,以下讲解如何搭建开发环境。
软件准备
- eclipse+adt(或者adt-bundle,推荐使用adt-bundle,如果是aclipse+adt的话可能导致与adt或者sdk,ndk版本不兼容各种问题)
- jdk
- android-sdk(用adt-bundle可省)
- android-ndk
- cygwin
保险起见,都装32位的。
创建cocos2dx项目
用python创建自己的cocos2dx项目。参看:http://blog.csdn.net/u012234115/article/details/40018783
工程目录:
其中我修改了demo项目的一个h和一个cpp,在cpp里面加了点东西。
配置安卓开发环境
1,安装jdk,sdk,ndk,cygwin
其中sdk和ndk可以用离线版的压缩包解压,cygwin安装时只需要将devel那一项改为install就可以了,这个工具是编译安卓需要的,装完后最好运行一下cygwin.bat配置出事参数,能打开bash控制台就行了。
2,配置环境变量
JAVA_HOME
C:\Program Files (x86)\Java\jdk1.6.0_45
ANDROID_SDK_ROOT
D:\android-sdk (如果是adt-bundle集成开发包就不用配这个)
NDK_ROOT
D:\android-ndk
最后把这些变量用%xxx%的形式加入到用户变量或者系统变量的Path中,例如:Path
%ANDROID_SDK_ROOT%;%NDK_ROOT% (分号隔开)
CYGWIN的环境变量C:\cygwin\bin 必须写到系统变量Path后面,因为c盘权限问题,如果写到用户变量可能找不到
3,eclipse中导入cocos2dx项目
eclispe要先安装adt插件(adt-bundle省略这个)
eclipse中import创建的那个cocos2dx项目,file->import->Existing Android Code Into Workspace->Browse,把创建的项目那个proj.android文件夹导入工程
导入后看到src上有个叉,有错误
项目加载进来后会提示缺少cocos2dx包,我们去cocos2d-x-2.2.5/cocos2dx/pathform/android/java/scr/ 把org文件拷到我们项目APKtest/proj.android/src/下,然后refresh一下eclipse项目就可以了
(还有另外一种方法,导入另一个Android项目,项目位置为“C:\cocos2d-x-2.2.0\cocos2dx\platform\android”。导入项目之后,错误即会消失,有时候那个红叉不会立即消失,别管他,编译时自动没了)
配置eclipse中androidsdk的位置,window->preferences->android,如果没有设置,后面编译时会提示设置的
配置目标编译平台,项目->properties->android,勾选安卓api版本(我只装了api19,如果是完整sdk,下拉列表有很多版本,另外cocos2dx创建的项目默认最低api是8,勾选8以上的就可以了)
配置Android.mk后保存,这个是jni设置cpp文件链接规则的文件,把修改的或者增加的cpp文件按照那个格式写进去,不能多也不能少,只要cpp不要h
开始编译,点击eclipse上面的run按钮,第一次编译需要选择run as android application,等一杯茶的功夫,cygwin和ndk需要将项目交叉编译到arm平台
编译成功,在内proj.android\bin目录里可以看到生成的apk包
第一次的话需要配置安卓虚拟机,会自动打开AVD manager,配置好虚拟器之后会自动启动虚拟机,安装打包好的apk,运行程序
打开logcat可以看程序运行日志
最终结果
游戏的屏幕适配策略需要根据安卓手机的分辨率做修改。
注意:
1,cocos2dx 2.2.5编译错误:proj.android/../../../extensions/CocoStudio/Reader/WidgetReader/LabelReader/LabelReader.cpp:54:9: error: 'transform' is not a member of 'std',
解决方法:找到LabelReader.cpp文件在前面添加 #include <algorithm>
2,可以在AndroidManifest.xml文件里面修改android:screenOrientation="landscape" 为android:screenOrientation="portrait"
默认横屏改竖屏
3,遇到程序白屏闪退,并且logcat里面显示 FATAL EXCEPTION: GLThread 11 ,
解决方法:在创建虚拟机时勾选GPU模拟 即,Use Host GPU,最好api 在14以上
4,如果有自己额外添加的游戏资源,比如图片,音乐,字体,图标等,
需要在Resouces文件夹拷贝到proj.android\assets下参与编译打包
,否则程序黑屏