Cocos2d-X 移植 Android 平台详解

android studio 教程 | 2019-01-17 09:54

在 Windows 下使用 VS 开发 Win32 平台的游戏程序后,需要把它们移植到不同的平台上。在这里首先介绍 Android 平台的移植工作。

因为 Windows 和 手机等平台的 CPU 指令不同、架构不同,在 Windows 下编写的程序要想在手机上运行,首先要进行编译。在编译之前需要准备以下软件:

Android NDK

Android SDK

由于之前安装过 Cocos2d-X、JDK、Python 了,下面只介绍剩下三个软件的下载及环境配置。

1.Android NDK下载地址及环境配置

Android NDK是一个工具集,可以让你使用C和c++等语言,用本地代码实现部分应用程序。对于某些类型的应用程序,这可以帮助您重用用这些语言编写的代码库。

环境配置

1.下载后将压缩包解压到自定义路径(不能包含中文路径和空格)。

2.环境变量新建 NDK_ROOT 变量并将 NDK 解压路径复制到变量值。

3.找到变量 Path 将 %NDKROOT% 添加进去。

4.打开 cmd,输入 ndk-build 显示如图即配置成功。

2.Android SDK下载地址及环境配置

Android NDK是一个工具集,可以让你使用C和c++等语言,用本地代码实现部分应用程序。对于某些类型的应用程序,这可以帮助您重用用这些语言编写的代码库。

官网下载地址(需翻墙):

找到 SDK Tools,下载 Windows 的 zip 格式即可。

环境配置

1.下载后将压缩包解压到自定义路径(不能包含中文路径),打开 SDK Manager.exe,选在指定版本 API 安装即可。

2.环境变量新建 ANDROID_HOME 变量并将 SDK 解压路径复制到变量值。

3.找到变量 Path 将 %ANDROID_HOME%tools 添加进去。

4.打开 cmd,输入 ndk-build 显示如图即配置成功。

3.Apache Ant 下载地址及环境配置

Apache Ant,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。由Apache软件基金会所提供。

环境配置

1.下载后将压缩包解压到自定义路径(不能包含中文路径和空格)。

2.环境变量新建 ANT_ROOT 变量并将 ANT 解压路径复制到变量值。

3.找到变量 Path 将 %ANT_ROOT% 添加进去。

4.打开 cmd,输入 ant -version 显示如图即配置成功。

4.设置环境变量

所有环境变量配置成功后,执行 Cocos2d-X 根目录的 setup.py 来确保全部环境配置无问题。

5.编译打包

项目编译:cocos compile -s <path to your project> -p <platform> -m <mode> -o <output directory>

cocos compile -s ~/MyCompany/MyGame -p ios -m release -o ~/MyCompany/MyGame/bin

cocos compile -s ~/MyCompany/MyGame -p android -m release -o ~/MyCompany/MyGame/bin

cocos compile -s c:\MyCompany\MyGame -p win32 -m release -o c:\MyCompany\MyGame\bin

项目运行:cocos run -s <path to your project> -p <platform>

cocos run -s ~/MyCompany/MyGame -p ios

cocos run -s ~/MyCompany/MyGame -p android

cocos run -s c:\MyCompany\MyGame -p win32

注:如果已经在项目目录了,-s 和 -o 参数不是必须的,可以直接省略。

6.遇到的问题

1.打包失败,提示 Error:undefined reference to 'LoadingScene::createScene();

原因:没有在 ..\my2048\proj.android\app\jni\Android.mk 文件中添加自定义类。

2.安装 APK 时解析失败,提示 Error:Activity class {test/org.cocos2dx.cpp.AppActivity} does not exist.

原因:Cocos2d-X 安装到 C 盘下载录下,编译时对该文件没有访问权限,换到 D 盘解决。

3.安装 APK 时解析失败,提示 Error:android.content.pm.PackageParser$PackageParserException: Invalid manifest package: must have at least one '.' separator.

原因:APK 包名必须包含‘.’, 采用反域名命名规则,全部使用小写字母。一级包名为com,二级包名lwz(为个人或公司名称,可以简写),三级包名guidecity(根据应用进行命名),四级包名ui或utils等(模块名或层级名),根据实际情况也是可以用五级包名,六级包名。