Atrix 4g Status Bar Network事業者名消去
Atrix 4g では、 画面上部のステータスバー左端に、ネットワーク事業者名が表示されます。
ドコモであれば、NTT DOCOMO と表示され、貴重なステータスバーで大きく幅を取ってしまいます。
おかげで、ステータスバー常駐アプリや通知アイコンはほぼ全て隠れてしまいます。(+3等の表示になっちゃう)
きっと、US AT & T や CANADA の Bell 等であれば、短いからさほど邪魔にならないのでしょう。
邪魔なので消してみよう、と挑みました。
調べていくと、どうやら ステータスバーの管理は、 /system/framework/services.jar 辺りで設定されているようです。
そのうち、PLMN 、SPN という、キャリア名とかネットワーク事業者名を表示するという設定のようです。
/system/framework/ 以下のプログラムをいじるには、deodex 化する必要があったりするようです。
deodex 化というのは、odex 解除ということで、odex とは dex を端末ごとに最適化した Optimized dex のことだとか。
dex が、Android の Java VM である、Dalvik 向けにコンパイルされたプログラム本体で、それを各端末個別に最適化したのが、odex。
odex もプログラムの実体になるので、odex があれば dex は不要。
システム関係のプログラム・アプリは、端末固有のアプリになるので、odex を予めメーカーが用意しているようです。
で、odex があると、dex を変更しても変更が読み込まれません。
dex だけだと、初回実行時だかインストール時に odex を生成するとか。
とかとかで、odex は生成が面倒なので、システムアプリについても odex を消して、dex を利用するように切り替えると、
システムアプリ変更時に楽ですよ、という感じか。
作業の流れは以下の通り。バックアップは必ず必要です。システムファイルをいじるので、余裕で文鎮化します。
言わずもがなですが、自己責任で行いましょう。
Deodex する場合(編集対象のみ)
- baksmali を利用して、services.odex を逆アッセンブルする。 ※要 /system/framework 以下のファイル群
- 出来た .smali ファイルに修正を加える。
- smali を利用して、 .smali ファイル達から classes.dex を生成する。
- services.jar に classes.dex を突っ込む。
- 端末に送りこむ。
- 既存の services.odex を削除する。
- services.jar を 4. で作成したものに置き換える。 (Permission を合わせること)
Deodex しない場合は、 5. の後に、 dexopt-wrapper を利用して services.odex を生成して、
services.odex を置き換えれば出来るかと思います。
ただ、自分は結局 Deodex してもしなくてもうまくいきませんでした。
最終的に、ADEO を利用してシステム全体を Deodex した後、Deodex版作業を行ったら、うまくいきました。
ADEO 導入については、また別に。
先に、うまくいかない場合のリカバリ方法を書いておきます。
うまくいかない場合は、起動時に Motorola の Dual-Core ロゴのまま LED が赤く点滅しだして、勝手に再起動を繰り返します。
文鎮化ですね。
赤く点滅しだすと、何も受け付けないので、時間経って再起動するのを待つか、電池を抜いて強制終了させます。
リカバリ方法
- 端末をPCと USB 接続しておきます。
- PC側で、SuperOneClick を立ち上げておきます。(SuperUserアプリ起動前でのRoot権限取得のため)
- 電源 ON 時に、ボリュームダウンボタンを押しっぱなし。(ボリュームアップだと RSD モードになります)
タイミングは、緑LED が消えてMotorola ロゴが出たぐらいから押していれば大丈夫みたいです。 - Motorola ロゴの左上に Fastboot と出たら、ボリュームダウンを何度も押して、
「Early USB Emulation」と表示されるまで繰り返し押します。
※ ボリュームアップボタンは、実行ボタンなので、行き過ぎたら再度ボリュームダウンボタンで選んで下さい。
※ 違うのを実行してしまい、戻れない場合は、電池の抜き差しで再起動しました。私は。 - 「Early USB Emulation」と表示されたら、ボリュームアップボタンを押して、実行します。
- PC側で SuperOneClick にて、「Shell Root」ボタンを押します。
- SuperOneClick 側で成功の旨のダイアログがでたら、コマンドプロンプトから、adb shell にて接続します。
- /system を rw でマウントしなおします。
- 置き換え前のバックアップしていたファイルに戻します。
- 再起動します。
これで戻れるはず。上記「Early USB Emulation」以外で adb 接続出来るようなら、他のでも出来るかと思います。
また、注意点として、「Early USB Emulation」でも、30秒ほどで勝手に再起動するので、素早さが必要です。
adb shell 後のコマンドなどは、予めコピペでできるよう準備しておきましょう。
多分 ADEO 導入がうまくいかなかった場合のリカバリも上記と同様の要領でできると思います。
詳しくは、ADEOのバッチファイル、シェルスクリプトを見ると分かるかと。
ADEO Installer は /system/etc/hosts はバックアップ取ってないっぽいのが注意かも。
baksmali や smali の使い方などは、以下を参考に。
baksmali する時は、LockScreen などで classpath の指定を求められました。
いくつか適当にやってみたけど、なかなかヒットしないので、全部指定したらうまくいきました。
コマンドを載せておきます。
java -jar c:\Tools\Android\bin\baksmali.jar -d framework -o services -x services.odex
-c :am.jar:android.policy.jar:android.test.runner.jar:bmgr.jar:com.blockbuster.lib.moto.jar
:com.google.android.maps.jar:com.motorola.android.camera.jar:com.motorola.android.customization.jar
:com.motorola.android.datamanager.base.jar:com.motorola.android.dlna.jar
:com.motorola.android.drm1.jar:com.motorola.android.Firewall.jar
:com.motorola.android.frameworks.jar:com.motorola.android.iextdispservice.jar
:com.motorola.android.mediasync.jar:com.motorola.android.mime.jar:com.motorola.android.mobad.jar
:com.motorola.android.syncml.jar:com.motorola.android.telephony.jar
:com.motorola.android.widget.jar:com.motorola.android.wmdrm.jar:com.motorola.atcmd.base.jar
:com.motorola.atcmd.pluginMgr.jar:com.motorola.blur.library.friendfeed.jar
:com.motorola.blur.library.home.jar:com.motorola.blur.library.messaging.jar
:com.motorola.blur.library.service.jar:com.motorola.blur.library.utilities.jar
:com.motorola.hardware.frontcamera.jar:com.motorola.qikenabler.jar
:com.nvidia.display.jar:com.scalado.android.photoeditor.jar:com.scalado.caps.jar
:core.jar:dmt.jar:ext.jar:framework-tests.jar:framework.jar:ime.jar:input.jar
:javax.obex.jar:jcifs-krb5-1.3.12.jar:monkey.jar:pm.jar:services.jar:svc.jar
上記は、改行なしでインプットします。 -d の後は、frameworkフォルダのパスを指定します。 -o の後は、出力されるフォルダ名を好きに指定します。
それでは、.smali の編集内容に移ります。
ソース編集内容
参考にしたのはこちら → 8796.jp 管理日誌です。
こちらに書いてあるように、StatusBarService$5.smali を編集します。2箇所編集しました。
1. --------------------------------------------const-string v2, “showSpn”
invoke-virtual {p2, v2, v5}, Landroid/content/Intent;->getBooleanExtra(Ljava/lang/String;Z)Z
--------------------------------------------
↓
1'. --------------------------------------------
const-string v2, “showSpn”
invoke-static {v2}, Ljava/lang/Boolean;->parseBoolean(Ljava/lang/String;)Z
--------------------------------------------2. ——————————————–
const-string v4, “showPlmn”invoke-static {v4}, Ljava/lang/Boolean;->parseBoolean(Ljava/lang/String;)Z
--------------------------------------------
↓
2'. --------------------------------------------const-string v4, “showPlmn”
invoke-virtual {p2, v4, v5}, Landroid/content/Intent;->getBooleanExtra(Ljava/lang/String;Z)Z
--------------------------------------------
2箇所とも変更する必要があるかはわかりません。多分1箇所だけでイイと思います。(NTT DOCOMO | NTT DOCOMO と表示されているわけではないので)
ただ、とりあえず出来たので、これでよしとします。
参考にしたとこ。
- http://media.st/blog/2010/10/desire-deodex-odex/
- http://blog.8796.jp/8796kanri/2010/11/android-deodex%E3%82%92%E3%81%97%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86.html
- http://blog.8796.jp/8796kanri/2010/09/%E9%9B%BB%E8%A9%B1-ntt-docomo%E3%81%AFntt-docomo%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F.html
- http://www.gorochan.net/2011/01/324/
- http://whitesc3.blog7.fc2.com/blog-entry-243.html
- http://whitesc3.blog7.fc2.com/blog-entry-266.html
- http://hi-android.info/src/com/android/server/status/StatusBarService.java.html
- http://forum.xda-developers.com/showthread.php?t=598396
- http://www.atrixforums.com/forum/motorola-atrix-hacks/344-how.html
- http://forum.xda-developers.com/showthread.php?t=598026
- http://forum.xda-developers.com/showthread.php?t=841287
- http://forum.xda-developers.com/showthread.php?t=936780
… という夢を見ました。技適なんちゃらが通っていない端末を日本で電波を発すると電波法違反となる可能性がありますので、ご注意下さい。
Popularity: 13% [?]
TrackBack URL :
Comments (0)