iOS模擬器是在開發任意iOS應用程序過程當中不可或缺、沒法被忽視的一個部分。值得一提的是,Xcode 9的新模擬器帶來了不少有用的功能,可以提高你的開發效率。對比歷代模擬器的更新,此次有了很重大的改變。html
因此讓咱們開始這篇教程的重點吧,本文會列出我在新iOS模擬器中發現的新功能(一些技巧也能夠在舊的模擬器中使用)。bash
當你使用13寸的 Mac 時,Xcode 的全屏模式是惟一救星,之前不能在全屏模式下使用Xcode模擬器,但如今開始可使用了。
從Xcode 9 beta 3開始,這個功能將會是系統預設的,因此你無需作任何事情來啓用它。app
更新:可能某些人預設狀況下是關閉此功能的,不用擔憂,能夠隨時經過 Apple Internal 選單啓用此功能。若是想在新的模擬器中探索更多的祕密功能,能夠啓用Apple 隱藏的內部選項。less
因此,你須要在根目錄中建立一個名爲「AppleInternal」的空文件夾,請執行下面的命令並從新啓動模擬器:ide
sudo mkdir /AppleInternal複製代碼
新的選項中項目應該會顯示出來 ✌️工具
注意:我是從Xcode 9 beta 3 的模擬器上測試這個步驟,若是你尚未下載,請在此安裝最新的Xcode。開發工具
還記得在不一樣的模擬器上測試應用程序的挫敗感嗎?在此以前,你一次只能打開一個模擬器,雖然有許多「hacks」教你如何在舊版本的Xcode中打開多個iOS模擬器。可是在Xcode 9當中,這個功能是直接可使用的。測試
在Xcode 9以前,咱們只有透過」Scale options」才能調整模擬器的大小,如今Apple終於開放調整模擬器窗口的大小。若是一次有多個模擬器打開,這個小細節的調整這是很是有用,能夠幫助你有效地組織工做空間。url
在Xcode 9官方的」What’s new」文檔中,蘋果聲稱如今能夠錄製模擬器屏幕視頻,即便在舊版本中,只要使用simctl也能夠作到,在界面上找不到地方能夠啓用視頻錄製(除了iOS 11中的內置屏幕錄製)。
要獲取視頻檔案,請執行如下代碼:spa
xcrun simctl io booted recordVideo --type=mp4 <PATH TO VIDEO FILE>複製代碼
booted – 表示simctl
選擇當前啓動的模擬器,若是你有多個已啓動的模擬器,simctl
將選擇當前正在操做的那一個模擬器。
如今,模擬器有了 Finder 擴展功能,你能夠直接從 Finder 窗口共享文件。
你也能夠執行如下simctl
命令,使用圖像/視頻文件進行相似操做:
xcrun simctl addmedia booted <PATH TO MEDIA FILE>複製代碼
很高興有這樣的操做方法,可是對我而言,將文件拖放至模擬器窗口彷佛快不少。
這個也能使用simctl
,因此你也能夠在舊版本的模擬器上打開自定義的URL schemes。
拖拽
以你指定的任何URL執行如下命令:
xcrun simctl openurl booted <URL>複製代碼
關於Apple全部URL schemes
的列表,請查看文檔.
再來介紹一個simctl
的命令,你可使用單個命令在文件系統上獲取應用程序的資料夾,只須要知道應用程序的bundle identifier
並執行如下命令:
xcrun simctl get_app_container booted <APPS BUNDLE ID>複製代碼
或者你可使用open命令在 Finder 中更快打開目標文件夾:
open `xcrun simctl get_app_container booted <APPS BUNDLE ID>` -a Finder複製代碼
使用simctl
,你也能夠從終端機上啓動應用程序,並在其中傳遞一些命令列參數(甚至能夠設置一些環境變量)。若是你想在應用程序中插入一些除錯行爲,這將很是有用。
執行下列命令可讓你完成這項任務:
xcrun simctl launch --console booted <BUNDLE ID> <YOUR ARGUMENTS>複製代碼
你能夠從CommandLine.arguments獲取這些命令行參數(這裏是文件的連接)。
有時找出應用程序的檔案或暫存數據位於文件系統上的位置頗有用,若是你須要比simctl
get_app_container
更全面的資訊,simctl
還有一個很好用的小工具,名爲appinfo
,它會如下列格式顯示相關資訊:
{
ApplicationType = User;
Bundle = <PATH TO APP FILE>;
BundleContainer = <PATH TO FOLDER WITH APP FILE>;
CFBundleDisplayName = TestiOSApp;
CFBundleExecutable = TestiOSApp;
CFBundleIdentifier = "com.ahmed.app.TestiOSApp";
CFBundleName = TestiOSApp;
CFBundleVersion = 1;
DataContainer = <PATH TO YOUR DATA>;
GroupContainers = {
};
Path = <PATH TO APP FILE>;
SBAppTags = (
);
}複製代碼
執行下面的命令並觀察輸出結果:
xcrun simctl appinfo booted <BUNDLE ID>複製代碼
iOS模擬器是一個很是強大的工具,只要知道全部的細節和技巧,它可讓你的開發過程加快許多,身爲一個好的工程師,熟悉你的開發工具是必然的。
在Flawless
中,iOS模擬器對咱們來講很是重要,這個產品是一個iOS模擬器插件,容許工程師在模擬器內部檢查任何設計,對於新Xcode 9和Simulator版本的推出,我無以言表,已經等不及公開版本推出!咱們能夠實現更多有用的功能來保持iOS應用程序的視覺層次感。
另外,若是我在本文中錯過了一些重要的內容,歡迎讀者能夠在評論中分享想法,相信將可讓本文增添更多的實用開發技巧 。
YouTube 視頻因爲被牆,沒作搬運,若有須要可自行去原文查看。