热更新搜索路径添加错误

  • Creator 版本:2.2.2

  • 目标平台: Android

  • 详细报错信息,包含调用堆栈:

  • 重现方式:安卓首次热更新搜索路径添加错误

  • 之前哪个版本是正常的 :

  • 手机型号 :

  • 手机浏览器 :

  • 编辑器操作系统 :

  • 编辑器之前是否有其它报错 :

  • 出现概率:100%

  • 额外线索:

ios的FileUtils的defaultResRoot为“”,安卓为@assets,当Manifest的_manifestRoot为“”时会添加到搜索路径,
解决方法在Manifest的getSearchPaths和PrepenSearchPath函数内对_manifestRoot做.empty判断,如果为empty则不添加到搜索路径
一定要重视
一定要重视
一定要重视
!!!!!!!!!!

什么情况下 _manifestRoot 会为空字符串,可否给例子,我们参考下?

创建AsssetsManager如下:

let assetsManager = new jsb.AssetsManager("project.manifest", "update_path");

project.manifest如下,没有加searchPaths

{
  "packageUrl": "packageUrl",
  "remoteManifestUrl": "remoteManifestUrl",
  "remoteVersionUrl": "remoteVersionUrl",
  "version": "1.1.8.0"
}

然后再Manifest.cpp

std::vector<std::string> Manifest::getSearchPaths() const
{
    std::vector<std::string> searchPaths;
    // 此时_manifestRoot为“”
    if (!_manifestRoot.empty())
    {
        searchPaths.push_back(_manifestRoot);
    }
}

// prependSearchPaths的_manifestRoot同样为“”,需要加非空判断。
// 安卓:此时获取的资源路径就是游戏安装包所在路径,我看FileUtils会把“”,修改为@assets

加了非空判断