Galaxy S で /system の容量が足りないとお嘆きのあなたへ

こんにちは、フォントやら framework やらを弄りまくると /system の容量が少なくて泣ける cryks です。
以前の記事では /system 以下にリネームバックアップしてましたが、そんなことをすると /system の空き容量がマッハです。


そんなわけで /data に移し替えましょう。


取り立てて説明するようなものでもないですけど、framework-res.apk を例に。
あ、書いてある内容に責任は持てませんのでうんぬんかんぬん


以下起動中
> adb push framework-res.apk.customized /sdcard/
> adb shell
$ su
# cd /data
# mkdir framework
# chmod 775 framework
# cd framework
# cp /sdcard/framework-res.apk.customized .


以下リカバリモード、rageagainstthecage で rooted 前提
z4mod でカーネルパッチを当てている場合は、/system が ro でマウントされますので、rw で remount してください。
> adb shell
# cd /system/framework
# mv framework-res.apk framework-res.apk.original
# ln -s /data/framework/framework-res.apk.customized framework-res.apk


/data はリカバリモードでは見えないので、/data に突っ込むのは通常起動中である必要があります。
また、リカバリモードの wipe を選ぶとえらいことになるので、そのときはバックアップを復活させてください。


(2010/12/31 追記)
/data がリカバリモードで見えないのは、z4mod で mmcblk0p1 が ext2 になっている場合です (リカバリモード時に ext2 モジュールが読み込まれないため)。
rfs のままの場合は見えているかもしれません。もしくは、適切な mount コマンドを叩けばマウントできるかもしれません。未確認。
OCLF で lagfix している場合は諦めてください。

ドコモ版 Galaxy S (SC-02B) でバッテリーアイコンを変更する

バッテリーに限らず、要は framework-res.apk を弄る方法です。
私はこれで動いていますが(動いているように見えるだけかも)、必ずバックアップは取ってください。


必要なのは、オリジナルの framework-res.apk と、Apk Manager と、バッテリーアイコンの xml/png ファイルです。
Apk Manager は各種ツールを持っていれば必要ありませんが、これ1つで apk の逆コンパイル・コンパイルなどが出来るので、持っていて損はないと思います。
バッテリーアイコンは
http://forum.xda-developers.com/showthread.php?t=724778
ここからダウンロードしました。私は Version I を使用しました。
Post #2 にある Source Zip Files からダウンロードしてください。


Apk Manager の place-apk-here-for-modding ディレクトリに、オリジナルの framework-res.apk を突っ込みます。
Script.bat を起動し、プロジェクトを選択、Decompile を選択します。
projects ディレクトリに展開されますので、ダウンロードした zip の中にある drawable ディレクトリと drawable-hdpi ディレクトリの中身を projects の中のしかるべき場所にコピーします。
zip には drawable-hdpi-v4 というディレクトリで保管されていますが、中身は drawable-hdpi に入れて大丈夫です。


次に Compile です。
2回質問が出てきますが、両方とも y を選んでください (ちゃんと質問の中身も読んでおいてね)。
2回目の質問の後にキー入力待ち状態となり、Apk Manager のディレクトリに keep ディレクトリが現れます。
要はこの keep ディレクトリに残っている物はそのまま使い、入っていないものを projects から上書き圧縮するような感じになります (ちょっと違う気がする)。
というわけで、上書きしたファイルを keep ディレクトリから消していくのですが、ファイルをちまちま消すのはめんどくさいですね。
projects で上書きコピーしたように、keep でもいったん上書きコピーし、更新日時でソートかけてまとめて削除するほうが漏れが無くて良いと思います。
あと、Apk Manager の注意書きの通り、xml を変更しているので resources.arsc も削除します。
適当にキーを叩けばコンパイルされます。


Sign は必要ありません。完成です。
place-apk-here-for-modding ディレクトリにコンパイルされた apk ができあがっていますので、適当にファイル名を変えて導入して終わりです。


(2010/12/31 追記)
この手法はもちろん Mobile なんちゃらの謎文字列にも適用できます。
デコンパイル→謎文字列の作業→コンパイル→keep は resources.arsc を削除するのみ、でOKです。

それなりに安全に Galaxy S で framework-res.apk を書き換える方法

framework-res.apk を書き換えるときは、update.zip を使うか、起動中に書き換える方法が一般的です。
ですが、元の framework-res.apk を削除・置き換えするのは、いくらバックアップを取っているとはいえ怖かったりします。
特に起動中に framework-res.apk を削除すると、だんだん動作が不安定になってきますので、迅速に新しい framework-res.apk をコピーする必要があるなど、難易度が高めです。


というわけで、間違いなくバックアップを取りつつ安全に framework-res.apk を書き換える手段です。
それなりに安全に、とは書いていますが、あくまでやっていることが理解できる場合のみです。
すべて自己責任でお願いします。


さて、書き換えたい framework-res のファイル名を、ここでは framework-res.apk.customized とします。
まず、 リカバリモードに突入します。
http://d.hatena.ne.jp/cryks/20101104/1288826791 を参考に、root を取得してください。
リカバリモードでは /system は rw でマウントされていますので、再マウントの必要はありません。


> adb push framework-res.apk.customized /tmp
> adb shell
# cp /tmp/framework-res.apk.customized /system/framework
# cd /system/framework
# mv framework-res.apk framework-res.apk.original
# ln -s framework-res.apk.customized framework-res.apk


要はリカバリモードで作業することで framework-res の実行は関係なくなり、さらに元のファイルは同じ階層に保管しておき、あくまでシンボリックリンクで指し示す先を変更するといった感じです。
もし起動しなくなっても、リカバリモードに入り root を取り、


# cd /system/framework
# rm framework-res.apk
# ln -s framework-res.apk.original framework-res.apk


とするだけで復旧ができます。


(2010/12/31 追記)
この方法だと /system の空き容量がマッハになるので、/data などに移してリンクしたほうが空き容量的には幸せです。
ただし factory reset したときが悲惨です。
どちらも自己責任で。
Galaxy S で /system の容量が足りないとお嘆きのあなたへ

ドコモ版 Galaxy S (SC-02B) のリカバリ画面で root になる方法

1週間で文鎮化しかけたのでメモ。
何故かリカバリモードで /sdcard すら使えなくなって、これはいよいよ詰まったかと思ったときに活路を見いだせました。
手順は誰でも思いつきそうですが…。


1. rageagainstthecage を用意 (SuperOneClick 等に含まれています)
2. adb push rageagainstthecage /tmp
3. adb shell
4. chmod 755 /tmp/rageagainstthecage
5. /tmp/rageagainstthecage


/tmp に rageagainstthecage 置いて実行するだけですね。
sdcard すら使えなくて push できる場所がないと思ったのですが、リカバリモードのときは /tmp が現れていたので助かったという。


みんな!
/system のリマウントはちゃんとした手段でやるんだぞ!

日本版 Galaxy S (SC-02B) の標準カメラのシャッター音を無音にする

スマホかったぞー!
写真撮りまくってツイッタァにアップしまくるぞー!
パシャパシャパシャパシャ…


うるさいですね。


というわけで、root が必要ですがシャッター音を無音にしてしまいましょう。
もちろん、ToyCam のような、そもそもシャッター音がないアプリを使うのも手です。


1. 適当なディレクトリに cd
2. adb shell
3. su
4. cp /data/data/com.sec.android.app.camera/shared_prefs/com.sec.android.app.camera_preferences.xml /sdcard/
5. exit x 2
6. adb pull /sdcard/com.sec.android.app.camera_preferences.xml .
7. pull した xmlテキストエディタで開く
8. の value を 0 にする
9. adb push com.sec.android.app.camera_preferences.xml /sdcard/
10. adb shell
11. su
12. cp /sdcard/com.sec.android.app.camera_preferences.xml /data/data/com.sec.android.app.camera/shared_prefs/
13. 撮りまくり


やったね。
設定項目のシャッター音の項目も「OFF」になっています。
他のシャッター音に変更してしまうと、また上の手順が必要になります。


ちなみに国際版 Galaxy S は、シャッター音の項目に「OFF」が用意されているみたいです。
日本版は選択項目が削除されているだけみたいですね。

Android 端末で carrozzeria カーナビのスマートループ接続

10月28日に Galaxy S が発売され、今冬にも様々な Android 端末が発売予定となっており、2010年はまさにスマホ元年と言っても良いほどの年だと思います。


さて、いままで Xperia を使っていたのですが、carrozzeria カーナビ (以下カロナビ) と Bluetooth で接続すると、使えるのは通話機能だけでした。
通信機能は AndroidBluetooth DUN に対応していないためです。


しかーし!
なんでもできる Android ということで、root なんてなくてもテザリングできちゃうすごいアプリ PdaNet があります!


しかーし!
Bluetooth DUN でのテザリングは Android 2.1 以降からなのです!


ということで、Galaxy S を入手して試したかったことの一つ「PdaNet の Bluetooth DUN テザリングでスマートループは使えるか?」をやってみました。


手順は次の通り。
1. PdaNet をマーケットからインストール
2. 手順に従って Bluetooth DUN テザリングを有効にする
3. ナビとペアリング (既にしているなら要らないはず)
4. ナビ側の接続設定を編集、「接続先電話番号」を「123」に、あとは空欄
5. おもむろに「渋滞」ボタンを長押し
6. スマートループ情報を取得しました。


これでスマートループや駐車場情報などがガンガン取得できます!やったね!
ただ、ミュージックサーバのアルバム情報などは取得できませんでした。見に行ってるサーバが違うからでしょうか。
DNS を設定する等すればもしかするといけるかもしれませんが、時間が無くて試していません。
→ (追記)
だめでした。パケットキャプチャして通信内容見てみたのですが、暗号化された何か(タイトル?)を受信したっきりナビの応答が無くなっているようでした。
なんとなくついでにスマートループの方も見てみたのですが、https だったので手の出しようがありませんでした。さすが?

超ショック

今日発売の猫叉Master+アルバムの発送メールがいっこうに来ないと思ったら


注文してなかった!!!!!!!!!!!!!!


あほか!!!!!!!!!!!!


やべー今から注文しても10月2日だってよーうわー


超ショック