先日まで使用していたReboot系のアプリ Quick bootは2タップで”再起動””Recovery”が出来るので十分に事足りているのですが、Tryしてみた。
[Moto G XT1032 4.4.2 StockRom] 4-way reboot Advanced Power Menu :Deodexed android.policy.jar
参考
- XDAこちらのTread"[MOD] 4-Way Reboot - How to (GB) (ICS) (JB)
- XDAこちらのTread"[MOD][KOT49H/E/][KRT16M] Advanced 4 Way Reboot Menu - for odex and deodexed Stock ROM "
必要なファイル等
- kamome tool(こちらのTread。Deodexed android.policy.jarにする)
- Apk-Multi-Tool(Deodexed android.policy.jarをDecompile Compileする)
- Moto_G_GlobalActions$11pack(解凍しておく)
上記スレッド、Toolを作っていただいた方々に、この場をお借りいたしまして、感謝申し上げます。Thanks
諸条件
- Moto G XT1032 4.4.2 StockRom 174.44.1.falcon_umts.Retail.en.US Odex/DeodexedROM(以外でも動作するかも)
- Rooted,CWMrecovery,TWRP
- 事前のバックアップ等をしておくこと
- 電源ボタンが動作しなくなる可能性があるので、Reboot系のアプリをインストールしておく
- System内、特に危険領域であるframeworkを改変をするので、何かあったとき用の回復ツールがあること
手順
android.policy.jarをDeodex化→同Deodex化したjarをApk-Multi-ToolでDecompile→編集後→Compile→CWM、TWRP用zipで導入。Deodex化とjar Decompile、Compileの詳細は端折る。
Deodex化
Moto G からandroid.policy.jarとandroid.policy.odexを抜き取ってきて、kamometoolでDeodex化する。Apk-Multi-ToolでDecompile
Dedex化したandroid.policy.jarを"place-apk-here-for-modding"に入れてDecompileprojectフォルダ内にandroid.policy.jarができる。
GlobalActions$11pack内の3filesを追加する
・GlobalActions$11$1.smali・GlobalActions$11$2.smali
・GlobalActions$11.smali
GlobalActions$11pack内の上記3filesを、先ほどDecompileして作成されたandroid.policy.jar/smali/com/android/internal/policy/imp/に追加
GlobalActions$SinglePressAction.smaliとGlobalActions.smaliを編集
■GlobalActions$SinglePressAction.smali赤文字を追記
--------------------------------------
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x40a
name = "SinglePressAction"
.end annotation
# static fields
.field protected static rebootMode:I
.field protected static final rebootOptions:[Ljava/lang/String;
accessFlags = 0x40a
name = "SinglePressAction"
.end annotation
# static fields
.field protected static rebootMode:I
.field protected static final rebootOptions:[Ljava/lang/String;
--------------------------------------
.field private final mIcon:Landroid/graphics/drawable/Drawable;
# direct methods
.method static constructor <clinit>()V
.locals 3
const/4 v0, 0x4
new-array v0, v0, [Ljava/lang/String;
const/4 v1, 0x0
const-string v2, "Reboot"
aput-object v2, v0, v1
const/4 v1, 0x1
const-string v2, "Hot Boot"
aput-object v2, v0, v1
const/4 v1, 0x2
const-string v2, "Bootloader"
aput-object v2, v0, v1
const/4 v1, 0x3
const-string v2, "Recovery"
aput-object v2, v0, v1
sput-object v0, Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;->rebootOptions:[Ljava/lang/String;
return-void
.end method
.method protected constructor <init>(II)V
.locals 1
.param p1, "iconResId" # I
.param p2, "messageResId" # I
■GlobalActions.smali
const v3, 0x10400c7
invoke-direct {v1, p0, v2, v3}, Lcom/android/internal/policy/impl/GlobalActions$2;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$11;
const v2, 0x108007c
const v3, 0x1040366
invoke-direct {v1, p0, v2, v3}, Lcom/android/internal/policy/impl/GlobalActions$11;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 270
iget-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;
id "0x108007c" はstat_notify_sync iconで android OSに含まれる標準アイコンのid
id "0x1040366" はframewrok-res.apkをDecompileしてvalues/public.xml内に記述してある"factorytest_reboot" id="0x01040366"を記述。
--------------------------------------
CWMrecovery、TWRPから導入
4-way_reboot_Advanced_Power_Menu_4_Moto_G(android.policy.odexが削除され、4way reboot 対応のdedexed_android.policy.jarが導入される)
Moto_G_Default_Deodexed_android.policy.jar(Original Deodexed android.policy.jarに戻す場合に使用する)
Moto_G_Default_Odex_android.policy.jar_.odex(OriginalのOdex android.policy.jar/android.policy.odexの状態に戻す場合に使用する)
※追記
2014/06/06 再確認導入後、良くも悪くもないというところかな?
スポンサーリンク
------------------------------------------