请教加密资源后自定义引擎的具体流程

  • Creator 版本:2.4.6
  • 目标平台: Android / 引擎自带调试的网页浏览器

情景需求:
针对加密资源而写了一个加密工具后,对所有的项目资源进行加密。

加密工具的说明是需要替换C:\ProgramData\Cocos\editors\Creator\2.4.6\resources\cocos2d-x\cocos\platform\文件夹下的CCFileUtils.cpp CCFileUtils.h CCImage.cpp三个文件的。
根据自定义引擎的文档中的说法,我的操作如下:
1.复制C:\ProgramData\Cocos\editors\Creator\2.4.6\resources\cocos2d-x文件夹为C:\ProgramData\Cocos\editors\Creator\2.4.6\resources\cocos2d-xDIY;
2.覆盖上述三个文件,因为不需要定制 JavaScript 引擎,所以这个步骤跳过,直接进入 定制 Cocos2d-x 引擎的步骤;
3.这里产生第一个疑问,文档原文【
2.2 初始化
下载或者克隆好 Cocos2d-x 引擎仓库后,在命令行进入引擎路径然后执行以下命令。

注意 :如果是从编辑器拷贝出来的内置 cocos2d-x 目录,可以跳过该步骤。

按照这里的说明,我是直接复制了cocos2d-x文件夹,按道理我是不需要执行后续的gulp init的,
我尝试了一下,cmd报错,如下:


ReferenceError: primordials is not defined
at fs.js:42:5
at req_ (D:\programs\creatorDir\2.4.6\resources\cocos2d-xDIY\node_modules\natives\index.js:143:24)
at Object.req [as require] (D:\programs\creatorDir\2.4.6\resources\cocos2d-xDIY\node_modules\natives\index.js:55:10)
at Object. (D:\programs\creatorDir\2.4.6\resources\cocos2d-xDIY\node_modules\vinyl-fs\node_modules\graceful-fs\fs.js:1:37)
at Module._compile (node:internal/modules/cjs/loader:1254:14)
at Module._extensions…js (node:internal/modules/cjs/loader:1308:10)
at Module.load (node:internal/modules/cjs/loader:1117:32)
at Module._load (node:internal/modules/cjs/loader:958:12)
at Module.require (node:internal/modules/cjs/loader:1141:19)
at require (node:internal/modules/cjs/helpers:110:18)

4.忽视上述报错直接继续下一步: 2.3 在 Cocos Creator 中配置定制版引擎,
仅仅只是设置一下文件夹,已操作。
5.文档原文【
2.4 修改引擎
接下来可以对 Cocos2d-x 引擎进行定制修改了,由于只有在 构建发布 过程中才会编译代码,所以修改引擎后可以直接打开 构建发布 面板,选择 default 或者 link 模板进行构建和编译。】
此处我使用的是link模板构建的。

我想要的需求目标:
1):在编辑器里面就能正常使用被加密的素材,显示的也是正常的图片
2):在引擎绑定的调试浏览器(常用:傲游浏览器 edge 谷歌浏览器)中调试时也能看到正常的素材
3):在代码中动态加载的素材也能在apk真机中正常的显示被加密的素材。

请问我还需要做什么操作才能达成我的目的?
自定义引擎的步骤中【 定制 Adapter】是否需要操作的?

目前的效果就是
1): 在引擎中无法正常显示拖放在编辑器面板的素材
日志窗口提示:[db-task][init] Failed to import asset D:\cocosProject\encDemo\assets\res\系统消息.png, message: Error: Input file contains unsupported image format

2):在网页中动态加载素材时提示:
The source image could not be decoded. Error: The source image could not be decoded.

3):真机apk中会自动退出且无法搜集到报错信息,猜测就是图片是加密的导致。

好悲催啊,没人来回复,这个问题不好自己调试啊
@jare 大佬能来指教一下吗?另外再请教一下 自动图集是不是也是调用TP打包的图集,为什么手动使用tp打包就会遇到半透明的图片在实际预览时会有黑边或者变模糊的情况的,能否说明一下自动图集的打包参数?

1.资源是构建之后处理,就不影响你的1,2点
2.所有文件都会走FileUtils::getStringFromFile和FileUtils::getDataFromFile,在这两个接口解密就行了。

现在使用了加密工具之后,原来的图片就不能在引擎里面使用了,打包apk后也不行的。

你要加密构建后的资源,不是加密原始资源 :worried:

谢谢,是我理解错了。
确实是应该加密构建后资源。

The source image could not be decoded. Error: The source image could not be decoded. 这个问题怎么解决的?

请问解决了么?我也遇到了能不能分享下方案啊

我之前用的工具没有了,那是别人写的半成品。你直接去cocos商店找啊,现在有很多了。以前是没几个。

是报错:The source image could not be decoded. Error: The source image could not be decoded. 这个问题,不是加密,我没有加密

你的图片是什么格式的,可能后缀名跟文件头不匹配吧,用hex十六进制工具打开看看吧

应该和这个没关系吧,我几个月以前打包都能用,现在什么都没改打出来就报错,另外一台电脑打包也能用

那就不清楚了。

感谢您 :grinning: