java堆大小错误dex2jar android反编译解决方案?

时间:2013-05-11 12:27:56

标签: 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)

2 个答案:

答案 0 :(得分:3)

制作d2j-dex2jar.bat文件的副本,然后进行编辑。找到说明这一点的行:

java -Xms512m -Xmx1024m -cp "%CLASSPATH%" 
            "com.googlecode.dex2jar.tools.Dex2jarCmd" %*

更改-Xmx参数,为自己提供更大的maxheap大小。保存它,看看你修改的BAT文件是否更好。 (在此脚本中没有优雅的方法来覆盖JVM设置。)

答案 1 :(得分:1)

如果您使用dex2jar-2.0,则可以找到说明这一行:

  

java -Xms512m -Xmx1024m *******************************        在d2j_invoke.bat而不是d2j_dex2jar.bat