「Android」カテゴリーアーカイブ

DesireをHTC公式2.3.3にしてみた その3 A2SD篇

備忘録を兼ねているので説明はくどい。

Desireの唯一最大の弱点とも言える内蔵メモリの少なさ(ユーザ使用可能エリアは約150MB)を克服するためのハック。
ってほど大袈裟じゃないけど、本来は内蔵メモリにインストールされるアプリケイションをSDカードに移す。
Androd2.2で標準搭載された機能でもあるが、あれではごく一部のアプリケイションだけしか移動できないので、やっぱり容量が足りなくなるのだ。
そこで、SDカードにパーティションを切ってext3やext4でフォーマットし、内蔵メモリに見せかけてマウント。
そこにアプリケイションを移すというわけだ。
カスタマイズされたROMが配布されているので、それをインストールするのが手っ取り早いが、HTC公式2.3.3用のROMは見あたらない。
ちょっと面倒だが難しくはないし、自分で手作業でやったほうが理解が深まり、復元する際にも困らない。
というわけでやってみた。

Androdでは通常以下のディレクトリにアプリケイションインストールされ、キャッシュやデータが格納されている。

/data/app
/data/app-private
/data/dalvik-cache
/data/data

これらをいったんSDカードのext3(ext4)パーティションにコピーし、元のディレクトリは削除、そのかわりにシンボリックリンクを置く。
以下、手順。

1)

難易度は低いとはいえシステムに手を入れるのだから、バックアップをとっておく。
特にわたしのようなうっかり者には絶対必要だ。

Desireをシャットダウンし、Volume-キイ押しながら電源オン。
Revolutionaryのリカヴァリ・ツールが起動するので、backup & restore からバックアップを取る。
recovery → backup and restore → Backup

2)

Desireを外部メモリとして接続。
マウントしたSDカードを Gparted などでパーティショニングして新しい領域をext3でフォーマットする。

3)

ターミナルからadbシェルを起動する。
rootになって(デフォルトでパスワードは不要)から、まず読み込み専用でマウントされているsystemディレクトリを読み書き可で再マウント。
/system/data ディレクトリを作成し、SDカードのext3パーティションをマウントする。

# ./android-sdk-linux_x86/platform-tools/adb shell
$ su
# mount -o remount,rw /dev/block/mtdblock3 /system
# mkdir /system/disk
# mount -t ext3 -o nosuid,nodev /dev/block/mmcblk0p2 /system/disk

読み書きができるか確認しておく。
問題なければ次へ。

4)

起動時に常にSDカードのext3パーティションがマウントされるように、起動スクリプトに加える。
Androidは通常のLinuxとはかなり違うブートプロセスなのでよくわからないが、 /system/etc/install-recovery.sh というファイルが機能するらしい。
なければ作り、スクリプトを加える。
(引き続きadbシェルで作業)

# vi /system/etc/install-recovery.sh

#!/system/bin/sh
mount -t ext3 -onosuid,nodev /dev/block/mmcblk0p2 /system/disk
exit 0

:wq

#reboot

再起動して、/system/disk にSDカードのext3パーティションがマウントされていればよし。

5)

お次は、既存のアプリケイションをコピーする。

コピー後に属性を変更することも可能だが、特に /data/data はファイル毎に所有者が異なるので面倒。
コピー時に属性を維持するようオプションを指定する。
-a -p はどちらかひとつでもいいと思うが、Androidのコマンドはよくわからないので、一応両方つけておいた。
コピー後、念のため属性を確認する。

# ./android-sdk-linux_x86/platform-tools/adb shell
$ su
# cd /system/disk
# cp -r -p -a /data/app-private ./
# cp -r -p -a /data/app ./
# cp -r -p -a /data/dalvik-cache ./
# cp -r -p -a /data/data ./
# ls -l
drwxrwx--x system system 2011-10-08 07:45 dalvik-cache
drwxrwx--x system system 2011-10-08 07:45 app-private
drwxrwx--x system system 2011-10-08 07:44 data
drwxrwx--x system system 2011-10-08 07:45 app
drwxr-xr-x root root 2011-10-07 20:07 lost+found

/data/data は変更せずそのまま内蔵メモリに置いておいても動作に支障はないし、SDカードに移すデメリットもあるようだが、わたしの環境では100MBくらいは容量を喰うので移動してしまった。

6)

バックアップをとっているなら、このまま /data 以下の各ディレクトリを消去。
心配ならリネイムして様子を見る(自分も最初はそうした)。
SDカードからリンクを張る。
(引き続きadbシェルで作業)

# cd /data
# rm -r data
# rm -r app
# rm -r app-private
# rm -r dalvik-cache
# ln -s /system/disk/app app
# ln -s /system/disk/app-private app-private
# ln -s /system/disk/data data
# ln -s /system/disk/dalvik-cache dalvik-cache

変更前
# ls -l /data/
drwx------ system system 2011-10-08 07:44 secure
drwxr-x--- root log 2011-08-03 07:02 dontpanic
drwxr-xr-x system system 2011-10-08 07:44 tombstones
drwxrwx--x system system 2011-10-08 07:44 data
drwxrwx--x system system 2011-10-08 07:45 dalvik-cache
drwxr-xr-x root root 2011-10-08 07:58 htcfs
drwxrwx--x system system 2011-10-08 07:45 app-private
drwxrwx--t system misc 2011-10-08 08:00 misc
drwxrwxr-x system system 2011-10-08 07:45 anr
drwx------ system system 2011-10-08 07:59 backup
drwxrwxr-x system system 2011-10-08 08:03 system
lrwxrwxrwx root root 2011-10-08 07:45 drm -> /data/local
drwxrwx--x shell shell 2011-08-03 07:02 local
drwx------ root root 2011-10-08 08:03 property
drwxrwx--x system system 2011-10-08 07:45 app
drwxrwx--- root root 2011-08-03 07:02 lost+found

変更後
# ls -l /data/
lrwxrwxrwx root root 2011-10-08 08:59 dalvik-cache -> /system/disk/dalvik-cache
lrwxrwxrwx root root 2011-10-08 08:59 data -> /system/disk/data
lrwxrwxrwx root root 2011-10-08 08:59 app-private -> /system/disk/app-private
lrwxrwxrwx root root 2011-10-08 08:58 app -> /system/disk/app
drwx------ system system 2011-10-08 08:49 secure
drwxr-x--- root log 2011-08-03 07:02 dontpanic
drwxr-xr-x system system 2011-10-08 08:56 tombstones
drwxr-xr-x root root 2011-10-08 08:55 htcfs
drwxrwx--t system misc 2011-10-08 08:55 misc
drwxrwxr-x system system 2011-10-08 08:50 anr
drwx------ system system 2011-10-08 08:55 backup
drwxrwxr-x system system 2011-10-08 08:56 system
lrwxrwxrwx root root 2011-10-08 08:50 drm -> /data/local
drwxrwx--x shell shell 2011-08-03 07:02 local
drwx------ root root 2011-10-08 08:56 property
drwxrwx--- root root 2011-08-03 07:02 lost+found

再起動して、従前と変わりなければ成功。
いろいろとアプリケイションをインストールしたりアップデイトしても、常に内蔵メモリは140MB近く空いている。

ss1 ss2

また、OSの標準機能を使ってSDにインストールしていたアプリケイションも内蔵メモリ(実際はSD)に移動しておいたほうが、SDカードのマウント中もアプリケイションが使える、ウィジェットが使えるといったメリットがあるし、のちのち標準的な構成に戻す際など管理がしやすい。

もし失敗したら

実は(5)でわたしは大失敗している。
アクセス権や所有者を指定せず単にcpしただけで作業を終了してしまい、リブートしたらこんな画面に出くわしたのだ。

error

さらに言えばこの画面が出ることなく再起動を未来永劫繰り返したこともある。
3時間前の自分よ、ありがとう。
礼を言ってバックアップのDataをリストアし、作業はやり直し。
recovery → backup and restore → Advanced Restore → ファイル(日付・時刻)選択 → Restore Data

参考サイト
http://www.gcd.org/blog/2010/10/658/
http://d.hatena.ne.jp/jitsu102/20101211/1292079581
http://blog.kmckk.com/archives/3752376.html


2011/10/15追記
アプリケイションの立ち上がりが遅い、動作が不安定といった現象に見舞われたので、/data/dataはSDに置かず、本体メモリに戻した。
また、OS標準機能でSDに移動できるアプリケイションは、OS上でSDに移動した。

DesireをHTC公式2.3.3にしてみた その2 フォント変更篇

次はA2SDと思ったけど、先にフォント変更から。

作業環境として、Android SDK をダウンロードし、ADB SHELL を使えるようにしておく。
なお、現ヴァージョンでは、デフォルトではAndroid Debug Bridge (adb) が含まれておらず、アドオンとして追加インストールする必要がある。
tools ではなく platform-tools というディレクトリにインストールされる。
http://developer.android.com/sdk/index.html

また、Androidには標準でcpコマンドがないので、Desire側に予め統合シェルコマンドのBusyBoxをインストールしておく。
https://market.android.com/details?id=stericson.busybox

1)
SDカード(どこでもよいがルートが面倒でないかも)に使いたいTrueTypeフォントをコピーし、DroidSansJapanese.ttfとリネイムする。
著作権のことを考慮して、というかふだん使い慣れた IPAexゴシックにしておいた。

2)
ターミナルからadbシェルを起動する。
rootになって(デフォルトでパスワードは不要)から、まず読み込み専用でマウントされているsystemディレクトリを読み書き可で再マウント。
SDカードに置いたDroidSansJapanese.ttfをフォントディレクトリにコピーする。
mv でもいいと思うのだが、Cross-device link というエラーが出るので cp しておく。

# ./android-sdk-linux_x86/platform-tools/adb shell
$ su
# mount -o remount,rw /dev/block/mtdblock3 /system
# cp /system/sdcard/DroidSansJapanese.ttf /system/fonts
# reboot

フォント入れ替え(というか追加)はこれでおしまい。
こんな感じでふつうです。

shot_000003

参考サイト
http://ameblo.jp/kakamen/entry-10658647912.html

DesireをHTC公式2.3.3にしてみた その1 root篇

2か月ほど前、Desire (X06HT) をHTC公式ROM(ただし開発者向け)で Android 2.3.3 Gingerbread にアップデイトしてみた。

http://www.htcdev.com/devcenter/downloads

特に利便性の向上を求めたわけではなく、単に飽きたから(笑)。
アップデイトというよりROMの完全入れ替えになるので、以前のデータはまったく引き継がれず、きれいさっぱり工場出荷時状態。
テザリング機能の標準搭載など新機能はあるが、日本向けにカスタマイズされていないので、横画面にすると入力ダイアログがキーボードでふさがって入力がほぼ不可能になるなど(*)むしろ利便性が下がった面もある。

*SimejiやOpenWnnでは「全画面入力モード(横画面)」と設定、Atokでは「入力補助→自動全画面化(横画面)」と設定すれば解決することがわかった。そういやX06HTはiWnnだった。

http://media.st/blog/2011/08/desire-x06ht-gingerbread/
ここらへんにカスタム・インストールの方法が出ているが、わたしの場合はなにもいじらず普通に。
APNはデフォルトの andglobal.softbank.ne.jp のままでも定額内だったが、9月からつながらなくなったので現在は open.softbank.ne.jp に変更している。

以前はunrevokedでroot権限をとっていたのだが、当然こちらも元に戻っている。
root権限がないとなにが不便といって、Desireの唯一最大の弱点とも言える内蔵メモリの少なさを克服するためのハックができない。
また、HTC製ROMには日本語専用フォント DroidSansJapanese.ttf が内蔵されていないため、いわゆる中華フォントで代用されるわけだが、これもなんとかしたい。
フォントの入れ替えにもroot権限が必要だ。
ただ、ハードウェア・キイの効きが少し悪くなっていたし、外装交換もしたかったので、修理に出すまでは我慢と思っていた。
(アップデイトした状態でソフトバンクが保証を適用するかどうかわからないが、rootを取ったら保証外と言われている)

ところが、いざ修理に出そうと思いきや、アテにしていた店から修理期間中の代替機がなくなってしまっていた。
いろいろ当たってみたが、代替機に同機種または上位機種を出してくれる店はなく、いわゆるガラケーになってしまう。
もういいやってことで、修理は諦め、再びroot権限を取ってカスタマイズすることに。

HTC公式ROMでそのままアップデイトするとHBOOT(HTC製ブートローダ)も更新されるため、rootを取るのが難しくなるという話が前からあった。
実際のところどうなんだろと思って試しに unrevoked3 recovery reflash tool(v3.32) を使ってみる。
http://unrevoked.com/recovery/

waiting for system to settle.
running root....
communication with phone unexpectedly interrupted. try again.

ブートローダにパッチは当たるが、root権限アプリケイションのインストール中(なのか?)にコケているようだ。

環境のせいかとLinuxマシンからWindowsマシンに変更しても変わらず。
うーん、困った。
どうしようかなと検索をかけるとようやく Revolutionary というツールに行き当たった。
unrevokedとAlphaRevのチームが共同開発しているらしい。
FAQにあるように、Revolutionary 自体はブートローダにパッチを当てるハックで、root権限を得るアプリケイションは別途インストールする。

http://revolutionary.io/
http://unrevoked.com/rootwiki/doku.php/public/revolutionary
http://goo-inside.me/superuser/su-2.3.6.3-efgh-signed.zip

以下、備忘録として Linux (Fedora14) での手順。

1)

revolutionaryはダウンロード時に Beta key の生成ツールがポップアップするので、C&Pしておく。
必要事項を記入して Generate key ボタンをクリック。

Your operating system: Linux
Your device: HTC Desire
HBOOT version: 1.02.0001
Serial number: HT0*********

*設定→この携帯電話について→電話ID→デバイスのシリアル番号
*電池ホルダにも書いてある

2)

DesireをHTC Sync(USBデバッグモード)で接続し、rootになってターミナルからrevolutionaryを起動。
途中で Beta key を求められるので、上記の英数字をC&Pしてエンタ。

#./revolutionary
=============================================
| Revolutionary S-OFF & Recovery Tool 0.4pre4 |
=============================================
Brought to you by AlphaRev & unrEVOked.

Waiting for device...
Found your device: HTC Desire (bravo-1.02.0001, Android: 2.3.3, ROM version: 3.14.405.1)

This is a beta release and requires a beta release key.
Please visit: http://revolutionary.io for more information.

Enter beta key [ serial: HT0********* ]: ****************
Beta key accepted - thank you for participating!

Zerging Root... this might take a minute or so.. Root acquired!
Sending in Caroline...
Cleaning up...
Rebooting to fastboot...
When life gives you lemons, don't make lemonade. Make life take the lemons back!
Waiting for fastboot...
Rebooting to fastboot (Once moar...)
SUCCESS - Life gave us lemons, we didn't make lemonade!

Do you want to download (Internet connection required) and flash ClockworkMod Recovery? [Y/n] y

Downloading recovery for your phone (bravo)...Done.
Flashing recovery over fastboot...SUCCESS!

これで成功。
次にroot権限ツールをインストールする。

3)

Desireを外部メモリとして接続。
マウントしたSDカードのルート・ディレクトリに su-2.3.6.3-efgh-signed.zip を置く。

4)

Desireをシャットダウンし、Volume-キイを押しながら電源オン。
Revolutionaryのリカヴァリ・ツールが起動するので、SDカードからsu-2.3.6.3-efgh-signed.zipをインストールする。
recovery→install zip from sdcard→choose zip from sdcard

Revolutionary

再起動後、アプリケイションの一覧にSuperuserがあれば成功。
こんなふうにスクリーン・ショットも簡単に取れる。
ちなみに、MarketにはSuperuserの有料版(250円)があり、無料版とあまり違わないが、ドネイトのつもりで購入した。

screenshot_2

(A2SD篇に続く)

こんにちはアンドロイド

HTCX06HT Android OS (Android 2.1 with HTC Sense)

エーユーにさよならして、予告どおりソフトバンクモバイルへ鞍替え。
HTC Desire X06HT (Android 2.1 with HTC Sense) を入手して1か月が過ぎた。
思いつきで近所の店で予約したら普通に発売日に買えたのだが、巷では在庫がなく(初回出荷は5000台とのウワサ)入手難それ自体が話題になっていたりするようだ。

最初は壊しそうで叮嚀に扱っていたのだが(それでも真っ逆さまに♪落としたこと2回)だんだんどうでもよくなって、ケースだのフィルムだのはなくてもいいかと思うようになったころだったのだけど、本体購入時に予約注文しておいたPDAirのアルミニウム・ケース液晶保護フィルムがようやく今日になって香港から届いた。
せっかくなので装着してみる。

W-ZERO3でも同じPDAirのアルミニウム・ケースを使っていたの慣れていたが、34.5gもあって重たいし、厚い。
わたしはこのメタリックでごつい感じが好きなのであるが、そうじゃないひとにはあまりお薦めできない。
バックプレイトを外す以外はケースを装着したままですべて操作でき、充電もできるし、スタンドにも乗る。
画面の有効エリア外はきっちり覆われるのはいいが、指をすべらるせるとヘリにひっかかる。
動作には支障がないし、SoftBankのロゴを隠したい向きにはいいのだけどね、
ベルト通しに装着できるパーツも附属しているが、腰からぶら下げるひとなんているのかな。

同時に注文しておいた保護フィルムは、感度も視認性もよく製品そのものには文句がないのだが、離型フィルムをはがしにくいのが難点で、貼り付ける際にちょっと失敗してはしっこが折れてしまった。

Desireに関しては、これまでちょこちょことtwitterにはポストしていて、Androidについてもいろいろ書きたいことはあるのだが、いまは諸事情によりゆとりがないので、とりあえずは写真でお茶を濁させていただく。


2010/06/01追記。
キーボードを使う際に端っこの文字が打ちにくいし、端っこのアイコンやリンクなども押しにくいぞ。

さよならエーユー

いわゆるPDA/スモール・コンピュータ/ハンドヘルドPCといった類のデヴァイスはPSIONに始まり、Linuxザウルス、W-ZERO3と使ってきた。
PSIONやザウルスは本体に狭義の通信・通話機能はなく、ネット接続には外付けモデムや無線LANカードが必要だった。
ZERO3はいわゆるスマートフォンであるが、ウィルコムの電波が心許ないないのでほとんど電話としては使っていない。
つまり、ずっと電話とハンドヘルドPCの「二本差し」であったのだが、それもだんだん邪魔くさく、経済的にも無駄と感じるようになってきた。
さらには昨今のスマートフォンの機能向上とLinuxベースのOS Androidの登場である。
ここはひとつ統合してみようじゃないか、という気がしてきた。

Android を乗せた Xperia X1 でも出たらいいなぁなどと思っていたのだが、ドコモから日本発売されるのはX1系ではなく、キイボードのないコードネーム Rachael であった。
ずっとハードウェア・キイボードは必須だと思っていたのだが、それもなんだかどうでもいいような気がしてきた。
もうauなんかやめてレイチェル・スウィートにしちゃおうか、auはスマートフォンには消極的だし、今やガラパゴス携帯電話の権化だし、とか思っていた矢先、見透かしたようにauもスマートフォン本格参入の報。
ほう、これはモトローラの Droid か Google の Nexus One でも投入する気か、とちょっとだけ期待が膨らむ。

そして3月末、auのAndroidフォン、IS01は発表された。
しかしてそれはスマートフォンではなくスマートブックなるものであった。
作ったのはシャープで、ザウルス、D4, Netwalker の系譜にあるデヴァイスである。
イヤフォン・マイクなしでは一般的な意味での通話不可能な非電話である。
製品発表会の生中継をUstreamで見ていたら、もう落胆の声・声・声。
わたしもそのひとりだ。
あ〜あ。

ただ、それは通話不可能なスマートブックなるものだったからではない。
確かに今わたしが望んでいるのは普通に通話のできるスマートフォンだが、ちょっと前までは「ザウルスがどこでもネットにつながればいいなあ」と思っていたクチである。
IS01はスペックを見る限り悪いハードウェアではないと思うし、デザインも深澤直人である。
2年前の自分なら買っていたと思う。
問題なのは独自仕様へ執着するauの勘違いぶりだ。

実は携帯電話というものは昔から好きではなかったし、今も好きではない。
仕事上の必要というか外部的要請で使い始めたが、携帯電話への依存度は低いし、たぶん今日から携帯電話がなくなったとしても、自分自身はそんなに困らないのではないかと思う。
調べてみたらauとの契約期間は144箇月とあるから、携帯電話を持ったのはちょうど12年前の98年、編集/ライターという職業ではかなり遅いほうである。

一方、携帯電話より前から使っている電子メイルやWebといったインターネット・サーヴィスはどうかというと、なくなると困る。
圧倒的に困る、仕事になんないし、日常生活でも困る。
であるからして、欲しいのはどこでもインターネットにつながるハンドヘルドPCであり、電話機能はオマケくらいでいいのである。
ましてや、いわゆるガラパゴス携帯電話特有の機能は不要だし、EZwebのような携帯電話専用の閉鎖的コンテンツ・サーヴィスなんて使ったことがない、どうでもよいのだ。

積極的にスマートフォンを使いたいと思っている層というのは、だいたいこういうもんじゃないのか。
特にコアな層というのは、海外の端末がそのまま使えればいいくらいに思っている。
より一般に近い層でも、iPhoneのヒットを見ればわかるように、スマートフォンに日本的携帯電話としての機能は望んでなんかいない。
このあたりソフトバンクはよくわかっているから、海外発売とのタイムラグを最短にして、最新の Android 2.1 を乗せた Desire の4月末発売を発表した。
これからも海外の人気端末をどんどん出してくるだろう。

ところが au は IS01 のウリとして、CメールやEZwebが使えるだの、ワンセグや赤外線通信が付いてるだの、LISMO! や auナビウォークに対応するだのとauの独自仕様・日本的な独自仕様の充実ばかりアピールしている。
発売はまだまだ先の6月で、そんな機能のために発売日を遅らせているとしか思えない。
しかも、これだけ出遅れていながら Android のヴァージョンは1.6だ。
なにもわかっていないのだ。

スマートフォンのユーザはそんな独自機能は望んでいないのである。
ましてや電話として使えないスマートブックなるもののユーザはそんな機能はあっても使わないだろう。
重要なのはPCでふだん使っているインターネットのコンテンツをどれだけ便利に利用できるかだ。
携帯電話のようにユーザを囲い込んでコンテンツに金を落とさせセコく商売したい気持ちもわからないではないが、契約が減っては元も子もないだろう。
その点、Ustreamをがんがんアピールしてパケット代で稼ごうとするソフトバンクのほうがずっと賢い。
かつてはオッサン臭くお役所的なドコモやオンナコドモ相手のJ-PHONEに比べて、先進性・デザイン性の優越が強調されていたIDO/auの姿はもうどこにもない。

というわけで Desire の予約に行ってきます。