记录使用cocos2d-js编译android程序中所遇到的一些问题

在不熟悉的环境上开发应用程序时选对一个好的开发平台真的很重要,下面由我用学校机房32位win7系统开发cocos2d跨平台编译安卓游戏所遇到的坑来做一个记录总结。

首先引用一句大家都比较熟悉的话“工欲善其事,必先利其器”,开发程序的第一步当然就是搭建环境啦,这一章也确实是讲在搭建环境的过程中所遇到的问题的一些解决方案。

要编译安卓平台的应用程序,需要下载JDK,NDK以及SDK,除了SDK外直接百度应该都能下载到。下载SDK需要FQ,不过这几天(6月3日)由于未知原因“梯子”使不了,无奈只要借助万能的吧友下载了一个版本号为r24.1.1的SDK,大小差不多200MB,解压后目录如下图所示:

阅读完“SDK Readme”后知道需要运行SDK Manager来下载软件资源,需要注意的是运行之前要先配置好java环境,不然该程序会一闪而过,什么也不会发生。我这里选择安装JDK1.8,所以需要添加运行路径(C:\Program Files\Java\jdk1.8.0_211\bin)到环境变量,然后运行SDK Manager:

 

全部默认安装即可。为了方便管理,我将sdk和ndk都解压到了d:/android目录下,开始安装cocos2d-x,顺带一提,这里使用的cocos版本为3.17.2,然后进入cocos解压目录,运行python setup.py,依次输入ndk和sdk的解压路径来完成安装,我这里已经设置好了,所以运行截图如下:

然后建立一个cocos2d-x工程,由于我习惯于使用js语言,所以在web目录下建立了一个cocos2d-js工程取名为game,其他工程类型或目录也都可以。

进入工程目录,运行cocos compile -p android:

需要下载gradle,后面也还有一堆需要下载的软件包,请保持网络连接默认安装。然后配置过程中报错了,从控制台信息中可以看出是缺少licences:

解决方案是进入sdk/tools/bin目录可以看到有一个sdkmanager批处理文件,在这个位置运行命令sdkmanager "build-tools;27.0.3",然后输入“y”同意授权:

然后重新编译。又出错了,提示缺少cmake工具,可能是因为我这个sdk最初不是从谷歌官网上下载的吧?去cmake官网下载,由于我这里使用的是32位系统,所以下载了cmake-3.14.5-win32-x86软件包,看控制台给出的信息知道要将cmake解压到sdk目录下:

继续编译。还是出错,这次的原因没看明白(还没开始学android开发。。。),控制台给出的信息是:com.android.ide.common.process.ProcessException: Error configuring:

好吧,搜索引擎是最好的老师,百度一下发现说各种原因的都有,于是乎具体问题具体分析,把控制台往上翻翻看第一个错出在哪里?找到第一个问题:

貌似是缺少一个叫android_gradle_build.json的文件,于是系统决定生成一个,然后又遇到下一个问题:缺少ninja文件:

于是去百度一下ninja,原来它是一个编译工具,官网有给出github链接,去下载即可。不过直接下载到的是64位的可执行程序,我这里32位环境下只能先下载它的源码再编译了,下载的版本是ninja-1.9.0,进入解压目录一看貌似是使用python进行编译的:

一个好的习惯是先看一下README.md文件。

在目录下运行命令python configure.py --bootstrap来编译程序,详细信息在HACKING.md文件。先试试直接编译吧:

好吧,直接报错,好像是一个函数msvc_needs_fs的原因,打开源码一看原来是缺少c++编译环境,可以选择微软的编译工具msvc或者GNU编译工具mingw。考虑到学校电脑没有安装visual studio而蓝桥杯竞赛安装了dev-cpp,于是进入dev-cpp安装目录下果然找到了mingw,于是将~\mingw\bin路径添加到环境变量。

通过阅读configure.py源码知道可加入--platform参数来指定编译平台(Platform构造函数):

于是在ninja解压目录下重新打开cmd,运行命令python configure.py --bootstrap --platform mingw编译成功!

要使用生成的ninja.exe,需要添加到环境变量,于是我将它移到了sdk\cmake\bin目录下并将该目录添加到了环境变量(也可以是其他目录)。然后重新编译cocos,发现问题并没哟解决。。。

参考一博客文章将cocos工程下frameworks\runtime-src\proj.android\build.gradle文件的classpath 'com.android.tools.build:gradle:3.1.0'改为classpath 'com.android.tools.build:gradle:3.2.1'成功解决,然而又出现新的问题:

根据提示知道ndk/toolchains/llvm/prebuilt/windows-x86_64目录并不存在,看来ndk编译安卓平台默认是使用64位的啊,要完成编译,找到ndk目录下build\cmake\android.toolchain.cmake文件,查找ANDROID_HOST_TAG,将set(ANDROID_HOST_TAG windows-x86_64)改为set(ANDROID_HOST_TAG windows):

最后编译cocos,共772个目标文件。

Cocos官方建议使用android-studio集成开发环境来编译发布安卓平台,要使用命令行工具也建议选择64位系统,不然就会像我一样遇到各种坑爹的问题。每个人因为开发环境的不同遇到的问题也会不一样,不过解决问题的方法都是相通的,写这篇博客的时候我还是在校本科生,编程能力和经验都不足,这可能并不是一个好的解决问题的方法,但还是希望这篇博客能够帮助到和我遇到同样问题的人。

猜你喜欢

转载自www.cnblogs.com/viewts/p/10964050.html
今日推荐