今回はadbを使って通常起動状態の端末にリソースを突っ込む方法を解説します。
まずは端末の状態を確認します。「adb shell」で端末に入りましょう。
ここでカーソルが「$」の人と「#」の人が居ると思います。
以前にも書きましたが「$」は一般ユーザー「#」はrootユーザーでしたね。
機種にもよりますが何も弄っていない状態だと「$」だと思います。
root端末の場合はここで「su」と入力するとrootに切り替わります。
この挙動の違いは/default.propに記載されているro.secureの値によって決まります。
0の場合はrootでログイン。1の場合は一般ユーザーでログイン。
どちらも出来る事は変りませんが一般ユーザーの場合は若干面倒臭いかな?といったレベルですね。
これを変更するにはdefault.propの値を書き換えてしまえば良いのですが
以前話したinit.rcと同じでこのファイルはboot.imgに入っていて書き換えられないようになっています。
この変更を施したboot.imgを「unsecureなboot.img」と呼びます。
前置きはこの位にして本題に入ります。
端末にリソースを突っ込むには前回書いた「adb push」を使うのですが
/system以下は書き換えが出来ないように読み取り専用でmountされています。
先ずは/systemを一度umountして読み書き可能な状態で再mountしてやる必要があります。
上記のunsecureな状態になっている人は「exit」で一度shellを抜けて
adb remount
を実行するだけでOKです。
それ以外の人で例えばHTC Sensationの場合は
mount -o rw,remount /dev/block/mmcblk0p22 /system
と入力します。
この例の「/dev/block/mmcblk0p22」はsystemに割り当てられた、NANDパーティションのデバイス名です。
これは機種毎に違います。
「mount」と入力すると各領域に割り当てられたデバイス名が表示されるので置き換えて下さい。
これで「adb push」を使えば突っ込める状態になりましたが、あと一点気をつけたい所があります。
「adb shell」上で「df」を実行します。
これはパーティション毎の空き容量です。
以前話ましたがAndroidは同一ディレクトリーツリー上に複数のデバイスが割り当てられているんでしたよね。
これを見れば一目瞭然。この場合system以下は120128Kの空き容量があるということになります。
systemにサイズのでかいファイルを突っ込もうとすると途中でディスクフルになる場合があり
端末上には壊れたファイルが残ります。
端末が起動しなくなった場合はこの辺りも疑ってみてください。
pushを使って物を突っ込む場合はshellから抜けてこう入力します。
shellを抜けるには「exit」若しくは、ちょっと荒っぽいですがctrl-Cですよ。
adb push a.txt /system/
この場合はa.txtをsystem直下に突っ込みます。
adb push [入れたいリソース] [入れる場所]
と言う構文ですね。
これはあくまで一例でFontの入れ方の方で詳しく書きます。
次回はリカバリー状態の端末にリソースを突っ込む方法についてです。
まずは端末の状態を確認します。「adb shell」で端末に入りましょう。
ここでカーソルが「$」の人と「#」の人が居ると思います。
以前にも書きましたが「$」は一般ユーザー「#」はrootユーザーでしたね。
機種にもよりますが何も弄っていない状態だと「$」だと思います。
root端末の場合はここで「su」と入力するとrootに切り替わります。
この挙動の違いは/default.propに記載されているro.secureの値によって決まります。
0の場合はrootでログイン。1の場合は一般ユーザーでログイン。
どちらも出来る事は変りませんが一般ユーザーの場合は若干面倒臭いかな?といったレベルですね。
これを変更するにはdefault.propの値を書き換えてしまえば良いのですが
以前話したinit.rcと同じでこのファイルはboot.imgに入っていて書き換えられないようになっています。
この変更を施したboot.imgを「unsecureなboot.img」と呼びます。
前置きはこの位にして本題に入ります。
端末にリソースを突っ込むには前回書いた「adb push」を使うのですが
/system以下は書き換えが出来ないように読み取り専用でmountされています。
先ずは/systemを一度umountして読み書き可能な状態で再mountしてやる必要があります。
上記のunsecureな状態になっている人は「exit」で一度shellを抜けて
adb remount
を実行するだけでOKです。
それ以外の人で例えばHTC Sensationの場合は
mount -o rw,remount /dev/block/mmcblk0p22 /system
と入力します。
この例の「/dev/block/mmcblk0p22」はsystemに割り当てられた、NANDパーティションのデバイス名です。
これは機種毎に違います。
「mount」と入力すると各領域に割り当てられたデバイス名が表示されるので置き換えて下さい。
これで「adb push」を使えば突っ込める状態になりましたが、あと一点気をつけたい所があります。
「adb shell」上で「df」を実行します。
これはパーティション毎の空き容量です。
以前話ましたがAndroidは同一ディレクトリーツリー上に複数のデバイスが割り当てられているんでしたよね。
これを見れば一目瞭然。この場合system以下は120128Kの空き容量があるということになります。
systemにサイズのでかいファイルを突っ込もうとすると途中でディスクフルになる場合があり
端末上には壊れたファイルが残ります。
端末が起動しなくなった場合はこの辺りも疑ってみてください。
pushを使って物を突っ込む場合はshellから抜けてこう入力します。
shellを抜けるには「exit」若しくは、ちょっと荒っぽいですがctrl-Cですよ。
adb push a.txt /system/
この場合はa.txtをsystem直下に突っ込みます。
adb push [入れたいリソース] [入れる場所]
と言う構文ですね。
これはあくまで一例でFontの入れ方の方で詳しく書きます。
次回はリカバリー状態の端末にリソースを突っ込む方法についてです。