Contents
THEOSとは
脱獄tweakを開発するための環境のこと。
GitHubで最新の導入記事か書かれていたのでそちら向けにアップデートしました。
Installation
少し長いですが、脱獄Tweakを開発しようという意図があるレベルまでコンピュータの知識がある方なら迷うところなく進められると思います。
Xcode
ビルドにXcodeが必要なのでまずはXcodeをインストールします。
Homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Homebrewをインストールしてからldidとxzをインストールします。
brew install ldid xz
THEOS
アップデートでものすごく簡単になっていました。
echo "export THEOS=~/theos" >> ~/.profile source .bash_profile
パスを設定します。
sudo git clone --recursive https://github.com/theos/theos.git $THEOS
GitHubから最新のTHEOSをクローンしたら準備は完了です。
THEOSのアップデート
しっかりと設定ができていれば以下のコマンドでTHEOSのアップデートが行なえます。
$THEOS/bin/update-theos
もしも以下のようなエラーがでた場合は古いバージョンのTHEOSのなので再インストールしましょう。
make: *** No rule to make target 'update-theos'. Stop.
まとめ
以前はMacPortをインストールしたりとかghostをインストールしたりとかでややこしかったのですが、だいぶ手順が簡略化された印象があります。
記事は以上。
アプリの作成
さて準備ができたところで早速脱獄アプリを作っていきましょう。
個人的には広告を非表示にする機能をつけたいので、アプリというよりはtweakになります。
こっちの方が簡単なので、個人的にも好都合ですね。
プロジェクトを作成
まずは以下のコマンドで作成のためのツールを呼び出します。
$THEOS/bin/nic.pl
------------------------------ [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
するとどんなものを作成するかきかれます。ここではtweakを作るので11を選びます。
Project Name (required): ikawidget2 Package Name [com.yourcompany.ikawidget2]: work.tkgstrator Author/Maintainer Name [Asano Kazuna]: Tkgling
プロジェクト名とパッケージネームを決めます。パッケージネームはURLを逆にしたものを使うのが普通だとか。
[iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]: [iphone/tweak] List of applications to terminate upon installation (space-separated, '-' for none) [SpringBoard]:
ここはEnterを連打で良いとかなんとか。
コードを書いてみる
今回は何かを非表示にするというコードを書きたいので、以下のページを参考にすることにしました。
ただし、書かれているのが少々古いのでうまく使えるかどうかば微妙です。
基本的にコピペするだけなので、リンク先を参照してください。
※今回は特にコピペもしてません(あかん)
Makefile
なんでこれでいいのかわからないんですが、こういうのが書いてあったのでとりあえず真似してみる感じ。
ARCHS = armv7 arm64 THEOS_DEVICE_IP = 192.168.xxx.xxx(IP address) include $(THEOS)/makefiles/common.mk TWEAK_NAME = ikawidget2 Test_FILES = Tweak.xm Test_FRAMEWORKS = UIKit include $(THEOS_MAKE_PATH)/tweak.mk after-install:: install.exec "killall -9 SpringBoard"
注意点
make xcrun: error: SDK "iphoneos" cannot be located ==> Error: You do not have an SDK in /Library/Developer/CommandLineTools/Platforms/iPhoneOS.platform/Developer/SDKs or /opt/theos/sdks. make: *** [before-all] Error 1
こういうエラーがでて躓いてしまった。悪戦苦闘していたのだが、issueで解決済みだったので実践したらあっという間に解決した。やはりこういうのは英語で調べるに限ります。
https://github.com/theos/theos/issues/255
sudo xcode-select -switch /Applications/Xcode.app
どうもXcodeを正しく認識していなかっただけのようだ。
適当にmakeしてみる
とりあえず何も書いていないコードなのだが、makeしてみるとこうなった。
make 2018-03-23 20:15:33.652 xcodebuild[8115:71899] [MT] PluginLoading: Required plug-in compatibility UUID B395D63E-9166-4CD6-9287-6889D507AD6A for plug-in at path '~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/XVim2.xcplugin' not present in DVTPlugInCompatibilityUUIDs > Making all for tweak ikawidget2… ==> Warning: No files to link. Please check your Makefile! Make sure you set ikawidget2_FILES (or similar variables) ==> Linking tweak ikawidget2 (armv7)… clang: warning: libstdc++ is deprecated; move to libc++ with a minimum deployment target of iOS 7 [-Wdeprecated] ==> Generating debug symbols for ikawidget2 (armv7)… warning: no debug symbols in executable (-arch armv7) ==> Warning: No files to link. Please check your Makefile! Make sure you set ikawidget2_FILES (or similar variables) ==> Linking tweak ikawidget2 (arm64)… clang: warning: libstdc++ is deprecated; move to libc++ with a minimum deployment target of iOS 7 [-Wdeprecated] ==> Generating debug symbols for ikawidget2 (arm64)… warning: no debug symbols in executable (-arch arm64) ==> Merging tweak ikawidget2… ==> Signing ikawidget2…
今回はメインテーマはセットアップだったので、実際の動作確認等は次の記事で実践したいところである(将棋ソフトはどうした)
おまけ
なんだかmakeが正しく成功しない場合があるので、その時は
sudo cpan IO::Compress::Lzma
としてあげるとよい。
参考:https://github.com/theos/theos/issues/273#issuecomment-351310010
自身を天才と信じて疑わないマッドサイエンティスト。二つ上の姉は大英図書館特殊工作部勤務、額の十字架の疵は彼女につけられた。