3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

THEOSで簡単なTweakを作ってみよう!ホーム画面にボタン追加する編

Posted at

#THEOSで簡単なTweakを作ってみよう!ホーム画面にボタン追加する編

どーも。高校生のクソガキです。
Twitterはこちら
twitter

##theos構築
これはいちいち手動で構築する人がめんどくさい人向けのtweak
theos instaler2を使ってください
インストールしたらterminalにてroot権限で
theosinstaller 12.2
と打って実行すれば構築できるはずです。

##プロジェクトの作成
terminalで
$THEOS/bin/nic.pl
とうって指示通りに進めていけば作成できます。
詳しくは前記事にしたのでみてみてください。

##tweak作成
さっき作成したプロジェクトにtweakのコードを記述していきます。
Tweak.xというファイルができているはずなので、
そこに書いてある内容を全て消してください
今回はホーム画面にボタンを追加するコードを書いていきます。

#import <spawn.h>
%hook SBHomeScreenViewController
-(void)viewDidLoad {
//viewが読み込まれたとき
    %orig;
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btn.frame = CGRectMake(10, 10, 100, 30);
    //btnを大きさ指定して生成
    [btn setTitle:@"押してね" forState:UIControlStateNormal];
    [btn addTarget:self action:@selector(hoge:)
    forControlEvents:UIControlEventTouchDown];
    //btnを押したときに呼び出されるmethodの名前を決める
    [self.view addSubview:btn];
    //btnをSBHomeScreenViewControllerのviewに追加
}
%new
-(void)hoge:(UIButton *)sender {

    UIViewController *view = [UIApplication sharedApplication].keyWindow.rootViewController;
    while (view.presentedViewController != nil && !view.presentedViewController.isBeingDismissed) {
            view = view.presentedViewController;
    }

    UIAlertController *alertController =
    [UIAlertController alertControllerWithTitle:@"Respring"
    message:@"respringしたいか?"
    preferredStyle:UIAlertControllerStyleAlert];

       [alertController addAction:[UIAlertAction actionWithTitle:@"Yes"
                style:UIAlertActionStyleDefault

                handler:^(UIAlertAction *action) {
                    //respring
                    pid_t pid;
                    int status;
                    const char* args[] = {"killall","-9","backboardd",NULL};
                    posix_spawn(&pid,"usr/bin/killall",NULL,NULL,(char* const*)args,NULL);
                    waitpid(pid,&status,WEXITED);

                }]];

       [alertController addAction:[UIAlertAction actionWithTitle:@"Cancel"
                style:UIAlertActionStyleDefault

                handler:^(UIAlertAction *action) {
                }]];

       [view presentViewController:alertController animated:YES completion:nil];
}
%end

こんな感じでtweak.xを書いてください。
1行目のspawn.hはリスプリングするときに必要になるのでインポートしといてください。
ちなみに四行目の%origがないと、既存の処理が全て消え、今回書いたコードだけになるので、絶対つけてください。

ではコードが書き終わったので、次はmakefileを開いてください。
開きましたら一番上に
ARCHS = arm64 arm64e
とかいてください。
書かなくても一応コンパイルはできますが、
arm64eという記載がないと、A12プロセッサーに対応したtweakが作れません。

では作業が終わったので、コンパイルしてみましょう。
terminalを開いて、
tweak.xとかmakefileがあるディレクトリにcdコマンドで移動します。
cd /var/mobile/test
みたいな感じでやってください。
できましたら、
makefile
と入力してください。
何もエラーが出なければdebian packageの出来上がりです。
先ほどのディレクトリにpackageというフォルダーができてるはずなので、
そこにいき、debをインストールしてみてください。

respringしてホーム画面にボタンが出現すれば完成です!!
##ターミナルいくのめんどくさい!!て方
わざわざfilzaからターミナルに行ってコンパイルするのめんどくさいよという方は、
僕がfilzacompilerというtweakを作ったので、
twitterのdmくればあげます

#まとめ
簡単でしたね!!何か質問があればtwitterのdmとかにくれば教えます。
お疲れ様でした。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?