2.3.2热更新第一次正常,第二个划掉在进去久是老的资源

iOS 热更新 真机调试
if (typeof window.jsb === ‘object’) {
var hotUpdateSearchPaths = localStorage.getItem(‘HotUpdateSearchPaths’);
if (hotUpdateSearchPaths) {
var paths = JSON.parse(hotUpdateSearchPaths);
jsb.fileUtils.setSearchPaths(paths);
console.log(“path=”,JSON.stringify(jsb.fileUtils.getSearchPaths()));
var fileList = [];
var storagePath = paths[0] || ‘’;
var tempPath = storagePath + ‘_temp/’;
var baseOffset = tempPath.length;
if (jsb.fileUtils.isDirectoryExist(tempPath) && !jsb.fileUtils.isFileExist(tempPath + ‘project.manifest.temp’)) {
jsb.fileUtils.listFilesRecursively(tempPath, fileList);
fileList.forEach(srcPath => {
var relativePath = srcPath.substr(baseOffset);
var dstPath = storagePath + relativePath;
if (srcPath[srcPath.length] == ‘/’) {
cc.fileUtils.createDirectory(dstPath)
}
else {
if (cc.fileUtils.isFileExist(dstPath)) {
cc.fileUtils.removeFile(dstPath)
}
cc.fileUtils.renameFile(srcPath, dstPath);
}
})
cc.fileUtils.removeDirectory(tempPath);
}
}else
{
console.log(“没有对应的热更新目录”);
}
}

window.boot = function () {
var settings = window._CCSettings;
window._CCSettings = undefined;
console.log(“settings=”,JSON.stringify(settings));
cc.HallAndSubGameGlobal = cc.HallAndSubGameGlobal || {};
if ( !settings.debug ) {
var uuids = settings.uuids;

    var rawAssets = settings.rawAssets;
    var assetTypes = settings.assetTypes;
    var realRawAssets = settings.rawAssets = {};
    for (var mount in rawAssets) {
        var entries = rawAssets[mount];
        var realEntries = realRawAssets[mount] = {};
        for (var id in entries) {
            var entry = entries[id];
            var type = entry[1];
            // retrieve minified raw asset
            if (typeof type === 'number') {
                entry[1] = assetTypes[type];
            }
            // retrieve uuid
            realEntries[uuids[id] || id] = entry;
        }
    }

    var scenes = settings.scenes;
    for (var i = 0; i < scenes.length; ++i) {
        var scene = scenes[i];
        if (typeof scene.uuid === 'number') {
            scene.uuid = uuids[scene.uuid];
        }
    }

    var packedAssets = settings.packedAssets;
    for (var packId in packedAssets) {
        var packedIds = packedAssets[packId];
        for (var j = 0; j < packedIds.length; ++j) {
            if (typeof packedIds[j] === 'number') {
                packedIds[j] = uuids[packedIds[j]];
            }
        }
    }

    var subpackages = settings.subpackages;
    for (var subId in subpackages) {
        var uuidArray = subpackages[subId].uuids;
        if (uuidArray) {
            for (var k = 0, l = uuidArray.length; k < l; k++) {
                if (typeof uuidArray[k] === 'number') {
                    uuidArray[k] = uuids[uuidArray[k]];
                }
            }
        }
    }
}

function setLoadingDisplay () {
    // Loading splash scene
    var splash = document.getElementById('splash');
    var progressBar = splash.querySelector('.progress-bar span');
    cc.loader.onProgress = function (completedCount, totalCount, item) {
        var percent = 100 * completedCount / totalCount;
        if (progressBar) {
            progressBar.style.width = percent.toFixed(2) + '%';
        }
    };
    splash.style.display = 'block';
    progressBar.style.width = '0%';

    cc.director.once(cc.Director.EVENT_AFTER_SCENE_LAUNCH, function () {
        splash.style.display = 'none';
    });
}

var onStart = function () {
    cc.loader.downloader._subpackages = settings.subpackages;

    cc.view.enableRetina(true);
    cc.view.resizeWithBrowserSize(true);

    if (cc.sys.isBrowser) {
        setLoadingDisplay();
    }

    if (cc.sys.isMobile) {
        if (settings.orientation === 'landscape') {
            cc.view.setOrientation(cc.macro.ORIENTATION_LANDSCAPE);
        }
        else if (settings.orientation === 'portrait') {
            cc.view.setOrientation(cc.macro.ORIENTATION_PORTRAIT);
        }
        cc.view.enableAutoFullScreen([
            cc.sys.BROWSER_TYPE_BAIDU,
            cc.sys.BROWSER_TYPE_WECHAT,
            cc.sys.BROWSER_TYPE_MOBILE_QQ,
            cc.sys.BROWSER_TYPE_MIUI,
        ].indexOf(cc.sys.browserType) < 0);
    }

    // Limit downloading max concurrent task to 2,
    // more tasks simultaneously may cause performance draw back on some android system / browsers.
    // You can adjust the number based on your own test result, you have to set it before any loading process to take effect.
    if (cc.sys.isBrowser && cc.sys.os === cc.sys.OS_ANDROID) {
        cc.macro.DOWNLOAD_MAX_CONCURRENT = 2;
    }

    function loadScene(launchScene) {
        cc.director.loadScene(launchScene,
            function (err) {
                if (!err) {
                    if (cc.sys.isBrowser) {
                        // show canvas
                        var canvas = document.getElementById('GameCanvas');
                        canvas.style.visibility = '';
                        var div = document.getElementById('GameDiv');
                        if (div) {
                            div.style.backgroundImage = '';
                        }
                    }
                    cc.loader.onProgress = null;
                    console.log('Success to load scene: ' + launchScene);
                }
                else if (CC_BUILD) {
                    setTimeout(function () {
                        loadScene(launchScene);
                    }, 1000);
                }
            }
        );

    }

    var launchScene = settings.launchScene;

    // load scene
    loadScene(launchScene);

};

// jsList
var jsList = settings.jsList;

var bundledScript = settings.debug ? 'src/project.dev.js' : 'src/project.js';
if (jsList) {
    jsList = jsList.map(function (x) {
        return 'src/' + x;
    });
    jsList.push(bundledScript);
}
else {
    jsList = [bundledScript];
}

var option = {
    id: 'GameCanvas',
    scenes: settings.scenes,
    debugMode: settings.debug ? cc.debug.DebugMode.INFO : cc.debug.DebugMode.ERROR,
    showFPS: settings.debug,
    frameRate: 60,
    jsList: jsList,
    groupList: settings.groupList,
    collisionMatrix: settings.collisionMatrix,
};

// init assets
cc.AssetLibrary.init({
    libraryPath: 'res/import',
    rawAssetsBase: 'res/raw-',
    rawAssets: settings.rawAssets,
    packedAssets: settings.packedAssets,
    md5AssetsMap: settings.md5AssetsMap,
    subpackages: settings.subpackages
});

cc.game.run(option, onStart);

};

if (window.jsb) {

 var isRuntime = (typeof loadRuntime === 'function');
  if (isRuntime) {
      require('src/settings.js');
      require('src/cocos2d-runtime.js');
      require('jsb-adapter/engine/index.js');
  }
  else {
        console.log("fullPathForFilename:"+jsb.fileUtils.fullPathForFilename("src/settings.js"));
    console.log("path=",JSON.stringify(jsb.fileUtils.getSearchPaths()));
      require('var/mobile/Containers/Data/Application/569147BE-6267-4795-B68A-E6E4511F30E1/Documents/update/hall/src/settings.js');
      require('src/cocos2d-jsb.js');
      require('jsb-adapter/jsb-engine.js');
  }

cc.macro.CLEANUP_IMAGE_CACHE = true;
window.boot();

}
//这里路径为什么只能读到包里面的settings.js 服务器上已经下载了 因为第一次更新进去所有的都是正常的 划掉重新打开就用老的资源。我看路径什么的 都加进去了 唯一的区别就是没有restart() 找了好久 那位高人解答下。或者是哪里疏忽了

你main.js里面加了搜索路径没有

加了。好像在setting之前。要加上可写路径+“src/setting。js” 才是正常的。不知道为什么
var hotUpdateSearchPaths = localStorage.getItem(‘HotUpdateSearchPaths’);
if (hotUpdateSearchPaths) {
var paths = JSON.parse(hotUpdateSearchPaths);
jsb.fileUtils.setSearchPaths(paths); 这个我在main 执行boot 已经有了 也是有搜索路径的
不知道还是读包里面的setting 而且第一个搜索路径也是下载地址路径 所以不解。。。

解决方案: