2013-05-11 197 views
1

我正在開發一個android項目,但我的筆記本電腦已格式化,所以我失去了所有的代碼,但我手機上有一個已簽名的apk文件。每當我嘗試使用dex2jar它會停止轉換中途出現此錯誤。我如何增加堆大小或有另一種方法。我可以反編譯與密鑰的APK它與java堆大小錯誤dex2jar android反編譯解決方案?

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) 

回答

3

簽署充分利用d2j-dex2jar.bat文件的副本,並對其進行編輯。找到這樣的行:

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

更改-Xmx參數以給自己一個更大的maxheap大小。保存它,並查看您修改的BAT文件是否更好。 (沒有在此腳本來覆蓋JVM設置一個優雅的方式。)

+0

我試過這個,但它給了我另一個錯誤 dex2jar classes.dex - > classes-dex2jar.jar # #There is insu爲Java運行時環境繼續提供足夠的內存。 #本機的存儲器分配(malloc的)未能分配用於卡1863680個字節TA BLE膨脹 #包含更多信息的錯誤報告文件保存爲: #C:〜dex2jar-0.0.9.13 \ hs_err_pid6240.log – 2013-05-11 15:11:19

+0

我改變xmx1024到xmx8192 這裏是日誌:http://pastebin.com/J513Q5Js – 2013-05-11 15:12:04

+1

你沒有足夠的物理內存/交換空間使堆很大。嘗試更小的東西。可能這種方法根本不起作用。也許你需要弄清楚爲什麼dex2jar使用這麼多的內存,並修改它。 (也許它正在泄漏內存......) – 2013-05-11 23:17:00

0

如果你使用dex2jar-2.0,你可以找到行這樣說:

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