setSearchPaths平台表现不一致

3.11.1引擎,lua项目,热更新是在c++中完成的,所以热更新场景是在c++中创建的。

现在的问题是:lua创建的场景在各平台都正确更新了,但是热更新场景在Windows平台表现正常,在手机平台则没有更新……

1.根据打印来看,全平台都正确设置了searchPaths;
2.根据下载日志来看,全平台都是正确下载了所有资源的;
3.调用fullPathForFilename(热更新场景)打印出来的信息显示,Windows平台返回的是热更新目录(目录名为target)下的,而Android平台是assets目录下的,以下是日志:
Windows平台:
D:/Hometown/frameworks/runtime-src/proj.win32/…/…/…/target/res/csd_1334_750/UpgradeScene/UpgradeLayer.csb
Android平台:
08-03 15:24:20.430: D/cocos2d-x debug info(11406): assets/res/csd_1334_750/UpgradeScene/UpgradeLayer.csb

重启程序后,手机平台的热更新场景还是显示为上个版本的,请问我该怎么处理做?
@minggo

你是怎么设置searchPaths的?fullPathForFilename会根据设置的搜索路径的顺序搜索的。

auto fileUtil = FileUtils::getInstance();
auto searchPath = fileUtil->getSearchPaths();
searchPath.insert(searchPath.begin(), “src”);
searchPath.insert(searchPath.begin(), “res”);
if (needUpdate) {
searchPath.insert(searchPath.begin(), “target/src”);
searchPath.insert(searchPath.begin(), “target/res”);
searchPath.insert(searchPath.begin(), “target”);
}
fileUtil->setSearchPaths(searchPath);

这是在appdelegate里添加的代码

searchPath设置的要是绝对路径,否则会当成相对于Resources的路径来处理。在Android下就是相对于assets路径来设置了。

这样啊,那我试试,谢谢了!

热更新的话应该是在 FileUtils::getInstance()->getWritablePath() 这个目录下更新文件 不应该在 Resources 中更新 Resources在安卓就相当于assets 而assets 是一个压缩文档是不可写的