iOS
JailBreak
Tweak

iOS Tweaks Devのメモ

More than 1 year has passed since last update.

Tweak 開発には、iOSOpendevtheosを使う方法がある。

iOSOpendev

旧式の開発方法らしい。
こっちを推奨しているのが多いが、古いし駄目だ。
ちょっといじっただけで、Activator Listenerなんて動かない。

theos

未だに定期的に更新がある。
こっちを採用。

Makefile

theosのMakefileの一例
引っかかった設定とかコメントに書いておいた。

include $(THEOS)/makefiles/common.mk
# DeviseのIP
THEOS_DEVICE_IP=192.168.xxx.xxx

# ツール名。接頭語になる。
TWEAK_NAME = xxx
# コンパイル対象
xxx_FILES = File.mm
# /opt/theos/vendor/lib/ に設置したライブラリ
xxx_LIBRARIES = activator
# 使用したFramework
xxx_FRAMEWORKS = UIKit CoreGraphics
# 使用したPrivate Framework
xxx_PRIVATE_FRAMEWORKS = IOKit
# -fobjc-arc: ARCを使用
#  -Wno-xxxx とかはここで指定
xxx_CFLAGS =-fobjc-arc

include $(THEOS_MAKE_PATH)/tweak.mk

internal-stage::
    #PreferenceLoader plist
    $(ECHO_NOTHING)if [ -f Preferences.plist ]; then mkdir -p $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/xxx; cp xxx/Preferences.plist $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/xxx/; fi$(ECHO_END)

# 適宜変更 springboardかの2択
after-install::
    install.exec "killall -HUP backboardd"

デバッグ

エラーの実機での解決は諦めろ。
XCodeにコピーして検証。

仮想のタッチイベントを起こしたい場合

[iOS Tweaks Dev]タッチ動作をエミュレート出来るライブラリ「SimulateTouch」を使ってみた話を参考。

iolate/SimulateTouchがおすすめです。
かなりの速度で動作する。

[SimulateTouch simulateTouch:0 atPoint:CGPointMake(0, 0) withType:STTouchDown]

は使用している乱数でエラーを起こすので、

[SimulateTouch simulateTouch:1 atPoint:CGPointMake(0, 0) withType:STTouchDown]

のように0以上のIDを指定しましょう。(1~14らしい?)