这几天公司的一个cocos2dx游戏项目正在接入渠道进行发布,而我这个新人就被分配了打包渠道SDK并编译发布APK的任务。
看这篇文章的前提是你已经安装好了cocos2dx2.23和vs2010,并在VS2010下成功编译执行了cocos2dx安装目录下samples下的hellocpp项目,并且配置好了JDK。
步骤如下:
1.下载安装安卓sdk
2.下载安装安卓ndk
3.下载安装apache ant
这三步应该没什么难度。要注意的是在配置开发环境的时候可能会遇到目录名称中不能含有空格的问题,所以最好不要安装在C:\Program Files\或D:Program Files\下。
我的安装目录是这样的
接下来配置环境变量
关键环境变量如下
用户变量在这些环境变量中,要特别注意的是Path变量和NDK_MODULE_PATH变量,在Path中要配置NDK和Ant工具的目录
接下来进入cmd命令行窗口,并转到安卓项目目录,我的目录是D:\Android\cocos2d-x-2.2.3\samples\Cpp\HelloCpp\proj.android。建议大家添加一个任意目录开启命令行右键菜单,具体方法自行百度。
首先在命令行输入android list target并回车,查看你的电脑上安卓实例的ID和个数,如下图
我用的是API level 18编译的,ID是34,待会要用到这个ID,根据你安装的安卓实例的个数不同,这个ID号也会有所不同,一般是按0,1,2,3,。。。排列。target我觉得就是指API的版本。因为一般你都会下载多个版本的SDK,像安卓2.23或安卓4.03。具体按照什么版本编译,这个我也不太清楚,不过我参照了ndk下的一个目录
所以我是用API level 18编译的。如果用这目录下没有的版本,不知道会不会出现问题。
接下来就要进行关键的操作阶段了。
首先在删除安卓项目下的这几个文件:local.properties, proguard-project.txt, project.properties
再转到刚刚安卓目录下的命令行,输入 android update project -p . -t 34 并回车,注意不要漏掉空格,后面这个34替换成你用的API 版本ID
接下来输入ndk-build并回车
我这里是之前已经build过的,所以只出现了几行文字。如果是第一次编译的话会在命令行看到一个个cocos2dx cpp文件被编译的过程,速度有点慢,普通PC估计需要5分钟左右。编译成功的话会生成so文件。
接下来是最后一步,打包生成APK文件。在命令行输入 ant debug并回车
成功的话会看到如下画面
在这过程中,可能会出现常见的xml:691或xml:284错误,错误的原因很多,我这里的原因是没有删掉上面说的三个文件再进行编译打包。
还有一点,任何时候编译打包失败了,最好删除项目下的bin和obj目录再重新编译打包,否则很有可能出现xml错误
这个时候可以看到bin目录下生成了hellocpp-debug.apk,将它安装到安卓手机上运行一下,有可能出现闪退无画面的问题。这个时候,一般是资源的加载出现了问题。先将hellocpp\resources下的全部目录和文件复制到安卓项目目录下的assets文件夹中,再重复上面的步骤进行编译打包,记住要先删掉bin和obj文件夹,还有local.properties, proguard-project.txt, project.properties这三个文件。这时候编译出来的apk还是有可能无法正常运行。这个时候需要将resources\ipadhd中的所有文件复制到resources文件夹下,再将resources下的文件盒目录复制到assets目录下重新编译打包apk即可。
这是我改造的hellocpp在bluestacks下的运行画面