Mac OS X 和 iOS 架構
用戶體驗層
Aqua
Quick Look
Spotlight(iOS)
Accessibility選項
SpringBoard(iOS)
-
應用框架層
- Cocoa(iOS)
Carbon
Java
核心框架
OpenGL
Quick Time
Darwin
內核(kernel)
UNIX Shell 環(huán)境
-
UNIX的系統(tǒng)目錄
OS X 是一個符合UNIX標準的系統(tǒng),因此也有那些標準UNIX具有的目錄結構:- /bin:UNIX中的二進制程序。這是常用UNIX命令(例如:ls、rm、mv和df等)所在的地方。
/sbin:系統(tǒng)程序。這些二進制程序用于系統(tǒng)管理,例如文件系統(tǒng)觀念里和網(wǎng)絡配置等。
/usr:User目錄。這并不是這個目錄是給用戶用的,而更像是Windows中的Program Files目錄,第三方的軟件安裝在這里。
/usr:目錄中 包含的bin、sbin和lib。/usr/lib用于存放共享的目標文件(類似于Windows中存放DLL文件的\windows\system32目錄)。這個目錄還包含一個include/子目錄,所有標準的C頭文件都存放在此。
/etc:其他文件。這個這個目錄包含了大部分系統(tǒng)配置文件。在OS X中目錄實際上指向/private/etc的符號鏈接。
/dev:BSD設備文件。這些特殊文件表示了系統(tǒng)中存在的設備(字符設備和塊設備)
/tmp:臨時目錄。在OS X中目錄實際上指向/private/etc的符號鏈接。
/var:各種雜項文件。這個目錄實際上是指向/private/etc的符號鏈接。
OS X 特有的目錄
OS X在UNIX目錄樹種添加了自己特有的目錄。在系統(tǒng)根目錄下,這些目錄包括:/Applications:系統(tǒng)中所有應用程序的默認目錄
/Library:系統(tǒng)英語的數(shù)據(jù)文件、幫助和文檔等數(shù)據(jù)都放在這個目錄下。
/Network:用于鄰居節(jié)點發(fā)現(xiàn)和訪問的虛擬目錄。
/System:系統(tǒng)文件目錄。其中只包含一個Library子目錄。這個子目錄幾乎包含了系統(tǒng)中的所有重要組件,例如框架、內核模塊和字體等。
/Users:所有用戶的主目錄所在的目錄。每一個用戶在這里都會創(chuàng)建一個自己的目錄。
/Volumes:可移動媒體和網(wǎng)絡文件系統(tǒng)的掛載點所在的目錄。
/cores:如果啟用了核心轉儲,那么這個目錄保存核心轉儲文件。
iOS 文件系統(tǒng)的區(qū)別
iOS 的文件系統(tǒng)和 OS X 非常類似,但是有以下區(qū)別:文件系統(tǒng)(HFSX)是大小寫敏感的(而 OS X 的 HFS+能保留大小寫但是不敏感)。此外,文件系統(tǒng)是部分加密的。
內核已經(jīng)以kernelcache的形式將內核擴展打包在內核中(kernelcache在/System/Library/Caches/com.apple.kernelaches中)。 和OS X的內核緩存不同(OS X的內核緩存為壓縮鏡像)iOS 的內核緩存是加密的Img3文件。
/Applications 可能是指向/var/stash/Applications 的符號鏈接。這是越獄系統(tǒng)的一個特性。而不是標準iOS的特性。
沒有/Users 目錄,只有一個/User 目錄,而這個目錄實際上是指向/var/mobile 的符號鏈接。
沒有/Volumes目錄(而且沒有必要進行磁盤仲裁,因為在iOS 中午飯在指定系統(tǒng)中添加更多的存儲設備)。
Bundle
蘋果對bundle的定義:一種標準化的層次結構,保存了可執(zhí)行代碼以及代碼所需要的資源。
bundle是應用程序框架、插件、小物件、內核擴展的根基。
OS X 應用程序的bundle結構:
- Content/
_CodeSignature/ 包含CodeResources,用來判斷應用程序是否完好無損
info.plist 配置文件
MacOS/ 包含App Store 包中的二進制內容
PkgInfo 包的8字節(jié)標識符
Pluglns/
Resources/ nib文件(用于GUI)和lproj文件(用于國際化)和其他資源文件
version.plist 包版本信息
iOS App 的默認目錄結構
- Documents / 應用程序保存的數(shù)據(jù)文件(如游戲的最高分、文檔和記錄等)
- Library/ 雜項app文件
- tmp 保存臨時文件的目錄,隨時可能被清空。