旧主题再发一遍(原主题答案并不是我想要的):
传送门:如何让Android使用Flavors制作渠道包不用ndk重编译?
Creator 版本:Creator3.7.3
我们的Android工程定义了不同的flavors,来打包不同的渠道sdk,定义如下:
这些flavors,仅仅用于安卓部分,接入不同的安卓sdk,根据不同渠道,做不同处理。
原生引擎部分编译,就是cocos自带的cmake编译

现在问题来了,每个渠道打包,引擎原生代码都会编译一遍。然后生成一个对应的xxxRelease目录,这样相当费时,而且没有必要。
因为我们没有修改任何引擎原生代码。每一次重新编译的代码都是一模一样的。

传送门里面答案提到的使用预打包好的.so文件,直接拷贝,而不再执行externalNativeBuild,这种解决方案有两个问题,
1,Creator自带的功能模块裁剪不再生效,包体会增大。
2,不够通用,当不同的项目,使用了不同的物理引擎,这个so就没法通用了,而且根据我的经验,如果使用通用.so,spine模块勾选了的情况下,dragonbones也必须勾选,不然安卓会报错。这种方案存在一定的风险。如下图展示了多种.so可能,且无法通用的情况。
所以,重点来了
我的问题是,有没有办法,让externalNativeBuild(原生编译 cmake or ndk),不论定义了多少个flavor,
永远只有两个编译目录,relase和debug。所有flavors共享。原生编译并不为flavors做区分???
我认为的最理想的方案
对于每个Creator3D项目,在勾选完功能裁剪之后,原生引擎(c++)代码,只需要编译一遍就可以了。
后面再打包,不再重新反复编译。






