HTC EVO 4 G LTEプレミアム電源メニューの漢化参考

5396 ワード

多くのサードパーティ製ROMには、高度な電源メニューが含まれていますが、再起動項目の4つのオプションは、以下のように英語のリストになります.normal
                   hot reboot
                   bootloader
                   recovery
           
この点はどうしても不快なので、このリストを正常に再起動する方法を教えてあげましょう.
クイック再起動
ブートモード
ブラシモード
   
一、実現原理:リストの4つの項目は1つの文字列型配列(配列1)に定義され、単純にこの配列の4つの文字列を漢化すると、表示値とオペランドが衝突するため、再起動にエラーが発生する.好奇心のある友達はやってみてもいいです.解決策は,容量4の文字列型配列(配列2)を再定義し,漢化後の値を付与し,作用は表示のみで操作数と分離し,操作数との衝突を生じないようにすることである.最終的な効果は,表示時に配列2を読み出し,操作時にパラメータが配列1から読み出すことである.(ここを理解するにはプログラミングの基礎が必要かもしれませんが、分からなくても大丈夫です.チュートリアルに従ってやれば、成功します)
   
二、修正方法:(方法は参考に供するだけで、問題があればフォローして返事してください.ありがとうございます~!)1、圧縮パッケージでandroidを開く.policy.JAr、classes.dexを取り出し、smaliツールルートディレクトリの下に置き、「パケット解除」を実行し、フォルダoutを出力します.これはdexをsmaliファイルに逆コンパイルし、修正しやすいことです.
2、修正を行います.ここで具体的な行数は自分で説明しますが、実際には多少ずれている可能性があります.
開くcomandroidinternalpolicyimplGlobalActions$SinglePressAction.smali、24行で、このような文を見つけました.
  • .field protected static final rebootOptions:[Ljava/lang/String;

  • この文の意味は、rebootOptionsという文字列型の変数を定義することであり、字面では再起動設定と理解しやすく、原理で述べた操作数である.原理に基づいて説明したように、表示として同じタイプの変数を再定義する必要があります.中央に1行空け、26行に次の文を追加します.
  • .field protected static final rebootString:[Ljava/lang/String;

  • 変数の名前はrebootStringと呼ばれ、後で表示されます.
    3、引き続き下を見て、38行目の後:
                  .method static constructor ()V
                     .registers 3              ——    3    
                 
                     const/4 v0, 0x4      ——v0=4
                 
                    new-array v0, v0, [Ljava/lang/String;      ——     ,   v0, 4
                 
                    const/4 v1, 0x0     ——v1=0
                 
                    const-string v2, "Normal"   ——v2=Normal
                
                     aput-object v2, v0, v1       ——v0     v1   v2,         Normal(  0           ,0123  1234)
                 
                     const/4 v1, 0x1
                 
                    const-string v2, "Hot restart"
                 
                    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;      ——rebootOptions  v0      ,     
    上段の元のコードは、必要なところに注釈が付けられていますので、コードをよく見てみましょう.元のコードは,ここではrebootOptionsにパラメータを提供する容量4の配列のみを定義していることが分かる.同様に、これに倣って容量4の配列を定義し、上で定義したrebootStringにパラメータを提供します.
    修正されたコードは次のとおりです.
                 .method static constructor ()V
                    .registers 8
                 
                     const/4 v7, 0x4
                 
                    const/4 v6, 0x3
                 
                    const/4 v5, 0x2
                 
                     const/4 v4, 0x1
                
                   const/4 v3, 0x0
                 
                   new-array v0, v7, [Ljava/lang/String;             ——    v0,   v7(4)
                 
                   const-string v2, "\u6B63\u5E38\u91CD\u542F"    ——“    ”        v2
                 
                    aput-object v2, v0, v3                   ——  v0  v3  v2
                 
                   const-string v2, "\u5FEB\u901F\u91CD\u542F"   ——“    ”
                 
                    aput-object v2, v0, v4
                 
                     const-string v2, "\u5F15\u5BFC\u6A21\u5F0F"   ——“    ”
                 
                    aput-object v2, v0, v5
                 
                     const-string v2, "\u5237\u673A\u6A21\u5F0F"   ——“    ”
                 
                   aput-object v2, v0, v6
                 
                     sput-object v0, Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;->rebootString:[Ljava/lang/String;    ——      ,rebootString       v0   
                     new-array v1, v7, [Ljava/lang/String;
                
                   const-string v2, "Normal"
                 
                    aput-object v2, v1, v3
                 
                    const-string v2, "Hot restart"
                 
                    aput-object v2, v1, v4
                 
                    const-string v2, "Bootloader"
                 
                     aput-object v2, v1, v5
                 
                     const-string v2, "Recovery"
                 
                    aput-object v2, v1, v6
                 
                    sput-object v1, Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;->rebootOptions:[Ljava/lang/String;

    これにより、4ビットの内容が正常再起動、高速再起動、ブートモード、ブラシモードの新しい配列が作成されます.表示されるとrebootStringはこの配列の値を呼び出し、漢化の目的を達成します.ファイルを保存します.
    4、comandroidinternalpolicyimplGlobalActions$5.smali、71行:
    sget-object v2, Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;->rebootOptions:[Ljava/lang/String;

    rebootOptionsをrebootStringに変更します.表示時にrebootStringで値を取るように指定します.ファイルを保存します.
    5.GlobalActions$SinglePressAction.smaliとGlobalActions$5.smali修正保存後、smaliツールのルートディレクトリに戻り、「パッケージ」を実行し、ファイルsmail-classesを生成します.dex.このファイルの名前をclassesに変更します.dexは、圧縮パケットでandroidを開く.policy.JAr、classes.dexを入れて、サインしなくてもいいです.
    新しいandroidですpolicy.jarは終わりました.adb pushまたはREファイルブラウザで置き換え、対応する権限と所有者を修正して、効果を見てみましょう.