2.4.2加载远程Bundle里的资源报错

  • Creator 版本: 2.4.2

  • 目标平台: Android

  • 重现方式:重装或清理缓存之后第一次加载远程bundle并load其中的图片资源能够成功,之后杀进程,再次启动调用上述方法即报错

  • 首个报错:杀掉进程之后调用报错如下
    2020-08-26 17:54:59.265 13522-13565/com.qyqgames.demo2 D/cocos2d-x: find in flash memory dirPath(/data/user/0/com.qyqgames.demo2/files//gamecaches/remoteRES)
    2020-08-26 17:55:01.283 13522-13565/com.qyqgames.demo2 D/cocos2d-x: find in flash memory dirPath(/data/user/0/com.qyqgames.demo2/files//gamecaches/remoteRES)
    2020-08-26 17:55:01.359 13522-13565/com.qyqgames.demo2 E/jswrapper: ScriptEngine::onGetStringFromFile remoteRES/15984356597033.jsc not found, possible missing file.
    2020-08-26 17:55:01.359 13522-13565/com.qyqgames.demo2 E/jswrapper: ScriptEngine::runScript script remoteRES/15984356597033.jsc, buffer is empty!
    2020-08-26 17:55:01.359 13522-13565/com.qyqgames.demo2 E/jswrapper: [ERROR] Failed to invoke require, location: D:/QG_0706/QYQGame_ccscrt2.3.3/QYQGames/build/jsb-default/frameworks/cocos2d-x/cocos/scripting/js-bindings/manual/jsb_global.cpp:300
    2020-08-26 17:55:01.380 13522-13565/com.qyqgames.demo2 D/jswrapper: JS: icons/games/gamechose_194 is now remote loading
    2020-08-26 17:55:05.458 13522-13565/com.qyqgames.demo2 E/jswrapper: [ERROR] (D:/QG_0706/QYQGame_ccscrt2.3.3/QYQGames/build/jsb-default/frameworks/cocos2d-x/cocos/scripting/js-bindings/manual/jsb_global.cpp, 952): File (remoteRES/15984356597916.png) doesn’t exist!
    2020-08-26 17:55:05.458 13522-13565/com.qyqgames.demo2 E/jswrapper: [ERROR] Failed to invoke js_loadImage, location: D:/QG_0706/QYQGame_ccscrt2.3.3/QYQGames/build/jsb-default/frameworks/cocos2d-x/cocos/scripting/js-bindings/manual/jsb_global.cpp:979

  • 之前哪个版本是正常的: 清理缓存之后第一次调用的打印如下
    2020-08-26 17:54:19.600 13333-13376/com.qyqgames.demo2 D/cocos2d-x: find in flash memory dirPath(/data/user/0/com.qyqgames.demo2/files//gamecaches/remoteRES)
    2020-08-26 17:54:19.581 13333-13333/com.qyqgames.demo2 W/com.qyqgames.demo2: type=1400 audit(0.0:1659003): avc: denied { read } for comm=474C546872656164203338343436 name="/" dev=“dm-8” ino=2 scontext=u:r:untrusted_app:s0:c150,c258,c512,c768 tcontext=u:object_r:rootfs:s0 tclass=dir permissive=0
    2020-08-26 17:54:19.758 13333-13376/com.qyqgames.demo2 D/jswrapper: JS: icons/games/gamechose_194 is now remote loading
    2020-08-26 17:54:19.826 13333-13376/com.qyqgames.demo2 D/jswrapper: JS: [object Object]

  • 手机型号:

  • 手机浏览器:

  • 编辑器操作系统:

  • 重现概率:


这是调用的方法,两次都是调用同样的nativeTest

你这个问题是资源缓存路径没拼接对,你是不是自定义过 jsb-adapter 里面的内容?


资源路径都是不对的

我确认过了,没有的
但是我有添加热更新插件

@EndEvil

你能找到缓存目录下的 gamecaches/cacheList.json 文件看看么?

手机上找不到对应文件

我估计肯定是远程包到资源导出到时候没设置对,导致资源丢了

包本身没有问题,在另一台机器上打的APK能正常使用
现在我想找的是本机打包第二次启动加载失败的原因

那你在运行的时候打印 cc.assetManager.cacheManager.cachedFiles._map 出来看下

d.ts和官方API里面都没有这个cacheFile

我也遇到了同样的问题,请问解决了吗?

遇到同样问题了,加载远程包 提示find in flash memory dirPath,目前还没解决,官方有人看下这个问题么

同样子 这是什么错好奇怪
Read json failed: path: http://usr/gamecaches/cacheList.json message: readFileSync:fail no such file or directory http://usr/gamecaches/cacheList.json

readJsonSync @ adapter-min.js? [sm]:1
init @ adapter-min.js? [sm]:1
cc.assetManager.init @ adapter-min.js? [sm]:1
window.boot @ main.js? [sm]:26
(anonymous) @ game.js? [sm]:27
O @ VM45 WAGameSubContext.js:1
(anonymous) @ VM63:1
doWhenAllScriptLoaded @ game.js:40
scriptLoaded @ game.js:55
script.onload @ game.js:63
load (async)
(anonymous) @ game.js:62
(anonymous)

我也遇到了,不过我是命令行打包的,image
我看了下缓存,的确没有这个文件夹。

但是用编辑器打包的话,就没有这个问题,目前也不知道哪里有问题
版本 cc3.7.2