2017-09-14 6 views
0

こんにちは私の弱い英語のために私を許してください。 apktoolがグローバル変数をソートするのを防ぐには?

public class A { 


public static final SomeClass1 variable_C = new SomeClass1(); 
public static final SomeClass1 variable_A = new SomeClass1(); 
public static final SomeClass1 variable_D = new SomeClass1(); 
public static final SomeClass1 variable_B = new SomeClass1(); 


} 

私は私のプロジェクトをコンパイルし、それを逆コンパイルするapktoolする私のプロジェクトのAPKを与える

は、apktoolは以下のクラスAのように逆コンパイル:私は、下記の内容と私のアンドロイドアプリケーションにクラスAという名前のクラスを持っている

public class A { 


public static final SomeClass1 variable_A = new SomeClass1(); 
public static final SomeClass1 variable_B = new SomeClass1(); 
public static final SomeClass1 variable_C = new SomeClass1(); 
public static final SomeClass1 variable_D = new SomeClass1(); 

}

apktool私のプロジェクトのAPK逆コンパイル順序をアルファベット順発注グローバル変数を変更したとき。 apktoolはグローバル変数をアルファベット順にソートせず、apkを逆コンパイルするときにメイングローバル変数を並べ替えることができますか?

あなたの答えに感謝します。

答えて

1

これはapktoolの障害ではありません。 Javaクラスファイル形式とは異なり、Android dex形式ではフィールドがソート順に表示される必要があります。つまり、コードをコンパイルするとすぐにソースレベルの順序が失われます。符号化要素のシーケンスとして表さ

https://source.android.com/devices/tech/dalvik/dex-format#class-data-itemから定義された静的フィールド、。 フィールドは、field_idxで昇順に並べ替える必要があります()。

フィールド識別子リスト。これらは、ファイルに定義されているかどうかに関係なく、このファイルが参照するすべてのフィールドの識別子です。 このリストはソートされなければなりません。は、定義型(type_idインデックスによる)がメジャーオーダー、フィールド名(string_idインデックスによる)が中間オーダー、およびタイプ(by type_idインデックス)がマイナーオーダーです。リストに重複したエントリーが含まれていてはなりません。

関連する問題