FLEXibleを使ったTweak作成方法
今回はFLEXibleという脱獄アプリを使い、簡単なTweak作成方法を紹介します。
Theos構築〜ビルド、インストールまでは割愛します。ご了承ください。
FLEXibleを使うのでCydiaよりインストールしておいてください。インストール完了しましたら、設定アプリからFLEXibleを選択します。
そしてアプリのメソッドを特定したい場合は「Enabled Applications」からアプリを選びスイッチをオンにします。
そして前の画面に戻り「Respring」をタップして適応させます。
ホーム画面(SpringBoard)の場合は「Enabled on SpringBoard」のスイッチをオンにします。そしてRespringして適応させます。すると
画面のようにFLEXibleのtool barが表示されます。ここまで出来れば準備はOKです。
それではTweak作成に行きましょう。
例えばDockのボカシを消したい場合の操作方法です。tool barの「select」をタップします。
このようになります。この状態から更にDockの背景部分をタップします。
するとDock部分が囲まれました。更に「view」をタップします。
こんな画面になりました。これはその画面で使用されてるクラスの一覧のようなものだと思ってください。そしてグレーになってるクラスの右にあるiマークをタップします。
こんな画面になりました。次に「preview image」をタップして消したいものなのかを確認します。
この場合はアプリまで表示されています。これだとアプリまで消えてしまうので探してるクラスではありません。なので前の画面に戻り、上の方にある「SBDockView」というクラスのiマークをタップします。そして同じく画像表示させて確認します。
このような画像が表示されたらOKです。まさにこの画像がDockの背景部分です。これでひとまずクラスが特定出来ました。
前の画面に戻り下にスクロールさせると「IVARS」という項目があります。これはSBDockViewクラスで宣言されているインスタンス変数です。この中のそれっぽいものが、
UIImageView *_backgroundImageView
これになります。同様に画像確認しておきます。先程と同じ画像ならこのインスタンス変数がDock背景画像となります。
次にTweakを作成するのですが、今回のような何かを消す又は非表示にするといったTweakの場合は、
-(void)layoutSubviews
というメソッドが使えます。
それとこの背景画像はUIImageViewなので本来はこのクラスをhookしなければいけません。そこで便利なのが
MSHookIvar
これです。インスタンス変数を変更する為の関数です。Tweakを作ってる方なら大体の察しはついているかとは思いますがこの背景画像はUIImageViewでインスタンス変数を定義しています。この変数をhookして非表示にするという事ですね。まあ難しい事は置いといて、取り敢えず$THEOS/bin/nic.plからTweakでプロジェクト作成し、Tweak.xmを編集しましょう。
ここに記述するコードは
|objc| @interface SBDockView:UIView @end
%hook SBDockView
-(void)layoutSubviews {
%orig;
UIImageView * backgroundImageView = MSHookIvar
こんな感じになります。
書けましたらビルドしてdebファイルをインストールしてRespringしてみましょう。Dock背景が消えて透明になっていれば成功です。
FLEXibleを使ったTweak作成はだいたいこんな感じで進めていきます。
他にもメソッドを任意に呼び出したりする事もできます。気になるメソッドがある場合、呼び出して動作確認するといった使い方もありますね。
2016/2/29
質問がありましたら下のLINE@ボタンより追加して下さい。
Twitterやってます。
Follow @ray__kisaragi
オマケのカスタム検索です。