【UE4】Vivo X30 Unmount pak会闪退
问题:
在游戏逻辑中有需要Unmount pak。 代码一直都运行没问题,直到最近在机缘之下,发现这操作会导致Vivo X30闪退, 测了其他华为、小米、1+、iPhoneX都没问题。
其实准确的说并不一定是unmount导致的闪退。 下面看看代码是怎样的?
UnMountPak Visitor;
FString FullFilePath = FPaths::ConvertRelativePathToFull(FPaths::ProjectPersistentDownloadDir());
FPlatformFileManager::Get().GetPlatformFile().IterateDirectoryRecursively(*FullFilePath, Visitor);
//TODO 测试Vivo手机为什么崩溃
/*PakMgr* PakMgr = PakMgr::Get();
PakMgr->UnMountPak(TEXT("xxx.pak"));*/
用绿色的代码,去遍历整个目录,然后发现需要unmount的pak就处理。 会导致闪退。为了证实是不是unmount的问题,使用了黄色代码。什么也没发生。
由于代码逻辑本身有问题,就没有去深究为什么会Crash。有可能只指针问题(unmount会有delete操作),有可能是多线程问题。
还有一个条件,此时可能在openLevel。
好了,我现在得去改逻辑了。此处记录Crash的情况。