日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用好模拟器

發布時間:2024/3/26 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用好模拟器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這個 session 講了模擬器的一些知識,幫助我們更加好的利用模擬器進行開發。

模擬器是什么

從功能上理解

模擬器讓我們能在 MacOS 上模擬 iOS、watchOS 和 tvOS。
相比真實的設備,有更多的內存和 CPU,并且能夠同時運行多個。
作為工程師,停留在這個水平顯然是不夠的。

從技術上理解

Simulator is iOS, watchOS, or tvOS userspace running on macOS kernel

怎么理解這句話呢?
操作系統可以大略分為 kernel 和 userspace。
kernel 處理關于硬件的抽象及內存分配等。
userspace 自底向上可以分為四層:

  • launchd
  • daemons,比如 cfprefsd
  • framworks,比如 UIKit
  • appliacation,比如 photo 應用

每一個模擬器都是這樣子一個 userspace。 整體架構如下圖: 
關于模擬器還有以下事實:

  • macOS 和模擬器共用一套文件系統,但是有不同的 $HOME 路徑
  • 從 libSystem 到 UIKit,都使用了模擬系統的 ABI
  • 不是 emulator,因此架構不是 arm,而是 x86
  • 不能模擬 CPU 和 內存
  • 和真實設備相比,有不同的 CPU 核心數,多線程表現也不盡相同
  • 沒有沙盒限制。在模擬器上可以在在沙盒外寫數據,但是在設備上不可以
  • 和macOS 不同,模擬器的文件系統是大小寫敏感的
  • 支持 Thread Sanitizer

模擬器使用的技巧

手勢操作

  • 可以利用 option 來模擬 pinch 手勢
  • 可以利用 control 來模擬 drag & drop
  • 可以通過 hardware 來手動觸發 shake 手勢

設置音頻輸入輸出


這樣子可以在模擬器放歌曲,在耳機里聽歌了。

支持 iCloud 操作

可以登陸 iCloud,也可以手動觸發 iCloud 同步。

模擬內存不足

在 Debug 菜單內,也可以通過鍵盤快捷鍵。

模擬器管理

  • 新增  新增模擬器時,可以選擇 OS Version 和 Simulator Name。
    如果需要下載其他 runtime 的模擬器,比如 iOS 10,那么需要先下載 runtime。 

  • 刪除
    可以勾選掉 Show as run destination。 
    也可以直接刪除,通過 delete 按鍵或者上下文菜單都可以

調整模擬器的 size

有三種預置尺寸可以選擇

  • Physical Size
    把手機放上去,和屏幕上一模一樣
  • Point Accurate
    1 UIKit point = 1 AppKit point
  • Pixel Accurate
    物理像素一致。模擬器的一個物理像素和電腦的一個物理像素對齊。
  • 此外,還可以使用鼠標縮放模擬器,如同操作普通窗口一樣。

    可以模擬慢速動畫

    舊的 Xcode 版本使用新版本的模擬器

    其實只要有新版本模擬器的 runtime 就好了

    傳輸內容到模擬器上

    可以通過拖拽方式,直接把以下五種類型的數據轉移到模擬器上。

    • App bundles
    • Locations: 需要在模擬器和電腦上同時打開 Map
    • Photo/image files
    • Video files
    • URLs: 需要在模擬器和電腦上同時打開 Safari

    其他操作

    • 可以模擬位置和運動速度
    • 可以模擬電話進來
    • 可以模擬有外接屏幕
    • 可以設置墻紙
    • 支持語音輸入
    • 可以設置鍵盤,也支持滑動輸入
    • 支持 dark mode
    • 可以支持 Siri
    • 可以支持 tvOS

    simctl

    simtl,其實就是 simulator control,是一個命令行工具,可以用來操作模擬器。

    help 命令

    可以輸入xcrun simctl help 來獲取所有幫助信息,也可以輸入xcrun simctl help <subcommand> 來獲取制定子命令的詳細信息,如xcrun simctl help list

    list 命令獲取列表

    輸入xcrun simctl list,獲取所有模擬器信息,會按照Device Types、Runtimes 和 Devices 來展示所有設備。
    list 后可以輸入條件來過濾,例子如下

    xcrun simctl list devices 'iPhone 8' == Devices == -- iOS 12.2 --iPhone 8 (70E73274-90B7-474E-A2C3-A490BE004EEC) (Shutdown)iPhone 8 Plus (1C31EE65-6B40-418A-BF83-899AE4F83BCD) (Booted) -- tvOS 12.2 -- -- watchOS 5.2 --

    通過 create 命令創建模擬器

    create <name> <device type> <runtime>

    通過 lanuch 來啟動模擬器上的一個應用

    launch <device> <bundle> <arguments>

    和用手點擊模擬器的圖標效果一樣

    啟動和關閉模擬器

    分別對應 boot 和 shutdown 命令

    clone 模擬器

    可以 clone 模擬器中的 App、UserDefaults 等信息。

    安裝應用到模擬器上

    install <device> <example.app>

    一些 alias

    模擬器的命令,有些需要輸入設備名字。有一些別名可以簡化這個操作

    • booted 已經被啟動的模擬器
    • all 所有模擬器
    • unavailable 對應的運行時已經被刪除了的模擬器

    一個Demo

    Metal 和模擬器

    新的 macOS 系統上運行的新模擬器支持 Metal 了,這有兩層含義:

  • 模擬器運行在 Metal 上,速度更快了
  • 在模擬器上可以運行 Metal API了,不必在真機上調試
  • 目前模擬器上 UIKit、SpriteKit、SceneKit、CoreAnimation、CoreImage 和 MapKit 都是基于 Metal 的。
    Session 里通過幾個例子來對比了前后的運行速度,確實快了很多很多。
    至于在模擬器上運行 Metal,這個我暫時不會。

    導圖

    參考

    • Getting the Most Out of Simulator
    • simctl

    轉載于:https://www.cnblogs.com/huahuahu/p/li-yong-hao-mo-ni-qi.html

    總結

    以上是生活随笔為你收集整理的利用好模拟器的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。