點選檢視》》》》》》》》》》》》》原文位址:
iOS模拟器是在開發任意iOS應用程式過程中不可或缺、無法被忽視的一個部分。值得一提的是,Xcode 9的新模拟器帶來了很多有用的功能,能夠提升你的開發效率。對比曆代模拟器的更新,這次有了很重大的改變。
是以讓我們開始這篇教程的重點吧,本文會列出我在新iOS模拟器中發現的新功能(一些技巧也可以在舊的模拟器中使用)。
1. 在全屏模式下使用Xcode模拟器
當你使用13寸的 Mac 時,Xcode 的全屏模式是唯一救星,以前不能在全屏模式下使用Xcode模拟器,但現在開始可以使用了。
從Xcode 9 beta 3開始,這個功能将會是系統預設的,是以你無需做任何事情來啟用它。
更新:可能某些人預設情況下是關閉此功能的,不用擔心,可以随時通過 Apple Internal 選單啟用此功能。如果想在新的模拟器中探索更多的秘密功能,可以啟用Apple 隐藏的内部選項。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2QvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2Lc1DNXFWaGdkWoxWbhZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39jN1MzNyQTN4EDMyATM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
是以,你需要在根目錄中建立一個名為“AppleInternal”的空檔案夾,請執行下面的指令并重新啟動模拟器:
sudo mkdir /AppleInternal
新的選項中項目應該會顯示出來 ✌️
注意:我是從Xcode 9 beta 3 的模拟器上測試這個步驟,如果你還沒有下載下傳,請在此安裝最新的Xcode。
2. 一次打開多個模拟器
還記得在不同的模拟器上測試應用程式的挫敗感嗎?在此之前,你一次隻能打開一個模拟器,雖然有許多“hacks”教你如何在舊版本的Xcode中打開多個iOS模拟器。但是在Xcode 9當中,這個功能是直接可以使用的。
3. 縮放模拟器就像調整視窗大小一樣簡單
在Xcode 9之前,我們隻有透過”Scale options”才能調整模拟器的大小,現在Apple終于開放調整模拟器視窗的大小。如果一次有多個模拟器打開,這個小細節的調整這是非常有用,可以幫助你有效地組織工作空間。
4. 記錄模拟器的視訊
在Xcode 9官方的”What’s new”文檔中,蘋果聲稱現在可以錄制模拟器螢幕視訊,即使在舊版本中,隻要使用simctl也可以做到,在界面上找不到地方可以啟用視訊錄制(除了iOS 11中的内置螢幕錄制)。
要擷取視訊檔案,請執行以下代碼:
xcrun simctl io booted recordVideo --type=mp4 <PATH TO VIDEO FILE>
booted – 表示simctl選擇目前啟動的模拟器,如果你有多個已啟動的模拟器,simctl将選擇目前正在操作的那一個模拟器。
5. 使用 Finder 共享檔案到模拟器
現在,模拟器有了 Finder 擴充功能,你可以直接從 Finder 視窗共享檔案。
你也可以執行以下simctl指令,使用圖像/視訊檔案進行類似操作:
xcrun simctl addmedia booted <PATH TO MEDIA FILE>
很高興有這樣的操作方法,但是對我而言,将檔案拖放至模拟器視窗似乎快很多。
6. 模拟器上打開URL
這個也能使用simctl,是以你也可以在舊版本的模拟器上打開自定義的URL schemes。
拖拽
以你指定的任何URL執行以下指令:
xcrun simctl openurl booted <URL>
關于Apple所有URL schemes的清單,請檢視文檔.
7. 快速找到應用程式的檔案夾
再來介紹一個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
8. 使用指令行參數(Command Line Args)在模拟器中啟動應用程式
使用simctl,你也可以從終端機上啟動應用程式,并在其中傳遞一些指令列參數(甚至可以設定一些環境變量)。如果你想在應用程式中插入一些除錯行為,這将非常有用。
執行下列指令可以讓你完成這項任務:
xcrun simctl launch --console booted <BUNDLE ID> <YOUR ARGUMENTS>
你可以從CommandLine.arguments擷取這些指令行參數(這裡是檔案的連結)。
9. 透過Bundle ID擷取完整的應用程式消息
有時找出應用程式的檔案或暫存資料位于檔案系統上的位置很有用,如果你需要比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應用程式的視覺層次感。