【脱獄アプリ開発】第11回新しいtheosのインストールと簡単なTweakの作成方法

      2016/10/20

how-to-install-theos-top

今回は、以前紹介したtheosの構築方法が古いものになってしまったので、新しくなったtheosと簡単なTweakの作成方法を紹介いたします。

theosを構築するための準備


参考:Installation · theos/theos Wiki

1.XcodeとCommand Line Toolsのインストール

Xcode - What's New - Apple Developer

Mac App Storeで公開されていますが、こちらからDownloadします。

『Xcode』と、使っているOSに合った最新の『Command Line Tools』をDLします。その際、Developer登録が必要になるので、登録しましょう!こちらは無料で登録できます。

登録方法は、「apple developers 登録方法 - Google 検索」こちら!

Platforms -> See what's new in Xcode -> Additional Tools

how-to-install-theos-01

how-to-install-theos-02

こちらからダウンロードしてください。

how-to-install-theos-03

2.Xcodeを起動して行番号を表示させる

how-to-install-theos-04

メニューの

Xcode -> Preferences -> Text Editing -> Line numbers

にチェックを入れると行番号が表示されます。

そのままだと見づらいので、何行目かわかるようにしておきましょう。

3.Macportsをインストール

The MacPorts Project -- Download & Installation

↑こちらのリンクからお使いのOSのものをクリックしてDownloadします。

ダウンロード後、インストールしてください。

how-to-install-theos-05

Macportsをインストールすると、/opt/localディレクトリができます。

4.Macportsを最新のライブラリに更新

ターミナルで以下のコマンドを入力、実行してください。

sudo port -d selfupdate

sudo port -f install dpkg

※El CapitanでMacportsから「dpkg」をインストールしたところ、うまくcompileできませんでしたので、その場合は「Homebrew」からインストールしてください。

参考:iOSOpenDev install solution · 535064094/iosOpenDevInstallTools Wiki

5.dpkgとldidのインストール

Homebrewからインストールします。

ターミナルで以下のコマンドを実行

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null

brew install dpkg ldid

本来ならMacportsから「dpkg」をインストールすればOKなはずでしたが、うまく行かなかったのでHomebrewからインストールしました。

6.ghostのインストール

curl https://ghostbin.com/ghost.sh -o /usr/local/bin/ghost

chmod +x /usr/local/bin/ghost

theosのインストール


1.Emacsでtheosのディレクトリを登録

cd ~
emacs .bash_profile

export THEOS=/opt/theos

ctrl+x ctrl+sで保存 -> ctrl+x ctrl+cでEmacsの終了

一度ターミナルを開き直すことで、ターミナル上で「$THEOS」と入力すると「/opt/theos」ディレクトリを指定したことになります。

2.Githubからtheosをインストール

sudo git clone --recursive https://github.com/theos/theos.git $THEOS

以上で完了です。

how-to-install-theos-06

アップデートするときは

make update-theos

これでアップデートできるとのこと。

ちなみに、自分はまだ古いtheosを使っています。

theos.zip

これを/optディレクトリに入れることで、使用できます。

※もし使う場合、既存の/opt/theosは「theos-new」などとリネームしてください。

theosを使ったサンプルTweakの作成


NEXTi4HACKさんのコードを参考にしてみましょう。

「XtraFinder」をインストールしておくと、そのディレクトリで右クリック→ターミナルで開くということが出来るのでオススメします。

1.ターミナルで「$THEOS/bin/nic.pl」と入力

NIC 2.0 - New Instance Creator
------------------------------
[1.] iphone/activator_event
[2.] iphone/application_modern
[3.] iphone/cydget
[4.] iphone/flipswitch_switch
[5.] iphone/framework
[6.] iphone/ios7_notification_center_widget
[7.] iphone/library
[8.] iphone/notification_center_widget
[9.] iphone/preference_bundle_modern
[10.] iphone/tool
[11.] iphone/tweak
[12.] iphone/xpc_service
Choose a Template (required):

このような表示になりますので「11」と入力

2.Project Nameを「Test」とします

続けてPackage Nameを決めます。通常は自分のドメインを反対から入力し、最後に小文字でプロジェクト名を付けます(例.com.ichitaso.test)これがCydiaのパッケージIDになります。

Author/Maintainer Nameは、ローマ字で自分の名前やニックネームを入力します。

3.MobileSubstrate Bundle filter [com.apple.springboard]

ここではTweakを選択したので、SpringBoardを対象としたTweakに自動的になりますので、そのままreturnを押して構いません。また後から追加編集することができます。

4.Tweak.xmの編集

Tweak作成用のディレクトリで上記コマンドを入力後、そこに「test」というフォルダができているかと思います。

how-to-install-theos-07

control:debパッケージにする際のcontrolファイル
Makefile:パッケージをビルドするときに必要な物を記したファイル
Tweak.xm:プログラムを書くためのファイル
Test.plist:Tweakの対象を記したファイル

このような構成になっています。

5.プログラムを記述する

Tweak.xmを開き、全て削除し以下のコードをコピペして下さい。

#import <SpringBoard/SpringBoard.h>
  
%hook SpringBoard
  
-(void)applicationDidFinishLaunching:(id)application {
    %orig;
    UIViewController *view = [UIApplication sharedApplication].keyWindow.rootViewController;
        while (view.presentedViewController != nil && !view.presentedViewController.isBeingDismissed) {
                view = view.presentedViewController;
        }
    UIAlertController *alertController = 
    [UIAlertController alertControllerWithTitle:@"テスト" 
                                        message:@"単なるテストなんですよ" 
                                 preferredStyle:UIAlertControllerStyleAlert];
    [alertController addAction:[UIAlertAction actionWithTitle:@"はい" 
                                                        style:UIAlertActionStyleDefault 
                                                      handler:^(UIAlertAction *action) {
        //ボタンが押された時の処理                                                      
    }]];
    [alertController addAction:[UIAlertAction actionWithTitle:@"いいえ" 
                                                        style:UIAlertActionStyleDefault 
                                                      handler:^(UIAlertAction *action) {
        //ボタンが押された時の処理                                                      
    }]];
    [view presentViewController:alertController animated:YES completion:nil];
}
%end

これは、SpringBoardを%hookしてSpringBoardが起動(Respring時)にUIAlertControllerを表示させるといった簡単なSampleです。

%hook クラス名 %orig; で、そのオリジナルの動作を行わせ、その後にコードを追加することで通常の動作に自分が行いたい動作を加えることができるといったものです。

最後は、%endで終了することを知らせます。

6.Makefileの編集

ARCHS = armv7 arm64
THEOS_DEVICE_IP = 192.168.xxx.xxx(インストールするデバイスのIP)

include $(THEOS)/makefiles/common.mk

TWEAK_NAME = Test
Test_FILES = Tweak.xm
Test_FRAMEWORKS = UIKit

include $(THEOS_MAKE_PATH)/tweak.mk

after-install::
	install.exec "killall -9 SpringBoard"

64bitのCPU(iPhone 5sやiPad mini 2以降)に対応させる時は「ARCHS = armv7 arm64」と記述してください。

7.ビルドしてみる

それでは実際にビルドしてみましょう。

ターミナル(Testディレクトリ)上で「make package」と入力すると、パッケージを作成することができます。

「Debs」フォルダができて、「.deb」ファイルが作成されたかと思います。

8.debパッケージをインストール

初めに、sshで接続してあげる必要があります。

ssh [email protected]
alpine(デフォルトの場合)

これで、登録するかどうか聞かれるので「yes」と入力して下さい。もし上手くいかない場合は、隠しファイル表示切り替えアプリ「HiddenSwitch」をインストールして、「~/.ssh/known_hosts」をテキストエディタで開き、全て削除してください。

また、OS Xで自動的に作成される.DS_Storeを作成しない環境にしておくと、後々役立つかと思いますので、合わせてやっておきましょう。

OS X El Capitanで「.DS_Store」を作らせない&削除する方法

それでは、「make install」とターミナル上で入力→パスワードを聞かれますので、設定したrootパスワードを入力して下さい。

インストールが完了すると、以下のようにアラートが表示されます。

how-to-install-theos-08

これで初めてtheosで作った自作Tweakが出来ました!

その他のTips


最初に聞かれるパッケージIDの先頭を編集

/opt/theos/bin/nic.pl

$package_prefix = "com.yourcompany" if !$package_prefix;

これを↓

$package_prefix = "com.ichitaso" if !$package_prefix;

こんな感じに編集すると、自分のIDがデフォルトになります。

how-to-install-theos-09

Slide to Unlockの文字を変えてみる

先ほどのTweak.xmを編集します。

%hook SBLockScreenView
-(void)setCustomSlideToUnlockText:(id)arg1
{
    arg1 = @"Jailbreak!";
    %orig(arg1);
}
%end

「make package install」でインストールしてみましょう。

how-to-install-theos-10

文字が「Jailbreak!」になりましたね!

バージョンを固定する

Makefileに以下の文字を記述する

PACKAGE_VERSION = $(THEOS_PACKAGE_BASE_VERSION)

.x .xmファイルなどをシンタックスハイライトする

RegisterUTIsForLogosApp.zip

こちらをダウンロードして、「RegisterUTIsForLogos.app」を起動すれば、シンタックスハイライトされていないファイルでもXcodeで有効になる。

まとめ


GitHubやStack Overflow、Googleなどでいろいろと調べてみましょう。参考になるものが、たくさんあります。

また、自分のようにプログラミング初心者の場合、Objctive-Cの基本的な知識が無いと思わぬ問題を引き起こすものを作ってしまう可能性があります。

ネットの断片的な情報より纏まった書籍で勉強するのがお勧めです。

また、過去記事なども参考にしてください。

iOS development - Will feel Tips

 

この記事が気に入ったら
いいね!しよう

最新情報をお届けします

Twitter でWillFeelTipsをフォローしよう!


  関連記事

【脱獄アプリ開発】第4回 XcodeとiOSOpenDevをインストールしよう!

はい。やめようかと思ったけど、楽しみにしてくれてる方がいらっしゃるとのことで、脱 ...

【脱獄アプリ開発】第8回armv6からarm64(iPhone 3Gから5s)に対応したTweakの作成

連載シリーズ第8回目となる今回は、今では懐かしいiPhone 3Gから現行機種の ...

【脱獄アプリ開発】第5回 Cydia 有料Tweakの提出方法 BigBoss編

今回は、自分で開発した脱獄アプリをCydiaの本家であるBigBossへ提出する ...

【脱獄アプリ開発】第2回 Cydia Debパッケージを作成しよう!

前回は仮想マシンに「Ubuntu」をインストールしました。 今回は、実際にdeb ...

【脱獄アプリ開発】第3回 Google App Engineを使ったCydiaリポジトリの作成方法

さて!連載3回目です。今回は、自分で作ったdebパッケージをCydia Repo ...

 - iOS development