我正在将一个用 Java 编写的 Android 应用程序迁移到 Xamarin。
旧应用程序 (Java) 将一些数据存储在 AccountManager 和 SQLite 数据库中,我希望在现有用户安装新应用程序 (Xamarin) 作为更新时将其迁移到新格式,这样他们就不会丢失他们现有的数据
我想测试迁移代码,所以我在物理设备上安装了旧应用程序的一个版本,然后将新版本(更高版本)部署到同一设备,但每次我这样做时,Visual Studio 在安装新应用程序之前删除旧应用程序,这使得无法调试迁移代码(包含数据的 AccountManager 条目在启动前卸载旧版本时被删除)。
在发帖之前我做了一些尝试:
我已启用“在应用程序部署之间保留数据/缓存”( https://forums.xamarin.com/discussion/96902/android-app-keeps-getting-uninstalled )
启用快速部署
似乎没有任何效果 - 我只需要在部署之间保留数据,以便我的迁移代码有机会运行。
如果相关的话,我正在使用 Visual Studio 2017 for Mac
最佳答案
我认为有两种不同的东西:
部署时,Visual Studio 从不更新而是卸载,然后重新安装应用程序。 Jonathan Prior 对此进行了解释 in 2017今天仍然如此。据我所知,没有办法改变它,但这通常不是问题,因为您可以选择保留数据(然后 VS 使用 adb uninstall -k)。
另一方面,如果您构建一个发布 APK,并使用 adb install -r 安装它,那么您使用的更新机制与将您的应用部署到用户身上时所使用的更新机制完全相同设备。您的迁移代码将被执行,如果没有则仅表示它不起作用。
关于android - Xamarin.Android : How to stop Visual Studio from removing the previous version of the app before deploying,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57142123/