当我更新我的应用程序时,本地文件会发生啥?

Posted

技术标签:

【中文标题】当我更新我的应用程序时,本地文件会发生啥?【英文标题】:What happens to local files when I update my app?当我更新我的应用程序时,本地文件会发生什么? 【发布时间】:2020-03-08 05:23:06 【问题描述】:

我有一个适用于 iosandroid 的应用程序,但我从未发布过任何更新,也就是说,它是版本 1。我想知道当我发布更新(版本 2)时,本地会发生什么应用程序的文件,在以下情况下:

    在版本 2 中添加了一个不在版本 1 中的应用本地文件 (例如:添加的图片) 版本 1 中的应用本地文件已在版本 2 中删除(例如: 已删除的图像,会被删除还是什么都不会 发生了什么?) 版本 1 包中包含的应用本地文件已被 在第 2 版中更改(例如:已更改的图像) 版本 1 和 2 中包含的应用本地文件(完全相同 文件),在运行时由版本 1 中的应用程序更改,当它是 更新到第2版,会恢复原来的吗? (例如:一个 版本 1 中存在的数据库,也存在于版本 2 中,但是 由于它在版本 1 中使用过程中发生了更改,因此将其替换为 版本 2 中包含的数据库,还是会保留更改 第 1 版?) 版本 1 中包含的应用程序本地文件在运行时由 版本 1,但在版本 2 中也发生了变化(例如:一个数据库 版本 1 中存在的版本在运行时被版本 1 更改,但它是 在版本 2 中重做)

@编辑 我的应用是用 Delphi (firemonkey) 制作的

【问题讨论】:

我没有阅读您的长篇故事,但一般来说,如果应用程序文件被更新,则不会发生任何事情。每次使用 Android Studio 编译和上传应用时,您都可以轻松地进行测试。 【参考方案1】:

iOS 上的应用以捆绑包(本质上是一个 zip 文件)的形式分发。捆绑包是只读的;它不能在运行时更改。在 iOS 上升级应用程序时,整个捆绑包都会被替换。

应用可以从包中复制文件并将它们保存到读/写沙盒文件系统,但您需要明确编写代码来执行此操作。

对于您的情况:

    附加文件将在捆绑包中。如果您希望此文件在本地存储上,您需要通过代码复制它。 该文件将不再存在于捆绑包中。您以前的版本制作的任何本地副本都将保留。 更新的文件将在捆绑包中。您以前的版本制作的任何本地副本都将保留并且不会更改。 应用程序不能对捆绑包中的文件进行更改,它只能在修改之前将文件从捆绑包复制到本地存储,所以这基本上是第 3 种情况。 这基本上还是第 3 种情况。

Android 上的情况可能有所不同。

【讨论】:

【参考方案2】:

我的应用是用 Delphi (firemonkey) 制作的,我没有提到它,因为我认为替换本地文件将由 AppStore 和 PlayStore 在更新中完成。但是感谢Paulw11 的响应,我能够发现是Delphi 本人负责此替换,并且在每个文件中都包含一个名为"Overwrite" 的可配置属性。

【讨论】:

以上是关于当我更新我的应用程序时,本地文件会发生啥?的主要内容,如果未能解决你的问题,请参考以下文章

当我清除一个结构向量时会发生啥?

我编写了一个火花作业以在本地模式下运行,但是当我提交该作业时,我在纱线集群模式下运行它。在这种情况下究竟会发生啥?

更新 Android 应用程序时 SharedPreferences 会发生啥?

将 const 引用返回到本地对象时究竟会发生啥?

cvs:更新无法合并

当我增加 ec2 实例的运行量大小时会发生啥