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

      2017/02/25


前回は仮想マシンに「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 <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)
その他は、以下を参考にしてください。

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


デキタ━━━ヽ(∀゚ )人(゚∀゚)人( ゚∀)ノ━━━!!

追記:最新のdpkgの場合xz形式で作成されてしまうため、dpkg-deb -bではなく、以下のようにgzip形式に設定して下さい。

dpkg-deb -Zgzip -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/N88
DEBIANフォルダに以下のファイルを作成します。


参考:
preinst:インストール前に、実行するシェルスクリプト
postinst:インストール後に、実行するシェルスクリプト
prerm:リムーブする前に、実行するシェルスクリプト
postrm:リムーブする後に、実行するシェルスクリプト

※アップデート時にも関係してきます。

それぞれの内容は、以下のようにします。
Author: ichitaso
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
iPhone 3GSのみで、iOS 4.2.1以降では機能しないので、Depends: firmware (<= 4.2.1), cy+model.iphone (= 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 ID
Linuxコマンド集 - 【 dpkg 】 debパッケージのインストール・アンインストールを行う:ITpro


リムーブすると、debファイルに入れてあったファイルは自動的に消えます。

というわけで、Debパッケージの作成 - 基本編は終了です。上手く出来ましたか?

今回作成した「3GS HD Video Enabler」をichitasoリポに入れてあります。

3GSでiOS 4.2.1の方は稀かもしれませんが、古いiOSの方だと昔のドックアクセサリが使えたりと便利なので。

次回は、Cydia Repositoryの作成方法について説明します。それでは!

【脱獄アプリ開発】第3回 Google App Engineを使ったCydiaリポジトリの作成方法

 

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

最新情報をお届けします

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


  関連記事

【脱獄アプリ開発】第5回 Cydia 有料Tweakの提出方法 BigBoss編

今回は、自分で開発した脱獄アプリをCydiaの本家であるBigBossへ提出する ...

【脱獄アプリ開発】第1回 VirtualBoxにLinux Ubuntuをインストール!

[Photo : Technosamrat] Jailbreakアプリ、Twea ...

【脱獄アプリ開発】第10回ichitasoリポジトリ変更のお知らせとCydiaダウンロードカウンタの設置方法

Cydia用のリポジトリが更新するたびにエラーとなってしまったため、新たにURL ...

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

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

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

連載シリーズ第7回目となる今回は、現在のJailbreak Tweakを作る上で ...

 - iOS development