我有一个.dex文件,称为classes.dex

有没有一种方法可以“读取”该classes.dex的内容,并获取其中所有类的完整列表,包括完整的类名,包括其包com.mypackage.mysubpackage.MyClass,例如?

我在考虑 com.android.dx.dex.file.DexFile ,但似乎找不到用于检索整个类集的方法。

最佳答案

您可以将dexlib2 library用作独立库(available in 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类文件)中的方式。要进行转换,只需删除第一个和最后一个字母,然后将/替换为即可。

10-06 03:32