当前位置: 首页 > 知识库问答 >
问题:

沙马林。Android:如何在部署之前阻止Visual Studio删除应用程序的早期版本

法和安
2023-03-14

我正在迁移一个Android应用程序写在JavaXamarin。

旧应用程序(Java)在AccountManager和SQLite数据库中存储一些数据,我希望在现有用户安装新应用程序(Xamarin)作为更新时将其迁移到新格式,这样他们就不会丢失现有数据

我希望测试迁移代码,所以我在物理设备上安装了旧应用程序的一个版本,然后将新版本(更高版本)部署到同一设备上,但每次我这样做时,Visual Studio都会删除旧应用程序,然后再安装新应用程序,这使得无法调试迁移代码(包含数据的AccountManager条目在启动前卸载旧版本时即被取消)。

在这里发布之前,我做了一些尝试:

>

启用快速部署

似乎什么都不管用——我只需要在部署之间保留数据,这样我的迁移代码就有机会运行了。

如果相关的话,我正在使用Visual Studio 2017 for Mac

共有3个答案

爱博达
2023-03-14

解决这个问题的一个方法是使用Crashlytics的测试工具,答案如下:https://stackoverflow.com/a/46155893/4855062

彭嘉赐
2023-03-14

如果所有这些都失败了,您可能只需将测试版发布到playstore并从那里下载即可

我认为你可以做的是(尽管我自己从未尝试过)你可以更改一个应用程序的applicationId,这样两个应用程序将同时出现在你的手机中。然后,由于两个应用程序的底层文件结构应该相同,您可以将以前版本的存储内容复制到当前版本

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.mynewversion"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 2
        versionName "1.0001"
    }
邵兴怀
2023-03-14

我认为有两件不同的事情:

部署时,Visual Studio从不更新,而是卸载,然后重新安装应用程序。乔纳森·普赖尔在2017年解释了这一点,今天仍然如此。据我所知,没有办法改变这一点,但这通常不是问题,因为您可以选择保留数据(VS使用然后adb卸载-k)。

另一方面,如果您构建了一个发布版APK,并使用adb install-r安装它,那么您使用的更新机制与将用于在用户设备上部署应用程序的更新机制完全相同。您的迁移代码将被执行,如果不执行,这只意味着它无法工作。

 类似资料:
  • 我有一个使用Firebase实时数据库的应用程序。该应用程序只接收来自数据库的文本,并将其显示在屏幕上。当我发布一个更新的版本时,我怎样才能让以前的版本停止工作,怎样才能强迫用户更新?

  • 情况如下: 我使用maven和cargo plugin将web应用程序自动部署到不同的环境中,使用Hudson运行/调度作业来完成这项工作。我使用tomcat作为目标应用程序容器。 但是我想找到最好的方法来备份部署的Web应用程序到某个网络/FTP位置,在maven/货物部署最新版本之前。我一直在寻找一些有助于做类似事情的maven插件,但似乎像这样的任务超出了maven的范围。此外,我正在寻找一

  • 假设一个线程在条件变量上阻塞: 互斥锁被解锁,尝试锁定互斥锁的其他线程被解锁: 同时还有另一个线程正在等待获取关键部分的所有权: 现在的问题是:调用pthread_cond_signal()时,是否保证pthread_cond_wait()[1]将在pthread_mutex_lock()[2]之前解除阻塞? POSIX规范似乎没有说明这种情况。

  • 在Intellij中,可以在同一端口上同时部署多个应用程序(部署在Tomcat实例中配置的应用程序)。在Tomcat start上应该部署的应用程序列表中,您在哪里添加/删除应用程序? Intellij文档这么说,但我找不到它描述的是什么文件。 除其他外,Tomcat配置文件可能会列出应在服务器启动时部署的应用程序。

  • 有谁知道是否可以使用 Xamarin.Forms 创建卡视图样式(可滚动)列表?我们需要它在iOS和Android上呈现相同的效果。还需要调整阴影等属性(以略微抬高每张卡)

  • 我似乎找不到任何关于如何在我的IBM Social Business SmartCloud站点中注册/部署应用程序的文档。这是在他们的云服务器上,而不是我自己的本地主机上。 我使用IBM SmartCloud Engage演示帐户订阅创建了一个Admin AppDeveloper用户帐户。我基本上是在尝试将HelloWorld iWidget添加到某个应用程序菜单中,但找不到注册/添加的位置,因此