2012年5月24日木曜日

Android4.0、アイスクリームサンドイッチ(ICS)にソフトキーを表示させる方法

Googleが作るスマートフォン向けオペレーションシステムAndroidのバージョンは現在4.0で、アイスクリームサンドイッチ(ICS)といわれています。このAndroid 4.0はディフォルトではハードウェアのキーを廃して、画面に表示されるソフトキーで操作することとなりました。しかし、現在、Android4.0の様に、デザインされたスマートフォンは数少ないので、現実多くのAndroid 4.0携帯電話はハードウェア・キーを引き続き使用することになる。

このソフトキーを使えるようになると、役に立つことがある。自分のスマートフォンは2年ほど前に販売されたGalaxy Sの一機種である。そして、なぜか、ハードウェア・キーは動かなくなった。それならと、Android 4.0をインストールして、ソフトキーをハードウェア・キーの代わりにすることにした。結果、上手く行ったので、メモとして簡単に方法を記載しておきます。


Android4.0にアップデート

まずは、私の携帯電話は正式にAndroid4.0にアップデートされておりませんので、Galaxy Nexus ROMをポートしたDark Knight 3をインストールしました。これで、まずはAndroid 4.0が手に入りました。

http://forum.xda-developers.com/showthread.php?t=1501615

このようなカスタムロムを入れるのは、ルート化するなどのハードルがありますが、比較的に簡単に行うことが出来ます。例えば、この様な記事がたくさん書かれておりますので、それにきちんと従って行いました。もちろん自己責任でよろしくお願いいたします。

http://www.androidauthority.com/captivate-android-4-0-3-ice-cream-sandwich-dark-knight-rom-56725/


ADBとUSBドライバ―の導入

ソフトキーを導入するには、既にインストールされているAndroidオペレーションシステムのファイルを書き換える必要があります。その為に、Android Debug Bridge(ADB)と言われるツールを使い、PCやMac等から、書き換えるファイルを入れ替えます。


How to Install and Set up ADB/USB Drivers on Android0
http://www.downloadatoz.com/howto/how-to-install-and-set-up-adb-usb-drivers-on-android,22531.html


この記事を元に、Androidの開発ツールをPCにインストールします。現在、adb.exeはplatform-toolsに入っていますので、開発ツールをインストールした後に、SDK Managerを使ってインストールする必要があります。でも、どこかから、adb.exeとAdbWinApi.dllをダウンロードして、作業フォルダにいれても動いたりします。

その時、ADBに付随したUSBドライバ―を入れる必要があります。それをもし、サムソン等の端末会社のドライバ―が入っている場合、 USBDeviewを使って、サムソン端末なら端末が使っているサムソンのドライバ―を全て削除します 。それから、再度端末をUSBで接続すると、ADBに対応したドライバ―がインストールされるはずです。





ここから、ようやくソフトキーを導入するスタート・ラインに立てたと言うことです。一つの記事で全てを説明しているものが無かったので、複数の記事を読みました。

How to decompile/compile using apktools
http://www.galaxynexusforum.com/forum/galaxy-nexus-hacking-mods-lte-cdma/2562-how-decompile-compile-using-apktools.html

enable ics keys on any ics rom detailed guide
http://forum.xda-developers.com/showthread.php?t=1391281&goto=nextnewest

[HOWTO] enable on-screen buttons in ICS rom

http://forum.xda-developers.com/showthread.php?t=1364757




framework-res.apkの抜き出し


ココに記載されている、 apktools-ics - MinusZIPファイルを解凍して適当なフォルダに入れます。例えば、c:\apktoolsとかでよいでしょう。これらのツールはコマンドラインでそのまま動かすことが出来ますが、 Java runtimeを入れておく必要があります。

そして、このc:\apktoolsフォルダに携帯端末からframework-res.apkを抜き出します。

まずは、携帯電話をUSB debugging modeにセットアップしてから、コンピューターにUSBで接続します。これからはウインドウズのCMDを使ってコマンドラインで操作を行います。私はUNIX環境が好きなので、Cygwinを代わりに使います。

指定したフォルダに移動します。

cd "c:\apktools"

そして、framework-res.apkを抜き出します

adb remountadb pull /system/framework/framework-res.apk

こんな記述を見たら、抜き出すことに成功したはずです。

2932 KB/s (4955204 bytes in 1.650s)



framework-res.apkのデコンパイル


"c:\apktools"フォルダに入っている、apktool.jar.1.4.2をapktool.jarに名前の変更をします。

念のためにフレームワークをインストールします。これは一度でOKです。

java -jar apktool.jar if framework-res.apk

これで、framework-resをデコンパイルすることが出来ます。この時、バージョン1.4.2を使わないと失敗します。

java -jar apktool.jar d framework-res.apk


framework-res.apkの変更


"c:\apktools"に\framework-resのフォルダが出来ているはずです。その中の、\res\values\bools.xmlをテキストエディタで開けてください。そして、下の写真の様に、bools.xmlconfig_showNavigationBarをtrueの値に書き換えます。


http://forum.xda-developers.com/showthread.php?t=1364757
[HOWTO] enable on-screen buttons in ICS rom - xda-developers via kwout

同じように、 dimens.xmlを開いて、navigation_bar_heightの値を37.0dipに書き換えます。これをする事により、画面が狭くなるのをある程度やわらげます。34.0でも問題ありませんでした。





framework-res.apkのリコンパイル


そしたら、次はリコンパイルを行います。大事なことは、バージョン1.4.3のapktool.jarを使うことです。その為、今のapktool.jarをapktool.jar.1.4.2に名前を変え、apktool.jar.1.4.3をapktool.jarにします。

そして、リコンパイル!完了するのに数分かかるかもしれません。

java -jar apktool.jar b framework-res

成功したら、こんなメッセージが見れるはずです。

W: Could not find sources
I: Checking whether resources has changed...
I: Building resources...
I: Building apk file...


そして、c:\apktools\framework-res\distに新しいframework-res.apkが入っているはずです。

この新しいframework-res.apkをそのまま、携帯端末に戻してはいけません。変更箇所だけを取り出して、それを元にframework-res.apkに戻してやるのです。今回はXMLファイルだけを変更したので、resources.arscを移し替えれば良いです。7zip等を使えば簡単に置き換えることが出来ます。



framework-res.apkを携帯端末に戻す


終わったら、framework-res.apkを携帯端末に戻してあげます。

adb push framework-res.apk /system/framework/

こんなメッセージが出たら終了です。
1457 KB/s (4955245 bytes in 3.319s)

後はリブートしてあげたらオシマイです。

adb reboot


アイスクリームサンドイッチ(ICS)が立ち上がったら、下のように3つのソフトキーが画面の下に見えるはずです。




今回はかなりギークな内容になってしましました。もし何が書いてあるのか分からないようでしたら、下手に弄らないことです。携帯端末が動かなくなっても私は一切は責任はもてません。自己責任でよろしくお願いいたします。

Facebook

zenback