GalaxyS2が、Android2.3.5から英語フリック非対応になってしまったのでAndroid2.3.3のイメージからキーボードアプリを取り出してインストールしようと考えました。結果としてキーボードアプリを入手することはできましたが、非root端末向けに改変することができず、挫折しましたが一応覚書しときます。
初期ROMの入手
上記サイトから"OMKG5"をダウンロードして、EXEを実行し"*.tar"ファイルを取り出す。
初期ROMの展開
WindowsではできないのでWindows Virtual PCにUbuntuをインストールする。
インストールできたら、取り出した"*.tar"ファイルをUbuntuにコピーする(ネットワーク経由が楽)。
"*.tar"ファイルをtarコマンドで適当な場所に展開する。今回必要なのは、"factoryfs.img"。
"factoryfs.img"を展開するために"simg2img"をコンパイル/インストールする。
上のファイルをダウンロードしてtarコマンドで展開する。展開されたディレクトリに移って"make"すると"simg2img"が取り出せる。しかし、恐らくコンパイルエラーが出るので、zlibをインストールする。
wget -P http://zlib.net/zlib-1.2.5.tar.gz
tar -xzf zlib-1.2.5.tar.gz
cd zlib-1.2.5
./configure
make
make install
これでエラーが出ないはずなので、先ほどの"simg2img"のディレクトリに戻って再度"make"する。
最後に"simg2img"を使って"factoryfs.img"をマウントできる形に変換する。
simg2img factoryfs.img tmp.img
これでマウントができる形式になったはずなので、マウントしてみる。
mkdir tmp
sudo mount -o loop tmp.img tmp
tmpディレクトリに移動すると"factoryfs.img"の中身を見れる。
キーボードアプリの場所
"tmp/app/"ディレクトリにある、"AxT9IME.apk"ファイルがキーボードアプリです。このファイルをWindowsにコピーしておきます。
APKファイルの展開
Androidはアプリケーションの区別をJavaのパッケージ名で行っているので、変更しなければ上書きインストールとなる。この場合、システムファイルの上書きになるのでrootを取得した端末以外ではインストールできない。逆に、root取得済み端末の場合は、取り出した"AxT9IME.apk"を上書きすれば恐らく英語フリック入力が使えるようになるはず。
まずはAPKファイルを展開してみる。ここでapktoolを使う(Java実行環境必須)。
"apktool1.4.1.tar.bz2"と"apk-install-windows-r04-brut1.tar.bz2"をダウンロードして展開し、出てきたファイルを一つのフォルダにまとめて入れておく。ちゃんとパスを通してもいいが、面倒なのでそのままにしておく。
コマンドプロンプトを起動して以下のコマンドを実行する。
C:\>[apktoolをまとめて入れておいたディレクトリのパス]/apktool.bat AxT9IME.apk ./AxT9IME
このコマンドを実行するとCドライブの直下に"AxT9IME"というフォルダが作成され、APKを展開した内容が保存されている。
ここからがダメ。展開されたファイルを見たら、"classes.dex"というファイルが無いのでJavaソースに変換できない。恐らく本体である"libXt9core.so"というファイルがあるが、展開方法がわからない。詰み。