Cocos Creator安卓编译加速扩展,告别电脑呼呼作响

你是否也会在编译原生app的时候,被那蜗牛般的进度条,呼呼作响的电脑风扇折磨得抓狂。每次修改代码进行真机调试的时候,编译时间慢,严重影响开发效率。如果你的机器是神一样的机器,编译速度毫无压力,那就另说!如果引入了第三方的原生sdk,编译起来速度可能会更慢。主要的原因是因为每次都要编译cocos2dx这个大家伙。一般情况下,这个编译出来的so库,是不会动的,除非你修改了cocos2dx源码。所以编译出来一次就可以重复利用,不需要每次都编译它。编译速度基本可以从几分钟缩减到几十秒内,根据每个人的电脑配置而定。原理就是这样,所以我们要先拿到编译好的库。

首先按照原来的步骤构建编译
1714059869589
勾选对应的平台,注意支持的平台越多,apk的包会越大。

按照原来的步骤构建编译

编译好之后去到工程的目录下的
build\jsb-link\frameworks\runtime-src\proj.android-studio\app\build\outputs\apk\debug
生成的apk包就是在这里。如果你生成的是release版的就在release那里。

1714060427994

1714060546408

1714060620155 1714060726100

下面我们把armeabi-v7a这个文件夹拷贝出来。以便后用。

然后我们删除掉项目里面的build目录。删除之后,点击构建,先不要点编译,然后去到安卓工程的根目录,在项目的
build\jsb-link\frameworks\runtime-src\proj.android-studio

1714061145543

把刚才拷贝出来的so库文件放在app目录中的lib文件夹里面。
1714061239489

然后用vsCode打开gradle.properties这个文件,增加PROP_NDK_MODE=none

1714061424727

然后我们去到app下的build.gradle打开来看看
1714061534446

1714061762660

这里了解一下工作原理即可,这个文件不需要修改。也可以直接注释这里,不让其运行也可以。就不需要设置PROP_NDK_MODE=none了,但是后面PROP_NDK_MODE=none要用到,所以还是直接设置这个属性来控制较为方便。

这样设置完成后,就可以点击编译了,你会发现十来秒就能编译成功了。
本质就是把提前编译好的库先提取出来,然后每次编译前手动放进去,然后再让其跳过NDK原生的编译。就是这么简单的原理。手动操作的方法就是这样。。。。。。。

但是,作为一个有追求的程序员,崇尚能用代码搞定的事情就尽量不手动,每次构建都要改文件再编译也是一件麻烦事。当然如果你构建一次,改了一次之后,每次都是只构建脚本,应该也不需要每次都改。

下面我们介绍怎么用扩展的方式实现自动化。首先你需要了解扩展的相关知识:

扩展相关

构建时会触发的相关事件

我们创建一个扩展
1714062471257

在packages里面创建一个名为fast-compile文件夹(名字随你喜欢),目录架构如下:
1714062714675

包含一个package.json描述文件和main.js入口文件。
先看描述文件:
1714062917276

另外我们需要把之前编译好的各平台的so库放进这里来,方便读取,如上面的armeabi-v7a

看main.js,这里要做的就是监听构建结束的事件,然后通过文件系统fs的相关api,以代码的方式拷贝文件和修改gradle.properties。
1714063977656

1714064707927

然后删掉build,重启Cocos Creator,点击构建,你会在Cocos Creator里面的控制台看到相应的提示。然后点击编译,火车般的进度条,露出满意的笑容…

注意,你构建的时候选了啥平台的就要把相应平台的库拷到扩展目录啊,然后在main.js里面list里面追加啊。不要那么懒照搬啊。。。。。。

另外要注意构建的时候勾选的如果是调试模式,就要用调试模式生成相关库,release模式就用release模式。理论上debug的库在release也能用,release的库在debug也能用,但是不同模式下,优化级别不同,把debug的库打包到release版本去就坑爹。安全起见,真正发布打包的时候,你可以删掉扩展,按照原步骤用蜗牛速度编译,毕竟辛苦了好几年,不在乎那几分钟,从千辛万苦中体验发包的快乐。。。。。

附件:扩展相关代码
fast-compile.zip (1.4 KB)

1赞

先收藏先,给楼主个赞

AndroidStudio正常编译都是有缓存的,第二次编译不用很久,可能是cocos定制的模板把缓存删除了,可以从这个角度修改,构建so后,调试源码不方便

确实,第一次构建编译之后,会有缓存,第二次速度会很快。但是不知为何,我的Cocos Creator,在release模式下,每次构建编译之后,在不删build的情况下,构建进行第二次编译,会报错。所以每次都需要清build,才会产生这样的需求。

大佬太牛了

从来不用cocos那个构建面板的编译,直接自己用as打开项目正常走打包流程就好了