iOS文件系统目录结构

 原创    2020-09-17

iOS是属于类UNIX的操作系统,基本遵守了UNIX文件系统层级标准(Filesystem Hierarchy Standard)。但由于iOS的封闭性,它还是有一些特有的目录。下面以iOS 12.4.8系统为例说明,方便后续查阅。

Applications目录

存放iOS系统预装的APP二进制文件,比如AppStore、短信、电话等,示例:

/Applications/AppStore.app
/Applications/Camera.app

Developer目录

iPhone设备连接上Xcode开发后,新增Developer目录,包含Applications、Library、System、usr子目录。是部署到iOS系统上用于支持开发的文件。

Library目录

存放了系统需要的数据文件、帮助文档等。示例:

//铃声文件
/Library/Ringtones 
//壁纸文件
/Library/Wallpaper 

System目录

只包含一个名为Library的目录,存放了系统的绝大部分组件,如各种公开/私有Framework、内核模块、字体文件等。示例:

//字体
/System/Library/Fonts 
//桌面
/System/Library/CoreServices/SpringBoard.app/SpringBoard
//系统库
/System/Library/Frameworks/
/System/Library/PrivateFrameworks/

Frameworks和PrivateFrameworks目录存放了iOS公开和私有的Framework动态库。细心就会发现,这些库文件中很多找不到对应的二进制文件。这是由于dyld为了优化启动速度,启用了shared cache技术,将常用的动态库打包到一个cache文件中预加载。这个cache文件存放在路径是:

/System/Library/Caches/com.apple.dyld/dyld_shared_cache_<架构名称>

关于dyld的内容,可以参考kanchuan.com的另一篇博文:iOS 13中dyld 3的改进和优化

User目录

链接至/var/mobile。

bin目录

存放传统UNIX用户级命令,如ls、ps、rm、mv等。

boot目录

cores目录

dev目录

存放设备文件,比如ttyp0、null。

etc目录

链接至/private/etc/。

lib目录

mnt目录

private目录

有/etc、/var两个重要的目录,存放用户的配置,数据文件。

//共享数据目录
/private/var/containers/Shared
//相册
/private/var/mobile/Media/DCIM
//录音
/private/var/mobile/Media/Recordings
//APP数据目录
/private/var/mobile/Containers/Data/Application
//APP二进制目录
/private/var/containers/Bundle/Application

sbin目录

存放系统级管理命令,如mount,launchd等。

tmp目录

链接至/private/var/tmp/。

usr目录

存储各种工具和程序。

var目录

链接至/private/var/。

相关文章:

iOS安全:Tweak开发环境及入门
LLDB命令速查手册
iOS Flutter 开发环境部署
cocoapods-packager 插件的错误修复和适配
如何获取AppStore上的ipa?

发表留言

您的电子邮箱地址不会被公开,必填项已用*标注。发布的留言可能不会立即公开展示,请耐心等待审核通过。