小ネタ 2008-007

iPhoneの勝手アプリをインストールする方法

iPhoneの自作勝手アプリをInstaller.appを使ってLAN内でインストールする方法を試してみた。(2008-3-6)
(無線LAN環境が必要)


<iPhone 1.1について(iPhoneファームウェア1.1.xについて)書いています。iPhone 3G等 ファームウェア2.0からは使えないかもしれないです。>
<iPhoneにはプロテクトが掛かっているのでそのままでは勝手アプリをインストールできません。ご注意。>




1. Web共有を動かす

 iPhoneアプリを開発しているMacOS XのマシンでWeb共有を動かした。システム環境設定のWeb共有を"入"に設定することでWebサーバーが動作する。
 
 マシンのIPアドレスの192.168.1.21は仮の設定なので、ユーザーの環境にあわせて読み替えること。

 
 Web共有でWebサーバーApacheが動作していると、LAN上の他のマシンから http://192.168.1.21/にアクセスできる。

 (Macを使う場合は標準で入っているWeb共有を使えばよいのだが、Windowsを使う場合は別にApacheをダウンロードしてインストールする必要がある。)



2. Web共有のフォルダにiPhoneアプリと必要なファイルを入れる

 Macのハードディスクの「ライブラリ」フォルダの中の「WebServer」フォルダ内の「Documents」フォルダの中にiPhoneアプリをzip形式で圧縮したものと必要なxmlファイル"repository.plist"を入れる。
 

元からフォルダに入っていたファイルはどこか別の場所に移動させて待避しておく。

 中身の例。hello worldアプリが入っている。
 [ nakami.zip (download) ]




3. iPhone/iPod touchのInstaller.appにリポジトリを登録する

 Installer.appのSourceの設定で、Add Sourceから「http://192.168.1.21/repository.plist」を入力する。
 hostsファイルを設定しても参照してくれないので、IPアドレスでの入力が必要なようだ。

 

  

 登録したあと、1回Refreshすると、情報が画面に反映される。


 Mac上で勝手アプリのソースをコンパイルしたら、すぐに上記のフォルダに入れて、iPhone実機にインストールしてテストができるようになった。
 repository.plistファイルを手動で手直しする必要があるが、自動化も可能と思われる。





勝手アプリのzipファイル作成上の注意点

 上記の中身にhello.zipというファイルがある。この中にHello worldというアプリが入っている。

 問題点が1つあり、このzipファイルをWindows上で作ったり変更して更新したりすると、Installer.appでのインストール時に誤動作してしまい、インストールしたアプリが正常動作しなくなる。(2008-3-6現在)

 主な原因は、zipファイルの中のファイル属性(Attribute)の記録形式がWindowsのzip作成ソフトとMacOSのzip作成ソフトとで互換性がないためである。 大半のzip解凍ソフトはこの部分の非互換をうまく対処してくれているのだが、Installer.appが使っているzip形式の展開用のライブラリが対処してくれない仕様になっているのだろう。PXL形式のインストールでも同じ問題が起きていた。

 インストールしてしまったあとに、iPhone上で手動でファイルの属性を書き換えたり、インストールスクリプトにchmodを追加する対処方法もあるが、根本的な解決でない。

 根本的な対策方法は、zipファイルをMacOS上またはUNIX上で作成すること。あるいはWindows上でzip作成後にzipファイルの中のファイル属性の部分を修正すること。
 後者の対策方法のために、zipファイルの修正ツールというのを作ってみた。とりあえず作ったツールなので、エラーチェックとか甘いので注意。
 [ zipfixer_v01.zip (download) ] (うまく動かない場合もあるので、その場合は後述のifon-Zipを使って下さい。)


 (後日加筆 2008-4-4)
 Windows用のiPhone toolchainのバイナリ版をインストールすることで、Windows上でiPhoneの勝手アプリのコンパイルができるようになった。
 上記のWindows上のzipファイルの生成の問題で、zipファイル修正ツールを実際に使ってみているのだが、まだ問題があってうまく動かないことがあるようだ。



 (後日加筆 2008-4-17)
 zipファイル生成ツールと、zipファイル修正ツールの2つのソフトをくっつけて、1つのツールにしてみた。
 [ ifon-zip_v01.zip (download) ]

 iPhone勝手アプリを自作する人で、Windows版のtoolchainを使っている人は全然いないようなので、このツールを使う人もいないだろうが、一応公開しておく。




(後日加筆 2008-07-23)
 iPhone 3Gの発売後、ほどなくJailbreakするためのツールが出てきている。付属する勝手アプリのインストール用のパッケージ管理ソフトが、Installer.appからCydiaというソフトに替わっているそうだ。
 Cydiaは、Debian Linuxのパッケージ管理ツールが元になっているとのことだが、iPhoneはBSD系なのでMacPortsみたいにportsを使えばいいのにと思った。

 Cydia環境に移行した場合に、LAN内で勝手アプリのインストールができるかどうか調べ中。
 (普通にメニュー操作した中には、そういう設定はないようだ。いずれCydiaがバージョンアップするときにできるようになるのだろうか。)




(後日加筆 2008-08-15)
 Installer.appのバージョンが上がるようだ。Jailbreakツールの新しいバージョンには、Installer.appの新バージョンのベータ版が付属するのだそうだ。

 どうも、この新バージョンのInstaller.appというのが旧バージョンと互換性がないらしい。
 このページの上の方で説明しているLAN内でアプリをインストールする方法は使えなくなるみたいだ。

 自分はまだ新バージョンのInstaller.appのベータ版を導入していないのだが、いずれテストしてみよう。




(後日加筆 2008-09-01)
 iPhoneのファームウェア1.xの場合、Cydiaの新しいバージョンを使うことができないようだ。iPhoneのファームウェア2.0でJailbreakすればCydiaの新バージョンを使うことができる。新バージョンだと、レポジトリのsource追加が可能である。

 iPhoneではないのだが、iPod touchでファームウェア2.0で実際に試してみたところ、Cydiaでレポジトリ追加の操作ができた。
 Installer.appも新バージョンのVer4-Betaになってしまい、旧バージョンのレポジトリが使えなくなってしまった。

 CydiaかInstaller.appのどちらかの新バージョンに対応させないと、自作の勝手アプリが実機で実行できなくなってしまう。
 まだ、旧バージョンが使えるiPhoneをそのまま残してあるので、今のところ自分は困らないのだが、他に配布できなくて困ったりする。