反馈个平台判断的bug

今天一天在研究游戏打包到oppo快游戏。然后发现个问题。
0.版本号是1.0.4版本
1.我的手机是小米手机,下载了oppo的快游戏安装到手机,然后将oppo的rpk放入到了手机的指定目录里。
2,使用cocos3D构建出来的rpk文件,我先手动的删除了。因为我要修改main.js文件。 修改完了之后,我用quickgame pack直接重新生成了一个rpk。
3.我写了如下的代码。

console.log('cc.sys.platform', cc.sys.platform);
console.log('cc.sys.OPPO_GAME', cc.sys.OPPO_GAME);

运行起来,在控制台输入如下。

cc.sys.platform, 3)
cc.sys.OPPO_GAME', undefine,

我观察了源代码。sys.ts里确实没有OPPO_GAME的定义,也没有 VIVO_GAME的定义。我怀疑是开发人员漏写了。但是.d.ts里的代码提示里却有。OPPO_GAME这个提示。对于打包出来的oppo-mini-game文件夹里的所有的文件,我都全局搜索了,也没有定义 这个OPPO_GAME的地方。

那么我推测有2种情况。
1.这是引擎组的疏漏。
2.使用cocos3D的构建面板里生成的rpk里的代码是对的。我删除了这个rpk,然后使用quickgame pack生成的rpk的代码里是错误的。如果是这种情况的下,会很麻烦。因为如果我需要对main.js或者manifest.json文件做修改的话。每次用编辑器构建都会把这写文件还原程最原始的版本。而且生成的rpk里也是这些原始版本。

@panda 手动召唤最强的大佬

你可以使用编辑器的构建模板功能来解决这个 每次用编辑器构建都会把这写文件还原程最原始的版本 的问题,详情可以参考文档 https://docs.cocos.com/creator3d/manual/zh/editor/publish/custom-project-build-template.html ,直接在对应平台模板目录下,将你需要覆盖的文件按照原始打包路径放置即可。

关于平台判断的宏定义,我们确实没有提供 OPPO vivo 的单独的宏定义使用,但他们有共享的宏定义 CC_RUNTIME_BASED 可供使用,这个宏定义只在 OPPO ,vivo ,华为快应用 和 CocosPlay 平台为 true。如果确实有平台细分的需求我们会考虑添加宏定义。

关键是creator.d.ts里导出的是有cc.OPPO_GAME这个东西的,容易让人掉坑里吧,智能提示是有的,但是实际运行起来却没有。

我们没有 creator.d.ts 文件啊?3d 只提供了 cc.d.ts ,你可能和 creator 搞混了的,之后可以添加具体的平台信息的,目前暂时是没有的。

还真是我搞错了,是2D的里边有oppo_game.3d的里边其实是没有的

反馈一个 VIVO-MINI-GAME里的使用build-templates会造成的Bug。
1.在打包vivo小游戏的时候,生成的rpk里有一个 src/main.js的文件。
2.当我想要希望自定义这个 src/main.js里的文件,我尝试build-templates下创建一个 src/main.js和 根目录下直接放一个main.js文件。在执行构建后,发现build/vivo-mini-game下的main.js文件是我自定义的。但是我打开dist/xxx.rpk里看到src/main.js下的文件还是原始的文件。
3.我感觉rpk里的src/main.js文件不知道是从哪里拷贝过来的
4.希望能给我个办法 暂时能让我自定义的main.js打包进去

这个问题我们会验证一下,手动修改方式为:构建完后,直接打开编辑器安装目录,找到 resources/tools/vivo-pack-tools 文件夹,在里面的 engine/main.js 修改内容,执行 npm run build/release 即可。

resources/tools/vivo-pack-tools 2.4之后的这个目录结构是改了吗,一直没找到。。。

3.0 或者 3D 版本的编辑器才是这个目录的

请问下2.4版本的这个目录是在哪