当我更新我的应用程序时,本地文件会发生啥?
Posted
技术标签:
【中文标题】当我更新我的应用程序时,本地文件会发生啥?【英文标题】:What happens to local files when I update my app?当我更新我的应用程序时,本地文件会发生什么? 【发布时间】:2020-03-08 05:23:06 【问题描述】:我有一个适用于 ios 和 android 的应用程序,但我从未发布过任何更新,也就是说,它是版本 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" 的可配置属性。
【讨论】:
以上是关于当我更新我的应用程序时,本地文件会发生啥?的主要内容,如果未能解决你的问题,请参考以下文章
我编写了一个火花作业以在本地模式下运行,但是当我提交该作业时,我在纱线集群模式下运行它。在这种情况下究竟会发生啥?