49

私は.dexファイルを持っています、それを呼んでclasses.dexください。

その内容を「読み取り」、classes.dexそこにあるすべてのクラスのリストを、パッケージを含む完全なクラス名として取得する方法はありcom.mypackage.mysubpackage.MyClassますか?

について考えてcom.android.dx.dex.file.DexFileいましたが、クラスのセット全体を取得する方法が見つからないようです。

4

5 に答える 5

118

dexdumpAndroid-SDKのコマンドライン ツールを使用します。です$ANDROID_HOME/build-tools/<some_version>/dexdump。おそらく必要以上に多くの情報を出力します。dexdump冗長にする方法は見つかりませんでしたが、

dexdump classes.dex | grep 'Class descriptor'

動作するはずです。

于 2013-08-25T11:32:55.583 に答える
16

dexlib2ライブラリをスタンドアロンライブラリ(mavenで利用可能)として使用して、dexファイルを読み取り、クラスのリストを取得できます。

DexFile dexFile = DexFileFactory.loadDexFile("classes.dex", 19 /*api level*/);
for (ClassDef classDef: dexFile.getClasses()) {
    System.out.println(classDef.getType());
}

クラス名は「Ljava/lang / String;」の形式になることに注意してください。これは、dexファイル(およびjavaクラスファイル)に格納される方法です。変換するには、最初と最後の文字を削除し、/を。に置き換えます。

于 2012-07-05T18:54:51.490 に答える
12

dex2jarに変換するユーティリティを.dex使用できます.jar.

http://code.google.com/p/dex2jar/

その後、その.jarファイルを抽出できます。

また、このフレームワークを使用できます

デクサー

于 2012-07-05T11:37:03.993 に答える