logo头像

星星給予仰望者光芒

iOS tweak run in Simulator

  iOS tweak run in Simulator

模擬器測試的優點

  1. 功能基本和實體機一樣
  2. 模擬器無需越獄,因此可以在新系統無法越獄時第一時間進行適配
  3. 可測試各種 iOS 版本、設備
  4. 繼承模擬器本身的優點

測試環境

  1. x64 macOS(11.5.2)
  2. Xcode 12.4
  3. Simulator(iphone 11 pro)
  • 工具
    1. theos: 編譯工具
    2. simject: 作為Tweak Loader加載我們的dylib
    3. substitute: CydiaSubstrate
    4. python 3.6 ~ 3.8
  • 原理: 使用 Theos 編譯出模擬器架構(x86_64)的 dylib,由 simject 進行加載。arm 上是由 CydiaSubstrate 為我們進行加載的。

步驟

安裝 simject

  1. git clone https://github.com/angelXwind/simject.git
  2. cd simject/
  3. make setup
  • 安裝後會新增資料夾 /opt/simject 實質是對應實體機上的 /Library/MobileSubstrate/DynamicLibraries,後續把編譯完成的 dylib 和 plist 放在這裡,simject 就會幫我們加載。
  • 安裝後會新增命令行工具 resim, 類似 sbreload,可用於重啓模擬器的 SpringBoard。
  • 每個模擬器啓動後,並不會自動加載 simject,每次都需要執行 resim 一次,之後僅需在需要 sbreload 時再 resim

安裝Cydia Substrate

simject 提供了一個腳本幫我們自動安裝好 Cydia Substrate

  • 如果是Xcode 10 或者 以上 sudo ./installsubstrate.sh subst
  • Xcode10 以下 使用 sudo ./installsubstrate.sh cs

測試

simject 提供了 simjectExampleTweak 這個 demo 供我們進行測試

  1. cd simjectExampleTweak
  2. 在 Makefile 中加入 TARGET = simulator:clang::7.0_LOGOSFLAGS += -cgenerator=MobileSubstrate
  3. make setup
  4. cp -R simject/simjectExampleTweak/.theos/obj/iphone_simulator/x86_64/simjectExampleTweak.dylib /opt/simject/
  5. cp -R simject/simjectExampleTweak/simjectExampleTweak.plist opt/simject/
  6. 打開模擬器(Simulator)
  7. resim
  8. 可以看到模擬器已被重啓,並彈出了一個 AlertView

注意

Tweak 每次重新編譯後,都需要重新複製到 opt/simject/,請先刪除原有檔案,在複製進去,否則會 crash loop