iOS应用目录结构和 *** 作

iOS应用目录结构和 *** 作,第1张

/var/mobile/Applications/4DCF7000-BD28-4494-80DF-4F081C975EDC

Phone会为每一个应用程序生成一个私有目录,iOS7这个目录位于:/var/mobile/Applications,随机生成一个数字字母串作为目录名,每一次应用程序启动时,这个字母数字串都是不同的。

Documents:保存应用运行时生成的需要持久化的数据,iTunes会自动备份该目录

"/var/mobile/Applications/4DCF7000-BD28-4494-80DF-4F081C975EDC/Documents"

~/Documents

Libaray/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除,一般存放体积比较大,不是很重要的资源

打印:

/var/mobile/Applications/4DCF7000-BD28-4494-80DF-4F081C975EDC/Library/Caches

打印: ~/Library/Caches

Libaray:存储程序的默认设置和其他状态信息,iTunes会自动备份该目录

打印:"/var/mobile/Applications/4DCF7000-BD28-4494-80DF-4F081C975EDC/Library"

打印:~/Library

Libaray/Preferences:保存应用的所有偏好设置,ios的Settings(设置)应用会在该目录中查找应用的设置信息,iTunes会自动备份该目录。

/var/mobile/Applications/4DCF7000-BD28-4494-80DF-4F081C975EDC/Library/Preferences

tmp:保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除,应用没有运行时,系统也可能会自动清理该目录下的文件,iTunes不会同步该目录,iPhone重启时该目录下的文件会丢失

/private/var/mobile/Applications/4DCF7000-BD28-4494-80DF-4F081C975EDC/tmp/

NSFileManager 是处理文件系统的 Foundation 框架的高级API。它抽象了 Unix 和 Finder 的内部构成,和 iCloud ubiquitous containers 一样, 提供了创建,读取,移动,拷贝以及删除本地或者网络驱动器上的文件或者目录的方法。

https://developer.apple.com/library/ios/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html#//apple_ref/doc/uid/TP40010672-CH2-SW2

NSFileManager http://nshipster.cn/nsfilemanager/

官方文档

不管是在iOS还是Android开发过程中,我们都经常性地需要存储一些状态和数据,比如用户对于App的相关设置、需要在本地缓存的数据等等。根据要存储的的数据的大小、存储性质以及存储类型,在iOS和Android中哪个都有多种存储方式。其中,iOS中的存储方式主要包括以下六类:

plist文件(属性列表)

preference(偏好设置)

NSKeyedArchiver(归档)

SQLite 3

CoreData

手动存放沙盒

一、沙盒机制

在研究存储方式之前,我们有必要先研究下这些文件会存储到什么地方去,这就需要我们了解iOS App特有的沙盒机制了。iOS程序默认情况下只能访问程序自己的目录,这个目录被称为“沙盒”,即沙盒其实就是一个App特有的一个文件夹,iOS下每个App都有自己特有的一个沙盒,其结构和目录特性都是一样的。

1.1 沙盒结构

既然沙盒就是一个文件夹,那就看看里面有什么吧。沙盒的目录结构如下图所示,每个App的沙盒都是由下图所示的四部分组成,每一部分中存放的数据和内容都是有一定的规范和性质的。该目录路径的获取方法是直接通过 NSHomeDirectory() 就得到和应用沙盒的路径。

此外,每一个App还有一个Bundle目录,即“应用程序包”,该目录下 存放的是应用程序的源文件,包括资源文件和可执行文件。

使用 file 命令查看ipa文件

其中 Payload 文件夹不可缺少,其中包含 .app 文件夹,简单介绍一下 .app 中最主要的几类文件:

新建一个 Xcode iOS App 项目,按 “command + B” 快捷键编译项目,单击查看编译细节,过程如下

下面是《iOS应用逆向安全》中提供的自动打包脚本:

从上述脚本中可以看到整个过程大致如下:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7925715.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存