PS: 原文地址 https://blog.csdn.net/slatop/article/details/76850436? 作者 : slatop ,非常感謝原文作者的信息共享
MARK:
在iOS 8之前,我們想要導出iOS App沙盒中的數(shù)據(jù)是一件非常簡單的事。只要利用iTools之類的應用就可以隨意查看 iOS App 沙盒中的所有數(shù)據(jù),然后根據(jù)需要導出數(shù)據(jù)。但是在 iOS 8 開始,Apple 加強了對沙盒的限制,iTools?這些應用就沒辦法導出 iOS App 沙盒中的數(shù)據(jù)了。但是現(xiàn)在還是有辦法來導出沙盒中的數(shù)據(jù),只是步驟比原來要繁瑣許多。
我們知道在升級 iOS 系統(tǒng)之前,通常要對 iOS 設備進行備份,不然設備變磚的話就沒辦法恢復數(shù)據(jù)了。我們可以依照下圖進行手動備份:

在這里?iTunes?備份的就是 iOS 設備中 App 的沙盒數(shù)據(jù)。我們來看一下 iOS App 沙盒結構。如下圖:

iTunes不會備份沙盒中所有的數(shù)據(jù),只會備份沙盒中 Document 文件夾 和 Library 文件夾(不會備份 Library 文件夾中的 Caches 子文件夾)。所以我們現(xiàn)在只能導出存儲于這兩個目錄的數(shù)據(jù),其他目錄的數(shù)據(jù)應該是不行的。
既然我們知道 iTunes 的備份會備份沙盒數(shù)據(jù),我們就可以操作這個備份數(shù)據(jù)來獲得我們想要的數(shù)據(jù)。下面我們開始動手來獲取想要的數(shù)據(jù):
利用 iTunes 對設備進行手動備份。
打開?Disk Drill,這個軟件會自動掃描出電腦上的備份。Disk Drill 下載地址。提取碼:?q6wt
點擊下圖「iOS 備份」選項下的恢復按鈕。

點擊恢復按鈕之后,等一段時間,我們就能看到所有的備份數(shù)據(jù)。但是如果設備上裝的 App 非常多的話,就很難找到我們需要的數(shù)據(jù)。
我們發(fā)現(xiàn) Files 文件夾下的子文件夾都是以AppDomain-開頭,后面跟的其實是 App 的唯一標識符,既然是唯一標識符,我們就可以利用這個唯一標識符來找到對應 App 的沙盒目錄。那我們如何獲取 App 的唯一標識符呢?這里我們可以利用這個Retriever App來獲取我們需要的唯一標識符,雖然這個 App 最開始是為了查看 App 的 URL Scheme。我們下載這個 App 的源代碼,然后利用 Xcode 編譯到我們自己的手機上,搜索我們需要導出數(shù)據(jù)的 App,點擊進去之后查看CFBundleIdentifier這一項,這個鍵對應的值就是我們需要的 App 唯一標識符。
在 Disk Drill 的搜索框輸入我們獲取的唯一標識符,我們以唱吧為例,我們知道唱吧錄取的音頻文件不足 60s 是不能上傳的,所以我們利用 Disk Drill 來取得錄取的音頻文件。如下圖我在搜索框中輸入 changba 就過濾掉了其他 App 的沙盒文件夾,然后展開文件夾,根據(jù)猜測 record 文件夾中包含的 m4a 文件應該就是我們需要的音頻文件了。
