java堆大小错误dex2jar android反编译解决办法?

Anu*_*lia 5 java android jar dex dex2jar

我正在开发一个 Android 项目,但我的笔记本电脑被格式化了,所以我丢失了所有代码,但我的手机上有该文件的签名 apk .. 每当我尝试使用 dex2jar 时,它都会因此错误而停止转换。我怎样才能增加堆大小或者有其他出路。我可以使用签名密钥反编译 apk

C:\~dex2jar>d2j-dex2jar --force
classes.dex
dex2jar classes.dex -> classes-dex2jar.jar
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at org.objectweb.asm.Type.getInternalName(Unknown Source)
    at com.googlecode.dex2jar.v3.V3ClassAdapter.searchEnclosing(V3ClassAdapt
er.java:179)
    at com.googlecode.dex2jar.v3.V3ClassAdapter.build(V3ClassAdapter.java:13
0)
    at com.googlecode.dex2jar.v3.V3ClassAdapter.visitField(V3ClassAdapter.ja
va:303)
    at com.googlecode.dex2jar.reader.DexFileReader.acceptField(DexFileReader
.java:603)
    at com.googlecode.dex2jar.reader.DexFileReader.acceptClass(DexFileReader
.java:439)
    at com.googlecode.dex2jar.reader.DexFileReader.accept(DexFileReader.java
:330)
    at com.googlecode.dex2jar.v3.Dex2jar.doTranslate(Dex2jar.java:84)
    at com.googlecode.dex2jar.v3.Dex2jar.to(Dex2jar.java:239)
    at com.googlecode.dex2jar.v3.Dex2jar.to(Dex2jar.java:230)
    at com.googlecode.dex2jar.tools.Dex2jarCmd.doCommandLine(Dex2jarCmd.java
:109)
    at com.googlecode.dex2jar.tools.BaseCmd.doMain(BaseCmd.java:168)
    at com.googlecode.dex2jar.tools.Dex2jarCmd.main(Dex2jarCmd.java:34)
Run Code Online (Sandbox Code Playgroud)

Ste*_*n C 9

复制该d2j-dex2jar.bat文件并进行编辑。找到这样一行:

java -Xms512m -Xmx1024m -cp "%CLASSPATH%" 
            "com.googlecode.dex2jar.tools.Dex2jarCmd" %*
Run Code Online (Sandbox Code Playgroud)

更改-Xmx参数以给自己更大的最大堆大小。保存它,看看修改后的 BAT 文件是否能更好地工作。(没有一种优雅的方法可以覆盖此脚本中的 JVM 设置。)


显然......如果您正在使用dex2jar-2.0,您需要编辑的文件是d2j_invoke.bat.