iOS tweak run in Simulator
iOS tweak run in Simulator
模擬器測試的優點
- 功能基本和實體機一樣
- 模擬器無需越獄,因此可以在新系統無法越獄時第一時間進行適配
- 可測試各種 iOS 版本、設備
- 繼承模擬器本身的優點
測試環境
- x64 macOS(11.5.2)
- Xcode 12.4
- Simulator(iphone 11 pro)
- 工具
- theos: 編譯工具
- simject: 作為Tweak Loader加載我們的dylib
- substitute: CydiaSubstrate
- python 3.6 ~ 3.8
- 原理: 使用 Theos 編譯出模擬器架構(x86_64)的 dylib,由 simject 進行加載。arm 上是由 CydiaSubstrate 為我們進行加載的。
步驟
安裝 simject
git clone https://github.com/angelXwind/simject.git
cd simject/
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 供我們進行測試
cd simjectExampleTweak
- 在 Makefile 中加入
TARGET = simulator:clang::7.0
、_LOGOSFLAGS += -c
、generator=MobileSubstrate
make setup
cp -R simject/simjectExampleTweak/.theos/obj/iphone_simulator/x86_64/simjectExampleTweak.dylib /opt/simject/
cp -R simject/simjectExampleTweak/simjectExampleTweak.plist opt/simject/
- 打開模擬器(Simulator)
resim
- 可以看到模擬器已被重啓,並彈出了一個 AlertView
注意
Tweak 每次重新編譯後,都需要重新複製到 opt/simject/,請先刪除原有檔案,在複製進去,否則會 crash loop