关于沙盒

sandbox是iOS应用存储数据的区域。每个应用程序都有自己独立的沙盒,相互之间不进行干扰。

iOS上使用sandbox机制,主要是为了进行访问的权限控制。我们知道,iOS不像Android那样,给用户开放了全部文件系统,iOS上则是严格控制的文件系统的访问的。精通iOS开发一书中,有关于它的一个概述:

You can read and write files only from the part of iOS’s file system that was created for your application. This area is called your application’s sandbox. Your sandbox is where your application will store documents, preferences, and every other kind of data it may need to retain. 

可以看到,sandbox是iOS文件系统的一个子集,给APP存储文件、偏好以及各种需要保持的数据类型。

为了在两种环境下查看沙盒,需要进行相关的一些操作

一、模拟器环境

我们用Xcode的模拟器,不光会选择模拟器的设备,比如iPhone 7p、iPhone SE、iPad Pro 两种inch等等,还会考虑设备上运行的iOS系统。

所以,在Xcode模拟器设备集合中,会有各种不同版本的iOS系统的设备,定义在文件 device_set.plist中。该文件内容如图:


可以看到,其实就是通过k-v形式,定义了iOS版本和各种设备。我们刚说过,沙盒是对具体的APP而言的,so,你在查看APP的时候一定要找对模拟器。在这里就是具体设备对应的目录。

举个例子,我要查看iOS -10-0下的iPhone 7p的应用的沙盒,你要做的是,先在device_set.plist 中找到iOS-10-0的iPhone 7p对应的string,这里是 A2172CC4-E3C9-46B7-8E59-9C0CE83D1310。而这个string对应的是 目录~/Library/Developer/CoreSimulator/Devices目录下,属于10.0 7p的那个目录名称。进入即可。



well,进来之后,我们就可以查看具体APP的sandbox了。所有APP沙盒,以这个设备为例,在目录:~/Library/Developer/CoreSimulator/Devices/A2172CC4-E3C9-46B7-8E59-9C0CE83D1310/data/Containers/Data/Application 下。那么怎么知道是哪个APP的沙盒呢?一般按时间看,我们在调试一个APP的时候,模拟器上会被这个APP加在最后一个。所以,选择最后一个目录,一般就是了。

无论在哪个APP的沙盒中,我们都会看到3个基本目录。分别是Documents、Library和tmp。具体三个目录的内容大家可以search相关的资料。像应用程序的数据库文件,一般保存在Documents目录下。比如yd-chat.sqlite

二、真机环境

真机调试下,查看应用程序的沙盒,就容易多了。步骤如下:

1、Xcode菜单栏,选择Window -> Devices (可以一步到位,shift + cmd +2)

2、选择真机

3、在Installed Apps中选择应用后,打击下面的 小齿轮

4、弹出三个选项,其中第一 第二个分别是 Show Container和Download Container。其中Show Container展示沙盒内容。实践证明不太方便操作。更常用的是Download Container。经过这个操作以后,把沙盒的文件打包copy到本地mac上。它会以XXX.scappdata文件显示,such as com.yongche.client 2016-11-21 18:52.00.416.xcappdata

5、右键com.yongche.client 2016-11-21 18:52.00.416.xcappdata , show package data,打开文件包,进入AppData就能查看沙河内容了


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值