如何让dex2jar在将dex转换为jar时跳过某些类?

时间:2014-02-07 14:15:07

标签: java android jar dex dex2jar

我正在创建一个使用 dex2jar 库将dex文件(从android应用程序包)转换为jar文件的应用程序。但是这个过程需要很长时间,特别是由于android.support。 x 类。有没有办法让dex2jar在反编译时跳过某些类(我们指定的)?

这是我目前正在使用的代码:

DexFileReader reader = new DexFileReader(new File(PackageDir));
Dex2jar.from(reader)
.reUseReg(reuseReg)
.topoLogicalSort(topologicalSort || topologicalSort1)
.skipDebug(!debugInfo)
.optimizeSynchronized(optmizeSynchronized)
.printIR(printIR)
.verbose(verbose)
.to(file);

1 个答案:

答案 0 :(得分:1)

您可以使用dexlib2加载dex文件,删除您不感兴趣的类,然后构建新的dex文件

int api = 19;
DexFile dexFile = DexFileFactory.loadDexFile(dexFilePath, api);

List<ClassDef> classes = new ArrayList<ClassDef>();

for (ClassDef classDef: dexFile.getClasses()) {
    if (!classDef.getType().startsWith("Landroid/support/")) {
        classes.add(classDef);
    }
}

dexFile = new ImmutableDexFile(classes);
DexFileFactory.writeDexFile(dexFilePath, dexFile);