我试图在终端IDE(android)上运行Jess,但是当我尝试运行以下内容时:
terminal++@192.168.0.102:~/sdcard/myJess$ dx --dex --output=jess.dex Jess71p2/lib/jess.jar
我收到消息:
warning: Ignoring InnerClasses attribute for an anonymous inner class that doesn't come with an associated EnclosingMethod attribute. (This class was probably produced by a broken compiler.)
warning: Ignoring InnerClasses attribute for an anonymous inner class that doesn't come with an associated EnclosingMethod attribute. (This class was probably produced by a broken compiler.)
warning: Ignoring InnerClasses attribute for an anonymous inner class that doesn't come with an associated EnclosingMethod attribute. (This class was probably produced by a broken compiler.)
warning: Ignoring InnerClasses attribute for an anonymous inner class that doesn't come with an associated EnclosingMethod attribute. (This class was probably produced by a broken compiler.)
warning: Ignoring InnerClasses attribute for an anonymous inner class that doesn't come with an associated EnclosingMethod attribute. (This class was probably produced by a broken compiler.)
UNEXPECTED TOP-LEVEL ERROR:
java.lang.OutOfMemoryError
at java.util.HashMap.makeTable(HashMap.java:569)
at java.util.HashMap.doubleCapacity(HashMap.java:589)
at java.util.HashMap.put(HashMap.java:419)
at com.android.dx.rop.code.RegisterSpec.intern(RegisterSpec.java:71)
at com.android.dx.rop.code.RegisterSpec.makeLocalOptional(RegisterSpec.java:124)
at com.android.dx.rop.code.RegisterSpec.withReg(RegisterSpec.java:482)
at com.android.dx.ssa.SsaRenamer$BlockRenamer$RenamingMapper.map(SsaRenamer.java:325)
at com.android.dx.ssa.RegisterMapper.map(RegisterMapper.java:53)
at com.android.dx.ssa.NormalSsaInsn.mapSourceRegisters(NormalSsaInsn.java:43)
at com.android.dx.ssa.SsaRenamer$BlockRenamer.visitNonMoveInsn(SsaRenamer.java:555)
at com.android.dx.ssa.NormalSsaInsn.accept(NormalSsaInsn.java:199)
at com.android.dx.ssa.SsaBasicBlock.forEachInsn(SsaBasicBlock.java:957)
at com.android.dx.ssa.SsaRenamer$BlockRenamer.process(SsaRenamer.java:341)
at com.android.dx.ssa.SsaRenamer$1.visitBlock(SsaRenamer.java:146)
at com.android.dx.ssa.SsaMethod.forEachBlockDepthFirstDom(SsaMethod.java:787)
at com.android.dx.ssa.SsaRenamer.run(SsaRenamer.java:143)
at com.android.dx.ssa.SsaConverter.convertToSsaMethod(SsaConverter.java:53)
at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:100)
at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:74)
at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:269)
at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:131)
at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:85)
at com.android.dx.command.dexer.Main.processClass(Main.java:299)
at com.android.dx.command.dexer.Main.processFileBytes(Main.java:278)
at com.android.dx.command.dexer.Main.access$100(Main.java:56)
at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:229)
at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:250)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:136)
at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:113)
at com.android.dx.command.dexer.Main.processOne(Main.java:247)
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:183)
at com.android.dx.command.dexer.Main.run(Main.java:139)
at com.android.dx.command.dexer.Main.main(Main.java:120)
at com.android.dx.command.Main.main(Main.java:89)
at com.spartacusrex.spartacuside.external.dx.main(dx.java:14)
at dalvik.system.NativeStart.main(Native Method)
我尝试过其他方法,例如通过ssh连接到其他机器,但它不可用并且快速本地化。 有没有人知道解决方案或其他方法?
答案 0 :(得分:1)
Jess 7与Android不兼容。现在任何一天将被释放的Jess 8将会是。所以请关注www.jessrules.com。
答案 1 :(得分:0)
您需要将--no-strict
添加到dx
个选项,如果您面临OutOfMemory异常,则应编辑您的dx
脚本并扩展内存范围:
dalvikvm -Xss262912 -Xmx500M -cp $APK com.spartacusrex.spartacuside.external.dx $@
将-Xmx500M
更改为您所需的内存
也就是说,直到你停止接收OOM异常。
对我来说,虽然来自JDK的tools.jar的dexing tools.jar,但它的限制是-Xmx900M
,之后不再分配内存,因为我的手机有大约900-990MB空闲。
jar
命令或使用winrar或任何文件资源管理器观察该java
文件的内容,然后查找资源文件夹。你可能会找到多个这样的resources
个文件夹,提取所有这些文件夹。确保您的dex文件名为classes.dex
,然后将所有文件重新打包在一个新的jess_for_android.jar中,将所有资源保存在与原始jess.jar文件相同的目录树中< / p>
最后,当您尝试使用它时,请使用dalvikvm
命令,而不是java
,否则您将(可能)
得到错误:
dalvikvm -cp path_To_your_repacked_jar Main_className $@
内存选项-Xss和-Xmx是可选的。
希望这会有所帮助,如果你使用Jess工具,请提供一个链接。