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

      2016/05/05


連載シリーズ第8回目となる今回は、今では懐かしいiPhone 3Gから現行機種のiPhone 5sまでに対応したJailbreak Tweakの作成方法を紹介いたします。



作成する方法は前回紹介した「Theos」を使った方法です。

【脱獄アプリ開発】第7回theosのインストールから簡単なTweakの作成までのガイドライン

Xcodeのインストール


現在の最新バージョンは、Xcode 5.1となっておりiOS 7.1 SDKが使われています。しかし現状Jailbreakできるのは、iOS 7.0.6までなのでXcode 5.0.2を使用します。

古いXcodeをDownloadするにはDeveloper登録が必要になるので登録します。
(iOSアプリのDeveloper登録ではないので無料です)

Xcode 4 Downloads and Resources – Apple Developer



DownloadタブからAdditional Toolsの「View downloads >」をクリックし以下のものをDLします。
  • Xcode 5.0.2
  • Xcode 4.4.1
  • Command Line Tools(OSに合ったもの)
はじめにXcode 4.4.1を「Xcode_4.4.1.app」とリネームしApplicationsフォルダに入れます。その後、Xcode 5.0.2をApplicationsフォルダに入れて下さい。

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/

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

Gist:How to compile for ARMv6 and ARM64

Makefileの記述


Makefileの先頭に以下のように記述することで『armv6からarm64』までに対応したものがコンパイルされます。

TARGET := iphone:clang
TARGET_IPHONEOS_DEPLOYMENT_VERSION = 3.0
TARGET_IPHONEOS_DEPLOYMENT_VERSION_arm64 = 7.0
ARCHS = armv6 armv7 arm64

実際にarmv6からarm64に対応したTweak:a3tweaks/Flipswitch

こちらはTweakを作成するときの参考にもなるかと思うので、目を通してみてください。

RemoveAdsToggle v1.1-7で今回の方法を使用しました。もし何か問題がありましたらコメントなどで教えていただければと思います。でわでわ!!

 

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

最新情報をお届けします

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


  関連記事

NotifyWiFi 7 – Wi-Fi接続時の通知機能やブラックリストによるWi-Fi強制OFF!

以前、Wi-Fiに接続した際に通知を表示させ、どのネットワークに繋がっているか確 ...

iOS 10.2を脱獄する「yalu102」beta7がリリース!多くの64bitデバイスをサポート

iOS 10.2を脱獄することが出来るyalu102ですが、先程アップデートが行 ...

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

今回は、以前紹介したtheosの構築方法が古いものになってしまったので、新しくな ...

PasteBoardSwitch - iPhoneのコピー履歴を保存する脱獄Tweak

iPhoneやiPadなどでコピーした履歴を保存、履歴からクリップボードにコピー ...

QuickClearKBDict - iOS 8対応キーボード変換学習機能を簡単にリセット!

以前作成した「KillKeyboardDict」シリーズの簡易版として、コントロ ...

 - iOS development, Jailbreak