シシャモ備忘録

IT機器をいじった手順を記録。
これらの記事は自分用の備忘録です。参考にするのは自己責任で。

nexus4 セルスタンバイ対策 - アンテナピクトは立った編

2013-06-18 17:18:10 | android

最初はやぎLabsを参考にさせてもらおうかと思ったが、再コンパイルの部分が記載ミス(classes.odexではなくclasses.dexかも?)なのかうまくいかず、そのもとになったLifeScape(root化不要法)も参考にさせて頂いた。

【準備】

カレントディレクトリに "7za.exe", "busybox", "dexopt-wrapper", "smali*.jar", "baksmali*.jar"を準備。最後の2つはそれぞれ"smali.jar", "baksmali.jar"に変名し、コピーしておく。まとめたものはここ

ちなみに /system/xbin には初めから "dd"コマンドも"cp"コマンドも入っており、busybox必要ないかも。また、root化時に "SU_Busybox_Package.zip" をインストールしていれば、当然busyboxも入っている。

Android SDK, Java SE JDK を使えるようにする。(root化の記事参照)
端末をデバッグモードで接続。
Android 4.2.2 のAPI level は17。

【作業】

DOS窓を立ち上げて /system/framework 以下のファイルを temp フォルダに取得。

>mkdir temp
>cd temp
>adb pull /system/framework

逆コンパイル

>java -jar ..\baksmali.jar -x telephony-common.odex

必要箇所の修正
"out\com\android\internal\telephony\gsm\GsmServiceStateTracker.smali"の以下の部分を

/////////////////
.line 702
.local v13, voice_capable:Z
if-nez v13, :cond_86
/////////////////

から

/////////////////
.line 702
.local v13, voice_capable:Z
if-eqz v13, :cond_86
/////////////////

に書き換え。

再コンパイル

>java -jar ..\smali.jar --api-level 17 -o classes.dex out
>copy /y /v telephony-common.jar telephony-common.jar.org
>..\7za a -tzip -mx0 telephony-common.jar classes.dex
>cd ..

端末内で odex を作成

>adb push temp\telephony-common.jar /data/local/tmp
>adb push dexopt-wrapper /data/local/tmp
>adb shell chmod 755 /data/local/tmp/dexopt-wrapper
>adb shell rm /data/local/tmp/telephony-common.odex
>adb shell cd /data/local/tmp; ./dexopt-wrapper telephony-common.jar telephony-common.odex
>adb shell rm /data/local/tmp/telephony-common.jar
>adb shell rm /data/local/tmp/dexopt-wrapper

PC側にあるCWMのイメージファイルから起動させる

>adb reboot bootloader
>fastboot boot recovery-clockwork-6.0.3.1-mako.img

odex の入替え

>adb shell mount /data
>adb shell mount /system
>adb push busybox /data/local/tmp
>adb shell chmod 755 /data/local/tmp/busybox
>adb shell /data/local/tmp/busybox dd if=/system/framework/telephony-common.odex of=/data/local/tmp/telephony-common.odex bs=1 count=20 skip=52 seek=52 conv=notrunc
(adb dd if...からでもできるかも。ちなみにここは逆コンパイル‐再コンパイル後のファイルに元の「署名」をうつす処理らしいが、必要ないかも。)

>adb shell cd /data/local/tmp; busybox cp telephony-common.odex /system/framework/telephony-common.odex.new
>adb shell mv /system/framework/telephony-common.odex /system/framework/telephony-common.odex.old
>adb shell mv /system/framework/telephony-common.odex.new /system/framework/telephony-common.odex

>adb shell rm /data/local/tmp/busybox
>adb shell rm -rf /data/dalvik-cache

>adb reboot

>rmdir /s /q temp

うまくいかない場合は /system/framework/telephony-common.odex.old より telephony-common.odex を復帰させればよいはず。

これでnexus4にアンテナピクトが立った。問題はこれでバッテリーの減りが遅くなるかどうかだが。


最新の画像もっと見る

1 コメント

コメント日が  古い順  |   新しい順
必要箇所の修正とは (kazuodesu)
2013-08-04 01:46:23
はじめまして。
現在、このページを参考にさせて頂き、アンテナピクト表示に挑戦中です。
教えて頂きたいのは、パソコンに詳しくないので、必要箇所の修正の if-nez v13 を if-eqz v13, に書き換えるには、どの様にしたら良いのでしょうか? お手数ですが、宜しくお願い致します。

コメントを投稿