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

連載シリーズ第8回目となる今回は、今では懐かしいiPhone 3Gから現行機種のiPhone 5sまでに対応したJailbreak Tweakの作成方法を紹介いたします。
作成する方法は前回紹介した「Theos」を使った方法です。
Xcodeのインストール
現在の最新バージョンは、Xcode 5.1となっておりiOS 7.1 SDKが使われています。しかし現状Jailbreakできるのは、iOS 7.0.6までなのでXcode 5.0.2を使用します。古いXcodeをDownloadするにはDeveloper登録が必要になるので登録します。
(iOSアプリのDeveloper登録ではないので無料です)
DownloadタブからAdditional Toolsの「View downloads >」をクリックし以下のものをDLします。
- Xcode 5.0.2
- Xcode 4.4.1
- Command Line Tools(OSに合ったもの)
Xcode 5.0.2をARMv6に対応させる
具体的に言うとXcode 5.0.2はアーキテクチャがARMv7以降しか対応していないため、iPhone 3GやiPod touch 3G以前の古い機種で使われているARMv6には対応していません。参考:iPhone – The iPhone Wiki
そのままですとTheosでコンパイルする際、Makefileに「ARCHS = armv6」と記述するとエラーが出てビルドできません。それを修正するため「Xcode 4.4.1」を利用してARMv6にも対応させるのが今回の目的です。
「iPhone Development Wiki」で紹介されている方法を用いて修正します。
ターミナルを開いて以下のコマンドを入力します。
cd /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.0/lib/darwin/Gist:How to compile for ARMv6 and ARM64
mv libclang_rt.ios.a libclang_rt.ios-7.0.a
lipo -thin armv6 -output libclang_rt.ios-5.1.a /Applications/Xcode_4.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/4.0/lib/darwin/libclang_rt.ios.a
lipo -create -output libclang_rt.ios.a libclang_rt.ios-5.1.a libclang_rt.ios-7.0.a
cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/usr/lib/
mv dylib1.o dylib1-7.0.o
lipo -thin armv6 -output dylib1-5.1.o /Applications/Xcode_4.4.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/usr/lib/dylib1.o
lipo -create -output dylib1.o dylib1-5.1.o dylib1-7.0.o
mv crt1.o crt1-7.0.o
lipo -thin armv6 -output crt1-5.1.o /Applications/Xcode_4.4.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/usr/lib/crt1.o
lipo -create -output crt1.o crt1-5.1.o crt1-7.0.o
mv crt1.3.1.o crt1-3.7.o
lipo -thin armv6 -output crt1.5.1.o /Applications/Xcode_4.4.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/usr/lib/crt1.3.1.o
lipo -create -output crt1.3.1.o crt1.5.1.o crt1-3.7.o
Makefileの記述
Makefileの先頭に以下のように記述することで『armv6からarm64』までに対応したものがコンパイルされます。TARGET := iphone:clang実際にarmv6からarm64に対応したTweak:a3tweaks/Flipswitch
TARGET_IPHONEOS_DEPLOYMENT_VERSION = 3.0
TARGET_IPHONEOS_DEPLOYMENT_VERSION_arm64 = 7.0
ARCHS = armv6 armv7 arm64
こちらはTweakを作成するときの参考にもなるかと思うので、目を通してみてください。
RemoveAdsToggle v1.1-7で今回の方法を使用しました。もし何か問題がありましたらコメントなどで教えていただければと思います。でわでわ!!
ディスカッション
コメント一覧
iPhone5sの純正メール返信時の引用削除についてなのですが(Mailpatcher)等、
ああいったTweakはやはりかなり難しい作りなのでしょうか?
moyashiさんじゃないと仕組みがわからないですね…(難しいです)
以前の記事で紹介されていたように、シェルスクリプトを実行するtweakを作りたく考えております。
しかし、SBSettingsをインストールしていないと任意のシェルスクリプトの実行はできないのでしょうか。
よろしくお願いします。
仰るとおりシェルスクリプトの実行にはSBSettingsが必要になります。
簡単なファイルの移動や削除、コピーなどはNSFileManagerで代用しています。
NSTaskを使えばObjective-Cでもある程度シェルっぽいことは出来ますよ。