Android 在应用程序更新时丢失保存的数据

Android 在应用程序更新时丢失保存的数据,android,unity3d,Android,Unity3d,在创建我的Unity3D应用程序的新版本时,我测试了在商店安装的应用程序上加载新版本。侧面加载的应用程序无法再从应用商店版本中找到从中保存的文件 似乎问题在于两个应用程序版本之间的Application.persistentDataPath有所不同 在BuildSettings下: Install Location: Prefer External Write Access: Internal Only AndroidManifest.xml似乎没有关于安装位置/写入访问位置的信息 我

在创建我的Unity3D应用程序的新版本时,我测试了在商店安装的应用程序上加载新版本。侧面加载的应用程序无法再从应用商店版本中找到从中保存的文件

似乎问题在于两个应用程序版本之间的Application.persistentDataPath有所不同

在BuildSettings下:

Install Location: Prefer External
Write Access:     Internal Only
AndroidManifest.xml似乎没有关于安装位置/写入访问位置的信息

我不介意将安装位置更改为强制内部,如果这有助于此更新和/或将来。但我不确定这种设置的作用

我使用C#的XMLSerializer保存XML文件,然后使用Application.persistentDataPath将它们写入文件流

XmlSerializer serializer = new XmlSerializer(typeof([CLASS]));
FileStream stream = new FileStream( Application.persistentDataPath + "/[FILENAME].xml", FileMode.Create);    
serializer.Serialize( stream, [OBJECT]);    
stream.Close();

您可以尝试在PlayerPrefs中保存XML字符串,如下所示:

PlayerPrefs.SetString("SaveGameName", yourXML);
这样做:

myxml = PlayerPrefs.GetString("SaveGameName");
在过去,PlayerPrefs类在持久数据方面对我来说工作得很好。我知道,即使您从应用商店安装了新版本,这些数据仍然存在


这是上面的文档。

您使用什么代码保存数据?PlayerPrefs通常对我来说很好。修改问题以包含更多细节。谢谢你的提问,我忘了我很早就不用PlayerPrefs了。哦,我知道你不能像你在评论中说的那样使用PlayerPrefs。不确定在这种情况下如何避免此问题。理论上,Application.persistentDataPath将允许我将文件保存在类似的位置。然而,它似乎随着更新而改变。我同意你的观点,这是令人困惑的。我在文档中看到,包标识符构成了路径的一部分。可能是这个身份证变了吗?我不记得应用商店是否允许您上传具有不同捆绑包ID的构建。从文档中可以看出:“如果您在未来版本中保留相同的捆绑包标识符,则应用程序将在每次更新时继续访问相同的位置。”捆绑包标识符是一致的。