-
Creator 版本:1.9.1
-
目标平台: android和ios
-
详细报错信息,包含调用堆栈:
-
重现方式:
-
之前哪个版本是正常的 :
-
手机型号 :
-
手机浏览器 :
-
编辑器操作系统 :
-
编辑器之前是否有其它报错 :
-
出现概率:
-
额外线索:
Creator 版本:1.9.1
目标平台: android和ios
详细报错信息,包含调用堆栈:
重现方式:
之前哪个版本是正常的 :
手机型号 :
手机浏览器 :
编辑器操作系统 :
编辑器之前是否有其它报错 :
出现概率:
额外线索:
main.js里面设置搜索路径没有
有设置,奇怪的是,更新完不是会自动重启吗,自动重启后,是新版本。如果我把游戏关掉,后台也关了,重新打开,就又回到旧版本,又提示我更新
看看下载下来的资源被删掉了没有, AssetsManager 有些情况下会删除掉热更新的资源.
请问解决了吗?我用的版本是v2.3.3
跟你情况一样
路径有设置也有值,但还是开起旧版本
照理说更新完自动重启成功,就代表 jsb.fileUtils.setSearchPaths 这里的路径是没毛病的
但是退出应用在开启就不行,感觉是路径问题他抓不到更新档,但是为什么自动重启就没问题
重启我也是用官网的方式写
this._am.setEventCallback(null);
this._updateListener = null;
// Prepend the manifest’s search path
var searchPaths = jsb.fileUtils.getSearchPaths();
var newPaths = this._am.getLocalManifest().getSearchPaths();
Array.prototype.unshift.apply(searchPaths, newPaths);
// This value will be retrieved and appended to the default search path during game startup,
// please refer to samples/js-tests/main.js for detailed usage.
// !!! Re-add the search paths in main.js is very important, otherwise, new scripts won’t take effect.
cc.sys.localStorage.setItem('HotUpdateSearchPaths', JSON.stringify(searchPaths));
jsb.fileUtils.setSearchPaths(searchPaths);
cc.audioEngine.stopAll();
cc.game.restart();
你打印一下设置好的路径,看看第一搜索路径是啥
解决了,发现每次开启app 时路径会改变,要重新设定,还要放在array 里面才能执行
main.js
if (typeof window.jsb === ‘object’) {
var hotUpdateSearchPaths = localStorage.getItem(‘HotUpdateSearchPaths’);
if (hotUpdateSearchPaths) {
var path = ((jsb.fileUtils ? jsb.fileUtils.getWritablePath() : ‘/’) + “filename/”);
var paths = [];
paths.push(path);
jsb.fileUtils.setSearchPaths(paths);
}
}
我也出现你这样的问题,但是main.js 无法改变,因为热更新插件问题。热更新插件在构建项目的时候 就自动修改了main.js 导致我之前修改的无效了
第一张图 输出路径是更新完成重启后的,是正确的
第二张图 是关掉程序 在打开读取到的路径
hotupdate 更新后代码
if (needRestart) {
this._am.setEventCallback(null);
this._updateListener = null;
// Prepend the manifest’s search path
var searchPaths = jsb.fileUtils.getSearchPaths();
var newPaths = this._am.getLocalManifest().getSearchPaths();
console.log(JSON.stringify(newPaths));
Array.prototype.unshift.apply(searchPaths, newPaths);
// This value will be retrieved and appended to the default search path during game startup,
// please refer to samples/js-tests/main.js for detailed usage.
// !!! Re-add the search paths in main.js is very important, otherwise, new scripts won’t take effect.
cc.sys.localStorage.setItem(‘HotUpdateSearchPaths’, JSON.stringify(searchPaths));
jsb.fileUtils.setSearchPaths(searchPaths);
cc.audioEngine.stopAll();
cc.game.restart();
}
main.js 是v2 插件自动生成的
main.js第一句应该就把搜索路径设置好. 别在中间设置
经过无数次改动 , 你是对的。其实这是V2版插件的小bug 再2.3.4 版本下 应该加在引入基础包后面就OK了 避免大家踩坑 我发出来,以后做参考 main.js 最下面
if (window.jsb) {
var isRuntime = (typeof loadRuntime === ‘function’);
if (isRuntime) {
require(‘src/settings.js’);
require(‘src/cocos2d-runtime.js’);
if (cc && cc.sys.isNative) {
var hotUpdateSearchPaths = cc.sys.localStorage.getItem(‘HotUpdateSearchPaths’);
if (hotUpdateSearchPaths) {
jsb.fileUtils.setSearchPaths(JSON.parse(hotUpdateSearchPaths));
console.log(’[main.js] 热更新SearchPath: ’ + JSON.parse(hotUpdateSearchPaths));
}else {
console.log(’[main.js] 未获取到热更新资源路径!’);
}
}else {
console.log(’[main.js] 不是native平台!’);
}
if (CC_PHYSICS_BUILTIN || CC_PHYSICS_CANNON) {
require(‘src/physics.js’);
}
require(‘jsb-adapter/engine/index.js’);
}
else {
require(‘src/settings.js’);
require(‘src/cocos2d-jsb.js’);
if (cc && cc.sys.isNative) {
var hotUpdateSearchPaths = cc.sys.localStorage.getItem(‘HotUpdateSearchPaths’);
if (hotUpdateSearchPaths) {
jsb.fileUtils.setSearchPaths(JSON.parse(hotUpdateSearchPaths));
console.log(’[main.js] 热更新SearchPath: ’ + JSON.parse(hotUpdateSearchPaths));
}else {
console.log(’[main.js] 未获取到热更新资源路径!’);
}
}else {
console.log(’[main.js] 不是native平台!’);
}
if (CC_PHYSICS_BUILTIN || CC_PHYSICS_CANNON) {
require(‘src/physics.js’);
}
require(‘jsb-adapter/jsb-engine.js’);
}
cc.macro.CLEANUP_IMAGE_CACHE = true;
window.boot();
}