前回は仮想マシンに「Ubuntu」をインストールしました。
今回は、実際にdebパッケージを作成してみましょう!
前回の記事を見ていないかたは、先に目を通してください。
【脱獄アプリ開発】第1回 VirtualBoxにLinux Ubuntuをインストール!
debパッケージ作成用のディレクトリを作る
仮想マシンでLinuxを起動しましょう。
ホームディレクトリに分かりやすい名前でフォルダを作ります。
例.「apt」というフォルダを作りました。
この中で、Cydia用のファイルを作成します。
簡単なdebパッケージを作ろう!
「apt」ディレクトリの中に、「test」というフォルダを右クリックで作ります。
その中に、/var/mobileというフォルダを作ります。
そこで、右クリックで「新しいドキュメントの作成」→「空のドキュメント」とクリックして「hello」というファイルを作ります。中身は何でもOK!お決まりの「Hello world」とでも記述しておきます。
次に、「test」ディレクトリに戻り、「DEBIAN」というフォルダを作ります。
同じく右クリックで空のドキュメントを作成→「control」という名前でファイルを作ります。
controlファイルは、debパッケージを作る上で、ベースとなるものです。
記述には決まりがありまして、最後に一行空行を入れるなどあります。
Author: yourname <yourname@example.com> Maintainer: yourname <yourname@example.com> Name: Test deb Package: domain.yourname.test Depends: Section: Tweaks Version: 0.1-1 Architecture: iphoneos-arm Description: test deb package. Depiction: Homepage: Sponsor: dev: yourname Tag: purpose::extension Icon: Installed-Size:このような形で記述してください。
それぞれの項目の後に、半角スペースを入れてあげます。
- Author、Maintainer、devは自分の名前
- Package:自分のドメイン.自分の名前.そのパッケージの名前といった形で記述
- Depends:インストールするときに、一緒にインストールするもののPackage名を記述
- Section:Cydiaで認識するカテゴリみたいなもので、表示されるアイコンがここで変わります
- Version:バージョン情報で、インストールしていた場合、数字によってCydiaのアップデートに反映されます
- Architecture:iphoneos-arm固定でOK
- Description:そのパッケージの簡単な説明で、Cydiaで一覧で見た時に表示されます
- Depiction:HTMLで書かれたURLを記述しておくと、Cydiaで開いた時にその内容が表示されます
- Homepage:メインのホームページがある場合に記述します
- Sponsor:BigBossやModmyiなどへ提出する時に記述されます(自分で記述しなくてOK)
- Tag:基本「purpose::extension」でOK
- Icon:Cydiaで開いた時に表示させたいアイコンのパスを記述
- Installed-Size:インストールされたときのサイズ(特に記述しなくてもOK)
その他は、以下を参考にしてください。
Debianパッケージのcontrolファイル - ichitaso
さて、記述が終わりましたら保存するわけですが、上の画像のように「control~」というファイルができてしまいました。これは、バックアップから戻すためのファイルで、Debパッケージの中には不要なものになります(OS Xの.DS_Storeも同様)
普段は隠しファイルとなっているので、見えません。
メニューバーの「表示」→「隠しファイルを表示する」にチェックしてください。
そうすると、表示されるようになるので削除しておきましょう。
test.debの構成
apt
+- test
+- var
| +- mobile
| +- hello
+- DEBIAN
+- control
出来ましたでしょうか?
それでは、これを元にDebパッケージを作成します。
Debパッケージの構築
「端末」を起動して、以下のコマンドを一行ずつ入力
cd ~/apt(自分で作ったディレクトリ名) dpkg-deb -b test
デキタ━━━ヽ(∀゚ )人(゚∀゚)人( ゚∀)ノ━━━!!
iPhone3GSでHD画質のビデオを撮れる「3GS HD Video Enabler」の作成
では、もう少し難しいものも作ってみます。
iPhone 3GS でHD画質の動画を撮る方法|ichitaso's back of flyer
ちょっと古めな記事ですが、この内容を自動で行なってくれるものを作ります。
パッケージの名前のフォルダを作ります。
ディレクトリの階層が深くなるので、ターミナルである程度作ります。
cd ~/apt/com.ichitaso.3gshdvideo mkdir DEBIAN
mkdir -p System/Library/PrivateFrameworks/Celestial.framework/N88DEBIANフォルダに以下のファイルを作成します。
参考:
preinst:インストール前に、実行するシェルスクリプト
postinst:インストール後に、実行するシェルスクリプト
prerm:リムーブする前に、実行するシェルスクリプト
postrm:リムーブする後に、実行するシェルスクリプト
※アップデート時にも関係してきます。
それぞれの内容は、以下のようにします。
Author: ichitaso Maintainer: ichitaso Name: 3GS HD Video Enabler Package: com.ichitaso.3gshdvideoenabler Conflicts: com.iphonerepocenter.hdvideoenabler3gstheme, cy.model+iphone (>= 2), cy.model+iphone (<< 3) Depends: firmware (<= 4.2.1) Section: System Version: 1.0-1 Architecture: iphoneos-arm Description: SuperHD Video Rec Enabled for iPhone 3GS. Depiction: http://willfeeltips.appspot.com/depiction/3gshdvideo.html Homepage: http://ichitaso.blogspot.com dev: ichitaso Tag: purpose::extensioncy.model+iphone (>= 2), cy.model+iphone (<< 3)で、iPhone 3GSのみに指定 iOS 4.2.1以降では機能しないので、Depends: firmware (<= 4.2.1)としています。
#!/bin/sh cd /System/Library/PrivateFrameworks/Celestial.framework/N88/ mv AVCapture.plist AVCapture.plist.bak mv CameraRollValidator.plist CameraRollValidator.plist.bak mv CameraSetup.plist CameraSetup.plist.bak mv MediaValidator.plist MediaValidator.plist.bak exit 0元のファイルをバックアップしておきます。
#!/bin/sh declare -a cydia cydia=($CYDIA) if [[ ${CYDIA+@} ]]; then eval "echo 'finish:restart' >&${cydia[0]}" fiインストール完了後にRespringさせます(restartをrebootにすれば再起動となります)
#!/bin/sh cd /System/Library/PrivateFrameworks/Celestial.framework/N88/ mv AVCapture.plist.bak AVCapture.plist mv CameraRollValidator.plist.bak CameraRollValidator.plist mv CameraSetup.plist.bak CameraSetup.plist mv MediaValidator.plist.bak MediaValidator.plist declare -a cydia cydia=($CYDIA) if [[ ${CYDIA+@} ]]; then eval "echo 'finish:restart' <&${cydia[0]}" fiアンインストール時にバックアップからもとに戻すようにします。
「System/Library/PrivateFrameworks/Celestial.framework/N88」にplistファイルをコピー
ターミナルで以下のコマンドを入力します。
cd ./DEBIAN chmod 755 preinst chmod 755 postinst chmod 755 postrmこれを行うことで、実行権限が与えられます(詳しくは:chmod 755 - Google 検索 )
Debパッケージを作成します。
cd ~/apt dpkg-deb -b com.ichitaso.3gshdvideo
出来ました(^-^)
Debパッケージのインストール
では、実際にJailbreakしたiOSデバイスにインストールしましょう!
「ここで問題発生」
VirtualBox 4.2.6ではホストPCからゲストPCにはドラッグ&ドロップができますが、ゲストからホストへできないようです・・・というわけで、共有フォルダを作成します。
※VMwareの場合、以下の作業は必要ありません
あらかじめホストPCでホームディレクトリに「sharedfolder」というフォルダを作っておきます。
VirtualBoxの設定から「共有フォルダー」フォルダーリスト右の+アイコンをクリック
→「sharedfolder」を選択
読み込み専用のチェックはオフ、自動マウントにチェックで「OK」
「sharedfolder」を右クリックして情報を表示→アクセス権を全て「読み/書き」にします。
ゲストに移り、ホームディレクトリに「sharedfolder」を作成→端末から以下のコマンドを入力
sudo mount.vboxsf sharedfolder /home/あなたのユーザー名/sharedfolder
「sharedfolder」を右クリックして、プロパティから共有
→このフォルダを共有するにチェック
この時、「Sambaをインストール云々」と聞かれるのでインストール
終わったら、再び端末を開き以下のコマンドを入力
sudo gedit /etc/rc.local
exit 0の前に mount.vboxsf sharedfolder /home/あなたのユーザー名/sharedfolder
と、追記して保存します。
これで、ゲストから「sharedfolder」を通してホストへファイルを送れます。
Dropbox経由でもできますが、一度設定してしまえば、こちらの方が楽です。
おそらく、今後のバージョンアップで対応してくれるかと信じています。
作成したdebファイルをホストへ入れますヽ(・∀・)ノ
OpenSSHのインストール
あらかじめ、iOSデバイスにSSHをインストールしておきましょう。
なにかあった時に修復作業ができる他、開発には必須です。
PwnageToolやsn0wbreezeでSSH入りのCFWを作っておくと楽ですよ!
あとは、SBSettingsを入れておくと何かと便利です(Wi-Fi IPアドレスをメモっておきます)
ターミナルやiFunBox v2以降でrootのパスワードを変更しておきましょう。
ssh -l root IPアドレス alpine passwd 新しいパスワードを2回入力
test.debのインストール
iFunBoxなどで、/var/mobile に作成したdebファイルをコピーします。
ターミナルやiFunBox v2以降を使用して、SSHでiOSデバイスに入り、以下のコマンドを入力
cd /var/mobile dpkg -i test.debこれで、インストールできました\(^o^)/オワタ
hello world!!
iFileで簡単にインストールすることができますが、SSHで行うとCydiaでインストールした時の動作と同じような動作になるので、テストする時はこの方法を覚えておきましょう。
test.debのアンインストール
アンインストールする時は、Package IDを入力する必要があります。
SSHで以下のコマンドを入力
dpkg -r domain.yourname.testアンインストールする時に、Dependsで依存関係となっているものを消したくない場合
dpkg -r --force-depends Package IDLinuxコマンド集 - 【 dpkg 】 debパッケージのインストール・アンインストールを行う:ITpro
リムーブすると、debファイルに入れてあったファイルは自動的に消えます。
というわけで、Debパッケージの作成 - 基本編は終了です。上手く出来ましたか?
今回作成した「3GS HD Video Enabler」をichitasoリポに入れてあります。
3GSでiOS 4.2.1の方は稀かもしれませんが、古いiOSの方だと昔のドックアクセサリが使えたりと便利なので。
次回は、Cydia Repositoryの作成方法について説明します。それでは!
【脱獄アプリ開発】第3回 Google App Engineを使ったCydiaリポジトリの作成方法