Xcode 9 —進階的 iOS Simulator

CNKCQ發表於2017-10-02

前言

   iOS Simulator 是 iOS 開發過程中不可或缺的一部分,我平時工作中也有很大一部分時間在使用 iOS Simulator, 相比於 Android ,iOS Simulator 具有啟動時間快,執行效率高等顯著的特點。 因此,用好 iOS Simulator 對於提高我們的開發效率是有很大幫助的. Xcode 9 中,有一大堆新特新等你來撩!!

正文

1、 在 Xcode 的全屏模式下使用 Simulator

    如果你用的是 13 寸的電腦,那麼 Xcode 的全屏模式你應該早已習慣,其實即使是配有顯示器,我還是習慣在 Xcode 的全屏模式下開發?。很可惜的是不能在 Xcode 的全屏模式下使用 Simulator, 自 Xcode 9b3 以後,這個問題便不存在了:

這個功能並不是對所有人預設開放的,如果不幸你的 Xcode 沒有預設開啟這個功能也不要灰心,我們可以通過開啟 Apple Internal menu 來啟用這個功能,通過 Apple Internal menu 你能挖掘出 Simulator 的更多新特性。那麼問題來了,怎麼開啟 Apple Internal menu 呢?首先,在更目錄裡建立 AppleInternal 資料夾,然後重啟 Simulator:

internal-menu.png
internal-menu.png

cd ~/
sudo mkdir /AppleInternal複製程式碼

重啟 Simulator 後就可以看到 internal 選項 ☝️
再次重申,你需要下載 Xcode 9b3 或更新的版本才行

2、同時開啟多個模擬器

還記以前我們在不同尺寸的手機上去適配嗎?通常情況下,我們通過 Storyboard 可以直觀的看到 View 在不同尺寸裝置上的形態,然而純 Code 碼出的介面就得多次啟動不同的模擬器來進行視覺化除錯了。作為開發者,你肯定也想過,要是能同時啟動多個模擬器多好,那麼很高興的告訴你,在 Xcode 9 中這已不再是問題了。

3、拖動放大或縮小 Simulator

在 Xcode 9 之前, 我們需要通過 command + 1、2、3、4 來對 Simulator 的大小進行調整,Xcode 9 以後就不用這麼麻煩,我們可以通過拖拽來控制模擬器的大小了。如果您有多個模擬器開啟,這是非常有用的一些細節,它可以幫助你有效地組織工作空間。

4、Simulator 螢幕捕捉

在 Apple 官方的 “What's new” Xcode 9 文件中,蘋果聲稱現在可以錄製模擬器螢幕的視訊。 其實這並不新鮮,即使在舊版本中我們也可以通過 simctl 實現這樣的功能。 您可以從介面啟用視訊錄製(除了iOS 11中的內建螢幕錄製)。

執行 command 的命令,就可以得到我們想要錄製的視訊了。

xcrun simctl io booted recordVideo --type=mp4 <PATH TO VIDEO FILE>複製程式碼

booted —— 即是 simctl 當前選中的模擬器,如果當前有多個模擬器,那麼選中的活動的 Simulator 為準。

5、Finder 和 Simulator 共享檔案

現在,Simulator 具有 Finder 擴充套件,我們可以直接從 Finder 視窗共享檔案給 Simulator 。

當然,如果你使用的是舊版本的 Xcode ,我們也可以使用 simctl 命令來進行類似操作:

xcrun simctl addmedia booted <PATH TO MEDIA FILE>複製程式碼

這個功能太棒了,畢竟,我更喜歡通過拖拽來實現 Simulator 和 Finder 的檔案共享。

6、 通過 Simulator 開啟 URLs
通過 simctl 也可以實現 Simulator 開啟 URLs, 所以你也可以在舊的模擬器上開啟自定義的 URL。

執行下面的 shell 命令

xcrun simctl openurl booted <URL>複製程式碼

Apple 官方文件 check out the documentation

7、快速開啟 app 的檔案系統

通過 simctl 你只需要簡單的執行下面一句命令,你就能獲取 app 的檔案系統,但是,你得知道 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 開啟 Simulator 中的 APP
有了 simctl ,你可以通過 Command 啟動 Simulator 中的 app, 或者做一些環境變數的控制,這在自動化測試中是非常重要的。

你只要使用一下命令即可實現:

xcrun simctl launch --console booted <BUNDLE ID> <YOUR ARGUMENTS>複製程式碼

9、 通過 Bundle ID 獲取 app 的 info 資訊

有時候,我們想獲得 app 的 更多的資訊,可以通過 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 Simulator 功能強大,是我們開發中必備的神器,當你掌握了它的相關細節以及使用技巧可以極大的提高你的開發效率。當然,作為一個有追求的 iOS 工程師,你更應該去挖掘它那些鮮為人知的功能,然後記得要告訴我喲?!

參考

iOS Simulator on Steroids: Tips & Tricks in Xcode 9

水平有限,如有疏漏,望指正
歡迎交流,歡迎 star CNKCQ
遺人?,手有餘香 blog

相關文章