【问题标题】:Delete file from bundle after install安装后从包中删除文件
【发布时间】:2013-04-01 07:39:51
【问题描述】:

我知道您无法从 iOS 捆绑包中删除一个项目,因为它已签名,但有没有办法包含一个文件,让它不属于“签名”捆绑包的一部分,但在安装时仍然存在?

用例基本上是安装应用程序,读取文件内容,存储在钥匙串中,然后删除文件。

感谢您的帮助和指导。

注意 -> 应用程序无法访问互联网来获取此文件。 并且能够在阅读一次后删除文件(或擦除文件的内容)是我真正需要的。此外,我们在这里是临时分发,我们不经过任何 App Approval 流程。

【问题讨论】:

  • 不要认为您可以从捆绑包中删除文件...您是否考虑过为您的应用设置某种服务器来检索文件的内容?
  • 应用程序包对于设备上的应用程序是只读的。所以你不能从你的包中删除一个文件,无论是签名的还是未签名的。
  • 不幸的是,由于“业务限制”,我们无法远程获取文件,这是一个废话,但我唯一的答案。和@MartinR 好点。没有真正考虑到那部分。我想,有没有办法用文件预先填充 docs 文件夹?
  • @Breland:如果文件不存在,通常的方法是从 app bundle 复制文件到 docs 文件夹。
  • 如果您提供更多详细信息,您的“业务限制”,您可能会得到详细的解决方案。为什么需要从捆绑包中删除任何内容?捆绑包中的任何内容都经过应用审批流程,下载该应用的每个人都会获得它。

标签: ios resourcebundle


【解决方案1】:

简短的回答是否定的。应用程序包是只读的。

正如其他人所指出的,在需要可编辑的包中交付数据的通常解决方案是将数据从应用程序包复制到文档(或其他应用程序文件夹),以便您拥有可编辑的副本。但是,您仍然无法从捆绑包中删除任何内容。

由于您的项目存在无法通过 Internet 传输数据的限制,并且您正在通过 Ad-Hoc 分发交付应用程序,因此您似乎主要担心的是交付的文件无法访问,即使在越狱时也是如此设备。

由于您无法删除文件以使其不可读,因此您的下一个最佳选择是加密文件以使其不可读。您的应用程序可以解密内容、使用它并处置解密的版本。当然,这仍然不是万无一失的,因为解密需要一个您必须保护的密钥,但它与您将获得的一样防弹。

【讨论】:

  • 目前为止最好的解决方案,我想,那么,“安全”获取设备密钥的最佳方式?
  • 派生密钥,例如使用应用程序中某个文件的 CRC-32 校验和,使用其他值进行哈希处理,因此密钥不会存储在编译后的代码中,而是它们必须通过程序来查看您是如何获得密钥的。您可以通过考虑时间来限制时间,但您需要添加用户设备时间必须准确的要求。
猜你喜欢
  • 1970-01-01
  • 2021-08-30
  • 1970-01-01
  • 2016-09-20
  • 1970-01-01
  • 1970-01-01
  • 2015-10-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多