iOS APP沙盒目錄
思維導圖
- Xmind原始檔以及完整版請前往 Lionsom
一、UNIX作業系統的常見目錄結構
/:根目錄,以斜槓表示,其他所有檔案和目錄在根目錄下展開。
/bin:"binary"的簡寫,存放提供使用者級基礎功能的二進位制檔案,如ls、ps等。
/boot:存放能使系統成功啟動的所有檔案。iOS中此目錄為空。
/dev:"device"的簡寫,存放BSD裝置檔案。每個檔案代表系統的一個塊裝置或字元裝置,一般來說,“塊裝置”以塊為單位傳輸資料,如硬碟;而“字元裝置”以字元為單位傳輸資料,如調變解調器。
/sbin:"system binaries"的簡寫,存放提供系統級基礎功能的二進位制檔案,如netstat、reboot等。
/etc:"Et Cetera"的簡寫,存放系統指令碼及配置檔案,如passwd、hosts等。在iOS中,/etc是一個符號連結,實際指向/private/etc。
/lib:存放系統庫檔案、核心模組及裝置驅動等。iOS中此目錄為空。
/mnt:"mount"的簡寫,存放臨時的檔案系統掛載點。iOS中此目錄為空。
/private:存放兩個目錄,分別是/private/etc和/private/var。
/tmp:臨時目錄。在iOS中,/tmp是一個符號連結,實際指向/private/var/tmp。
/usr:包含了大多數使用者工具和程式。/usr/bin包含那些/bin和/sbin中未出現的基礎功能,如nm、killall等;/usr/include包含所有的標準C標頭檔案;/usr/lib存放庫檔案。
/var:"variable"的簡寫,存放一些經常更改的檔案,比如日誌、使用者資料、臨時檔案等。其中/var/mobile和/var/root分別存放了mobile使用者和root使用者的檔案,是重點關注的目錄。
二、iOS 獨有的目錄
- /Applications : 存放所有系統app和來自Cydia的App,但是不包含App Store下載的App
- /Developer : 如果一臺裝置連線Xcode後被指定位呼叫用機,Xcode會在這個目錄生產一些除錯工具和資料
- /Library :存放一些提供系統支援的資料,其中/ Library/MobileSubstrate下存放基於Cydiasubstrate的外掛。
-
/Syetem/Library : 存放大量系統元件
- /Systen/Library/Frameworks : 日常使用的各類框架
- /Systen/Library/PrivateFrameworks : 蘋果未公開的私有框架
/System/Library/CoreServices裡的SpringBoard.app:iOS桌面管理器(類似於Windows裡的explorer),是使用者與系統交流的最重要中介。
-
/User:使用者目錄(其實就是mobile使用者的home目錄),實際指向/var/mobile,這個目錄裡存放大量使用者資料,比如:
- /var/mobile/Media/DCIM 下存放照片;
- /var/mobile/Media/Recordings 下存放錄音檔案;
- /var/mobile/Library/SMS 下存放簡訊資料庫;
- /var/mobile/Library/Mail 下存放郵件資料。
- /var/mobile/Containers存放StoreApp
- /var/mobile/Containers/Bundle :存放APP的執行檔案和相關資源
- /var/mobile/Containers/Data:存放資料,沙盒目錄的真實目錄
- NSString *directory = NSHomeDirectory(); //獲取沙盒根目錄
三、iOS應用(Store App)沙盒目錄
出於安全考慮,iOS系統把每個應用以及資料都放到一個沙盒(sandbox)裡面,應用只能訪問自己沙盒目錄裡面的檔案、網路資源等(也有例外,比如系統通訊錄、照相機、照片等能在使用者授權的情況下被第三方應用訪問)
- Application Bundle 包含應用可執行檔案和資原始檔
如獲取iOS上微信程式的Bundle路徑,可以通過ps -e | grep appname
luz-iphone:/ root# ps -e | grep WeChat
1368 ?? 5:41.43 /var/mobile/Containers/Bundle/Application/749DC69A-3A8D-4B5C-9926-1220E69FC85F/WeChat.app/WeChat
- Application Data 包含App執行生產的資料和配置資訊等
如獲取iOS上微信程式的Date路徑,可以通過cycript工具
luz-iphone:~ root# cycript -p WeChat
cy# directory = NSHomeDirectory()
@"/var/mobile/Containers/Data/Application/986376B5-EF08-4CAF-81FB-CAE48D1FE4AE"
cy#
Data目錄結構如下:
luz-iphone:/var/mobile/Containers/Data/Application/986376B5-EF08-4CAF-81FB-CAE48D1FE4AE root# ls
Documents/ Library/ tmp/
-- MyApp.app 該目錄包含了應用程式本身的資料,程式打包的時候的資原始檔和一些本地檔案就是存放在這個目錄下的。 程式的可執行程式、plist檔案也在這個目錄下。 這個目錄不會被iTunes同步
-- Document 存放應用執行時生成的並且需要儲存的資料。注:iTunes或iCloud同步裝置時會備份該目錄
-- Library/Caches 存放應用執行時生成的並且需要儲存的資料。iTunes或iCloud不同步。
-- Library/Preferences 存放偏好設定。iOS的偏好設定(settings)應用也會在該目錄查詢應用的設定資訊。NSUserDefaults儲存在該目錄下。iTunes或iCloud同步裝置時備份該目錄。
-- tmp 存放應用執行時所需的臨時資料。當某個應用沒執行時,iOS系統可能會清除該目錄下的檔案。但不可依賴這種自動清除機制,應該及時手動清除。
- 獲取主要目錄路徑的方式
// 沙盒目錄
NSLog(@"%@",NSHomeDirectory());
// MyApp.app
NSLog(@"%@",[[NSBundle mainBundle] bundlePath]);
// tmp
NSLog(@"%@",NSTemporaryDirectory());
// Documents
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docPath = [paths objectAtIndex:0];
NSLog(@"%@",docPath);
// Library
NSArray *paths_1 = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *libPath = [paths_1 objectAtIndex:0];
NSLog(@"%@",libPath);
// 沙盒目錄
/var/mobile/Containers/Data/Application/0BFBB3FE-0FD0-46CB-ADDE-DDE08F6D62C3
// MyApp.app
/var/containers/Bundle/Application/3CBD3C13-B3B3-4FBA-8616-8D7CB4D8563B/FutureDoctor.app
// tmp
/var/mobile/Containers/Data/Application/0BFBB3FE-0FD0-46CB-ADDE-DDE08F6D62C3/tmp/
// Documents
/var/mobile/Containers/Data/Application/0BFBB3FE-0FD0-46CB-ADDE-DDE08F6D62C3/Documents
// Library
/var/mobile/Containers/Data/Application/0BFBB3FE-0FD0-46CB-ADDE-DDE08F6D62C3/Library
相關文章
- iOS沙盒檔案目錄介紹iOS
- iOS冰與火之歌 – 利用XPC過App沙盒iOSAPP
- 沙盒路徑-iOSiOS
- App磁碟沙盒工具實踐APP
- 沙盒「催化」遊戲遊戲
- iOS 沙盒機制及資料儲存等操作iOS
- 【iOS開發】使用iMazing進行沙盒除錯iOS除錯
- IOS資料儲存之檔案沙盒儲存iOS
- win10沙盒怎麼用_win10沙盒使用教程Win10
- iOS學習之iOS沙盒(sandbox)機制和檔案操作(一)iOS
- iOS學習之iOS沙盒(sandbox)機制和檔案操作(二)iOS
- iOS系統目錄:iOS
- iOS學習之iOS沙盒(sandbox)機制和檔案操作之NSFileManager(三)iOS
- dbdeployer MySQL沙盒部署詳解MySql
- Android 推出隱私沙盒Android
- iOS儲存網路圖片和讀取本地沙盒圖片iOS
- 產品經理們是如何越過 iOS 沙盒機制的?iOS
- win10沙盒怎麼開啟 怎麼把程式拖進win10沙盒Win10
- Python 之 沙盒環境--virtualenvPython
- 什麼是沙盒加密技術?加密
- win 11 沙盒報錯修復
- iOS基礎:目錄結構iOS
- Git 沙盒模擬實戰(基礎篇)Git
- 我的世界Minecraft for Mac(沙盒遊戲)原生版RaftMac遊戲
- 【UWP】修改清單脫離沙盒執行
- iOS用libcurl發起一個get請求,並儲存返回資料到沙盒iOS
- app後端設計–總目錄APP後端
- 沙盒原始碼防洩密的安全機制原始碼
- 倒在沙盒品類大熱前夜的遊戲人遊戲
- 將圖片儲存在本地沙盒路徑下
- 【目錄】JVM目錄JVM
- (轉)沙盒軟體SimPholders2無法獲取當前版本Xcode的沙盒路徑解決辦法XCode
- 混合APP開發MUI框架書目錄APPUI框架
- app後端設計–總目錄(轉)APP後端
- 沙盒程式碼執行請求被拒絕,因為沙盒程式碼主機服務太忙,無法處理請求。
- iOS 未越獄的裝置真機除錯,檢視儲存在沙盒裡的資料iOS除錯
- 沙盒遊戲平臺上的青少年百萬富翁們遊戲
- 《浮島物語 Forager》沙盒遊戲的新嘗試遊戲