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

前回は仮想マシンに「Ubuntu」をインストールしました。
今回は、実際にdebパッケージを作成してみましょう!
Contents
debパッケージ作成用のディレクトリを作る
仮想マシンでLinuxを起動しましょう。例.「apt」というフォルダを作りました。
この中で、Cydia用のファイルを作成します。
簡単なdebパッケージを作ろう!
その中に、/var/mobileというフォルダを作ります。
同じく右クリックで空のドキュメントを作成→「control」という名前でファイルを作ります。
controlファイルは、debパッケージを作る上で、ベースとなるものです。
記述には決まりがありまして、最後に一行空行を入れるなどあります。
Author: yourname <Mail_Address>このような形で記述してください。
Maintainer: yourname <Mail_Address>
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)
さて、記述が終わりましたら保存するわけですが、上の画像のように「control~」というファイルができてしまいました。これは、バックアップから戻すためのファイルで、Debパッケージの中には不要なものになります(OS Xの.DS_Storeも同様)
普段は隠しファイルとなっているので、見えません。
そうすると、表示されるようになるので削除しておきましょう。
test.debの構成
apt+- test
+- var
| +- mobile
| +- hello
+- DEBIAN
+- control
出来ましたでしょうか?
それでは、これを元にDebパッケージを作成します。
Debパッケージの構築
cd ~/apt(自分で作ったディレクトリ名)
dpkg-deb -b test
追記:最新のdpkgの場合xz形式で作成されてしまうため、dpkg-deb -bではなく、以下のようにgzip形式に設定して下さい。
dpkg-deb -Zgzip -b test
iPhone3GSでHD画質のビデオを撮れる「3GS HD Video Enabler」の作成
では、もう少し難しいものも作ってみます。ちょっと古めな記事ですが、この内容を自動で行なってくれるものを作ります。
cd ~/apt/com.ichitaso.3gshdvideo
mkdir DEBIAN
mkdir -p System/Library/PrivateFrameworks/Celestial.framework/N88DEBIANフォルダに以下のファイルを作成します。
preinst:インストール前に、実行するシェルスクリプト
postinst:インストール後に、実行するシェルスクリプト
prerm:リムーブする前に、実行するシェルスクリプト
postrm:リムーブする後に、実行するシェルスクリプト
※アップデート時にも関係してきます。
それぞれの内容は、以下のようにします。
Author: ichitasoiPhone 3GSのみで、iOS 4.2.1以降では機能しないので、Depends: firmware (<= 4.2.1), cy+model.iphone (= 2.1)としています。
Maintainer: ichitaso
Name: 3GS HD Video Enabler
Package: com.ichitaso.3gshdvideoenabler
Conflicts: com.iphonerepocenter.hdvideoenabler3gstheme
Depends: firmware (<= 4.2.1), cy+model.iphone (= 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::extension
#!/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インストール完了後にRespringさせます(restartをrebootにすれば再起動となります)
declare -a cydia
cydia=($CYDIA)
if [[ ${CYDIA+@} ]]; then
eval "echo 'finish:restart' >&${cydia[0]}"
fi
#!/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
cd ./DEBIANこれを行うことで、実行権限が与えられます(詳しくは:chmod 755 – Google 検索 )
chmod 755 preinst
chmod 755 postinst
chmod 755 postrm
cd ~/apt
dpkg-deb -b com.ichitaso.3gshdvideo
Debパッケージのインストール
では、実際にJailbreakしたiOSデバイスにインストールしましょう!「ここで問題発生」
VirtualBox 4.2.6ではホストPCからゲストPCにはドラッグ&ドロップができますが、ゲストからホストへできないようです・・・というわけで、共有フォルダを作成します。
※VMwareの場合、以下の作業は必要ありません
あらかじめホストPCでホームディレクトリに「sharedfolder」というフォルダを作っておきます。
ゲストに移り、ホームディレクトリに「sharedfolder」を作成→端末から以下のコマンドを入力
sudo mount.vboxsf sharedfolder /home/あなたのユーザー名/sharedfolder
この時、「Sambaをインストール云々」と聞かれるのでインストール
終わったら、再び端末を開き以下のコマンドを入力
sudo gedit /etc/rc.local
と、追記して保存します。
これで、ゲストから「sharedfolder」を通してホストへファイルを送れます。Dropbox経由でもできますが、一度設定してしまえば、こちらの方が楽です。
おそらく、今後のバージョンアップで対応してくれるかと信じています。
OpenSSHのインストール
なにかあった時に修復作業ができる他、開発には必須です。
PwnageToolやsn0wbreezeでSSH入りのCFWを作っておくと楽ですよ!
ターミナルやiFunBox v2以降でrootのパスワードを変更しておきましょう。
ssh -l root IPアドレス
alpine
passwd
新しいパスワードを2回入力
test.debのインストール
cd /var/mobileこれで、インストールできました\(^o^)/オワタ
dpkg -i test.deb
iFileで簡単にインストールすることができますが、SSHで行うとCydiaでインストールした時の動作と同じような動作になるので、テストする時はこの方法を覚えておきましょう。
test.debのアンインストール
SSHで以下のコマンドを入力
dpkg -r domain.yourname.testアンインストールする時に、Dependsで依存関係となっているものを消したくない場合
dpkg -r --force-depends Package ID
リムーブすると、debファイルに入れてあったファイルは自動的に消えます。
というわけで、Debパッケージの作成 – 基本編は終了です。上手く出来ましたか?
今回作成した「3GS HD Video Enabler」をichitasoリポに入れてあります。
次回は、Cydia Repositoryの作成方法について説明します。それでは!