Xcode6 模擬器路徑

  Xcode6公佈後,出現了很是多的變更,功能性的變更,在這裏不進行過多的贅述,在WWDC上蘋果已經進行了講述,網上也有很是多文章,這裏要介紹的是一些不太easy發現的,但很是重要的小地方。          一、Xcode6模擬器路徑的變動           在Xcode5和以前的版本號中,Xcode的模擬器路徑爲:/Users/username/Library/Application Support/iPhone  Simulator。在該目錄下,可以查看到所有的模擬器版本號,點進去後,可查看應用沙盒狀況。 在開發中,建議將文件拖動快捷路徑到Finder左側我的收藏下,可以方便打開查看應用沙盒。         在Xcode6中,將模擬器的位置進行了變動,地址例如如下:/Users/username/Library/Developer/CoreSimulator,打開後會發現例如如下狀況:         在這裏,蘋果對模擬器進行了編碼處理,並不是以模擬器系統版本號進行的命名和分類,而是對Xcode6中所有的模擬器進行的區分,裏面的16個目錄分別相應的Xcode6中的16種模擬器 ,那怎樣依據這個看似亂碼的目錄,推斷出是哪一款模擬器呢?         選中某個文件後,打開會看到一個名爲data的目錄,和device.plist的配置文件,打開device.plist的配置文件後,會看到模擬器的UDID、設備類型、系統版本號、名稱等。經過這個可以知道模擬器的設備和系統版本號。打開後,會發現,前面的看似亂碼的文件名,事實上就是模擬器的設備UDID,儘管從這裏可以獲得模擬器的UDID,蘋果也用它來進行分類模擬器,但在實際的編程中,假設想最後公佈到APP Store的話,仍是放棄UDID吧,這也是蘋果比較霸道的一點,固然了也是在保護用戶隱私的狀況下作出的。           二、應用沙盒地址的變動         獲得了模擬器路徑後,仍是用很是多的不一樣的,應用的沙盒地址也和以前有所不一樣。        在Xcode5及以前的版本號中,沙盒地址爲例如如下:/Users/username/Library/Application Support/iP hone  Simulator/7.0.3/Applications,在Applications文加下,會找到應用程序的沙盒。        在打開應用沙盒後,會有應用程序文件、Document目錄、Library目錄、tmp目錄。至於這幾個目錄的做用不在此作贅述。        在Xcode6中,應用程序文件、Document目錄、Library目錄、tmp目錄這四個文件放在了不一樣的目錄中。應用程序文件路徑:/Users/username/Library/Developer/CoreSimulator/Devices/模擬器UDID/data/Containers/Bundle/,Application目錄下;Document目錄、Library目錄、tmp目錄路徑:/Users/username/Library/Developer/CoreSimulator/Devices/模擬器UDID/data/Containers/Data/,Application文件下。但是不幸的是,這兩個路徑打開後的文件名稱,仍是通過編碼過的,而且,同一個應用中的應用程序文件和D、L、t目錄所在的目錄的文件名稱是不一樣的。僅僅能本身找。         三、NSUserDefault 文件存儲位置變動        NSUserDefault是iOS提供的本地化數據存儲方式,會在沙盒中本身主動建立一個.plist的配置文件,將數據保存起來,在讀取時,以NSDictionary字典來進行接收         在Xcode5及以前的版本號中,詳細的路徑爲:/Users/shifengwei/Library/Application Support/iPhone Simulator/7.0.3/Applications/C9588981-3D82-49BC-92B8-F5BA72185629/Library,Preferences目錄下,名稱爲程序Bundle Identifier的plist文件。在刪除模擬器中的程序後,在Library目錄下的plist文件會對應的刪除。        在Xcode6中,程序對使用NSUserDefault方式建立的plist文件的位置進行了更換,詳細路徑爲:/Users/username/Library/Developer/CoreSimulator/Devices/模擬器UDID/data/Library,Preferences目錄下。        這裏特別說一下,假設依照在Finder裏打開的路勁來看,並不是這種,但經過 Finder,前往目錄,經過該路徑查找是可以查到的。上述的路徑地址是經過查看Preferences目錄的顯示簡單介紹得到的。         經過上述的路徑可以看出,經過NSUserDefault建立的plist目錄仍是在Library文件下,但不一樣的是,真正存放的位置變了,成了在模擬器的資料庫目錄下,這種改變所產生的變化就是,當咱們在刪除模擬器中的應用程序後,plist文件仍是會保留,並不會刪除。        那麼,既然模擬器中的位置變了,那升級到iOS8後,在這方面有什麼不一樣呢?如下就說說在在真機中調試的不一樣。         一、Organizer中,在Xcode5中,是Devices、Projects、Archives三欄,而在Xcode6中,單獨將Devices拿了出來,成了和Organizer平級的,在Xcode菜單條,Window下。假設了解過Xcode從4.X升級到5時,就會知道,Organizer在那個時候也變動過,從原來的四欄變成了三欄,將幫助文檔移除了。        二、在進行真機調試時,會打開真機中應用程序的沙盒,進行查看,在Xcode中,  打開Devices的Application中,可以下載下來應用程序的沙盒,經過右擊顯示包內容來查看沙盒的信息。但是在iOS8和iOS7及以前出現了不一樣。        上圖爲同一款應用在不一樣的系統中所表現的,左圖爲iOS8下,下載下來的沙盒內容,右圖爲iOS7.0.4下,下載下來的沙盒內容,很是顯然,在iOS8下,經過Devices下載的沙盒內容沒法查看沙盒裏面的內容。                  咱們經過第三方的軟件,在這裏使用的是iFunBox,找到應用程序後,打開發現可以查看到沙盒的內容,拷貝到本地後,發現,本來的5個文件,僅僅有3個,也就是Document目錄、Library目錄、tmp目錄三個。      這裏特別說一下,上述提到過的,在模擬器中,經過NSUserDefault本身主動建立的plist文件,在刪除軟件後,還會保留,但在真機中,也是會刪除的,對應的plist文件的路徑到了經過導出的Library目錄下的Preferences目錄下,刪除應用程序後,不會保留。這應該算是一個真機和模擬器中的不一樣。        這個不一樣會形成一種狀況,那是否還可以使用NSUserDefault?就筆者眼下來看,還不至於廢棄NSUserDefault,畢竟它僅僅是在模擬器中會出現刪除應用保留的狀況,在真機中不會,而且NSUserDefault在開發中,做爲數據持久化,在保存數據時,仍是很是好用的。固然了,也有開發人員會不適應這樣的狀況,操心在真機中會出現,假設有開發人員以爲不適應的話,可以本身建立一個plist文件在沙盒中,取代,但是假設說應用中使用的NSUserDefault比較多的話,不建議這樣,畢竟蘋果封裝的NSUserDefault仍是很是好用的。可以在模擬器刪除文件後,在保存plist文件的目錄下,將plist文件刪除就能夠,多個步驟而已,至少眼下來看,在真機中仍是和以前同樣的。        固然,在iOS中,除了NSUserDefault會系統本身主動生成文件進行數據保存外,歸檔也是同樣的,由於筆者沒有進行測試,爲了不誤導,這裏就不說了,待測試後,進行總結公佈。 PS:最後補充一下,打開或關閉Mac的隱藏文件的命令。 打開Mac隱藏文件命令:defaults write com.apple.finder AppleShowAllFiles -bool true 關閉Mac隱藏文件命令:defaults write com.apple.finder AppleShowAllFiles -bool false 方法:在終端中,輸入該命令,回車,而後在強制退出中,從新啓動Finder,就能夠。
相關文章
相關標籤/搜索