打包不同的android项目,接入不同的渠道,native/engine/android这个目录如何处理?

86fa497133ec21820ab9a7b8d2414ae

creator3.8.6版本,打包不同的Android项目,项目目录下的这个android目录公用,

接入不同的平台,都改的是这里的代码,导致管理起来非常蛋疼,大家都是怎么玩的

其实想要的就是2x 版本jsb-default功能,不同的Android构建构建结果只复用assets的内容,剩下Android相关的都是独立的

1赞

你可以创建不同的分支嘛,用不同的分支去管理

1赞

我的方式是在工程目录建立sdk目录,里面根据渠道名称存放各自的native/engine/android。jenkins打包的时候根据渠道名称拷贝对应的目录文件。

你可以研究下安卓的build variant,专门处理这种问题的

多渠道打包,根据不同渠道读取不同的文件夹、不同的配置

改造CocosCreator3.x的安卓工程 类似于这个

再三确认了这个id,确定这个问题是你需要问的?

因为我想看看别人怎么做的,然后博采众长,为我所用,你的方案很好,可惜我也不接受


这2个帖子有类似的内容

原封不动复制一份android这个目录,修改为目录名为项目输出目录名(项目输出目录名不为android),然后修改gradle.properties中的NATIVE_DIR为复制出来的目录路径,后续通过插件每次构建的时候自动修改NATIVE_DIR

1赞

好主意,不错的办法

正解
其他不需要的SDK的资源或代码就不应该进入项目参与构建

接入不同的第三方sdk,都可以新建一个安卓库,对应的代码都放到对应的库中,需要用到哪些第三方sdk的时候就添加对应的库的引用即可,方便多个项目复用

我也是这么干的

主要是Activity的逻辑都不一样了,Android工程就不应该复用

库可以被Android工程复用,这个没毛病

自己写个后处理,每个构件任务拷贝一份native,再引用到原生工程去。

你直说,你是不是要Unity那种
如果只是你说的不同Activity,本质还是多渠道的问题,你把Activity放到不同文件夹就可以写不同的逻辑了

要求渠道A的Android包,不能包含任何渠道B的SDK内容,所有渠道公用一个Android工程,我还真不知道怎么玩,最简单又好维护的办法就是NATIVE_DIR的方案

我是Android开发转行过来 Cocos的

  1. 首先你要摒弃Cocos现在的Android项目架构设计,将所有设计到的目录尽可能合并到同一个目录,然后按照官方Android目录那样子去组织你新处理的目录
  2. 不同 sdk 的接入封装好,并单独一个 library (Android 概念上的)
  3. 不同渠道依赖不同的 library
  4. 不同构件渠道的 Android 包,准备一份json配置(描述本次构建接入了/启用了什么 library),然后构建后,ts 运行起来后,读取这份配置,从而清晰知道本次运行环境,提供了什么原生能力,按照提供了什么来处理
  5. 第4点这里,有点类似 微信的wx 和抖音的 tt,只不过是他们运行后就帮你注入,而现在,你在Android上跑,你可能需要自己实现这一块,当然没必要完全一样,主要还是负责这个渠道包提供了什么原生能力

你还是搜下安卓的多渠道打包吧,包括我第一条回复的,你可以根据配置,读取指定的文件夹内容,和你的指定native是一个意思,只不过可以直接借用android studio的多渠道能力。

我文中也提到了,我一个工程可以出hmov还有海外渠道的包,自然他们的逻辑不一样,也不可能会引用其它渠道的依赖