cocos2d-x compile打包apk
在使用cocos2d-x 3.2在Windows环境下为Android平台打包APK时,许多新手会感到困惑。下面我将分享自己的一些经验。
一、下载Android环境
搭建Android环境需要用到Android SDK、NDK、Ant和JDK。具体下载内容如下:
- 下载Android SDK
- 下载Android NDK
- 下载Android JDK
- 下载Ant
其中,JDK需要进行安装,其他工具直接解压即可。建议将SDK、NDK和ANT解压缩到同一个文件夹中,例如我将解压后的文件都放在了e:\Android文件夹下。
如果下载的SDK是adt文件,需要将里面的SDK文件夹提取出来并进行修改。
二、配置JDK
JDK安装完成后,需要手动配置环境变量,具体步骤如下:
- 新建
JAVA_HOME变量:在系统变量中新建JAVA_HOME变量,变量值为JDK的安装路径,例如C:\Program Files\Java\jdk1.8.0_05,请根据自己的实际安装路径填写。 - 新建
classpath变量:新建系统变量classpath,变量值为.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar,注意前面的“.”不要忘记,它表示当前路径。 - 修改
path变量:在系统变量path(该变量已存在,无需新建)中添加变量值%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin,变量值之间用“;”隔开。
环境变量解析
JAVA_HOME:表示JDK的安装路径。classpath:是Java加载类的路径,只有类在classpath中,java命令才能识别。前面的“.”表示当前路径。path:配置该变量后,系统在任何路径下都可以识别java和javac命令。
配置完成后,打开cmd命令窗口,输入java或javac并回车。如果没有打印“java不是内部或外部命令”,则说明配置成功。
三、配置Ant环境变量
将Ant的存放路径添加到系统Path变量中。
四、配置cocos2dx 3.1 Android环境关联
完成上述准备工作后,打开cocos2dx目录下的setup.py文件,依次输入以下路径:
- NDK的路径。
- SDK的路径。
- Ant的路径。
当三个路径都配置完毕后,即可完成环境关联。
五、打包APK
注意事项
在打包APK之前,需要修改proj.android/jni文件夹下的Android.mk文件,添加自己新增的CPP文件。这里的新增文件指的是非cocos2dx生成的项目文件。务必将自己新增的文件或文件夹包含进APK。
打包步骤
- 以官方的
cpp-tests项目为例,按住Shift键并右键单击项目文件夹,选择“在此处打开命令窗口”。 - 使用
cocos compile -p android --ap 20方式编译APK文件。其中--ap 20是指定Android平台版本,我使用的是20,也可以根据自己下载的版本选择19等其他版本。 - 运行
cocos run -p android --ap 20。当出现“ -waiting for device - error: ”时,按Ctrl + C终止操作。 - 等待编译完成。需要注意的是,cocos2d-x 3.2版本使用的是
android-20,如果E:\Android\sdk\platforms目录下没有android-20文件夹,请创建一个空的。 - 编译完成后,查看生成的APK文件,并可以安装到手机上进行测试。
竖屏设置
如果需要将项目在真机上设置为竖屏,只需在proj.android文件夹下的AndroidManifest.xml文件中修改android:screenOrientation属性。将其值设置为"landscape"表示横屏,设置为"portrait"表示竖屏,默认值为横屏。
六、异常处理
1. Android平台未指定错误
Android platform not specified, searching a default one...
Can't find right android-platform for project :
"F:\cocos2d-x-3.1.1\tests\cpp-tests\proj.android".
The android-platform should be equal/larger than 20
解决办法:在相应目录下创建一个空的android-20文件夹,同时检查命令是否为--ap 20(注意是双连字符),并查看\proj.android目录下的project.properties文件是否指定为android-20。
2. make.exe编译错误
make.exe: *** No rule to make target `/home/tubuntu/game/android-ndk-r9d/sources/android/cpufeatures/cpu-features.c', needed by `obj/local/armeabi/objs/cpufeatures/cpu-features.o'. Stop.
解决办法:从后缀名来看,这是编译中间文件,可以删除。Make的No rule to make target错误一般表示文件已经存在,无需再编译。因此,进入E:\cocos2d-x-3.2\Projects\HelloCpp111\proj.android\obj\local\armeabi,将objs-debug文件夹下的所有文件(包括文件夹)全部删除。
3. make.exe生成libcoccos2dcpp.so错误
make.exe:***obj/local/libcoccos2dcpp.so……
解决办法:该问题是由于没有在Android.mk文件中添加自己的文件导致的。进入E:\cocos2d-x-3.2\Projects\HelloCpp111\proj.android\jni文件夹,打开Android.mk文件,添加自己的文件。
4. 找不到gcc工具链错误
Couldn't find the gcc toolchain
解决办法:检查NDK的配置路径,确保NDK_ROOT设置正确。cocos2d-x 3.1版本需要使用最新的NDK版本,建议从安卓网站下载最新的版本r9d。
5. Android API问题
如果遇到Android API问题,找到对应的工具进行更新,根据提示缺少的API进行更新。但由于Google被封禁,更新过程可能会比较慢。