JIT (Just-in-time compilation, 即時編譯技術)可以大幅提昇模擬器APP的執行速度,例如UTM虛擬機、iSH Shell、PojavLauncher (Minecraft Java版啟動器)、RetroArch模擬器等等。
以UTM虛擬機為例,啟用JIT之後,Linux虛擬機的開機速度便快了二倍以上!可見此技術的重要性。
可惜的是Apple以安全性為由,禁止啟用JIT的APP上架App Store,所以JIT只能在側載的APP啟用。
1. 啟用JIT的方法#
目前iOS要啟用JIT有幾種方法:
- 越獄
- 透過 TrollStore開啟APP,啟用JIT
- 透過AltStore開啟APP,啟用JIT
- SideJITServer,無線啟用JIT
- Jitterbug,用另一部iOS裝置無線啟用JIT
本文討論的是AltStore的方法,AltStore開發者把它稱作「AltJIT」。
根據 AltStore官方文件,iOS 17以前版本可透過AltStore長按選單啟用JIT。或者用電腦的AltServer給APP啟用JIT。
但是iOS 17、iOS 18以後的版本僅能透過Mac電腦啟用JIT,條件非常嚴苛。也就是說iOS裝置必須插著Mac電腦才能給APP用JIT,APP關閉後JIT就會消失。
目前尚未支援Windows電腦。如果沒有Mac電腦,或許可以用虛擬機跑macOS達成目的。
2. 安裝AltStore的依賴套件#
安裝AltStore到Mac
開啟Mac終端機,安裝Xcode工具
xcode-select --install
安裝OpenSSL
brew install openssl@3
- 再用系統的Python安裝pymobiledevice3套件,需要指定版本
sudo /Applications/Xcode.app/Contents/Developer/usr/bin/python3 -m pip install pymobiledevice3==2.30.0 construct==2.10.69
將iOS裝置插上Mac
執行AltServer,點選Enable JIT,再選取iOS裝置上的APP即可。注意:由於App Store禁止支援JIT的APP上架,所以APP即使有上架App Store也必須改用AltStore側載IPA,才能啟用JIT。
目前pymobiledevice3在iOS 17似乎有很多bug,如果AltServer跳出錯誤請到下方的Github issue查看解決方式。