当遵循Xamarin网站上Binding a Java Library的步骤为ArcGIS for Android 10.2.2创建绑定项目时,我能够编译项目。但是,当我尝试部署并运行项目时,我收到以下错误:
COMPILETODALVIK : UNEXPECTED TOP-LEVEL error :
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2760)
at java.util.Arrays.copyOf(Arrays.java:2734)
at java.util.ArrayList.ensureCapacity(ArrayList.java:167)
at java.util.ArrayList.add(ArrayList.java:351)
at com.android.dx.ssa.SsaMethod$2.addToUses(SsaMethod.java:474)
at com.android.dx.ssa.SsaMethod$2.visitPhiInsn(SsaMethod.java:459)
at com.android.dx.ssa.PhiInsn.accept(PhiInsn.java:323)
at com.android.dx.ssa.SsaBasicBlock.forEachInsn(SsaBasicBlock.java:990)
at com.android.dx.ssa.SsaMethod.forEachInsn(SsaMethod.java:729)
at com.android.dx.ssa.SsaMethod.buildUseList(SsaMethod.java:452)
at com.android.dx.ssa.SsaMethod.getUseListForRegister(SsaMethod.java:641)
at com.android.dx.ssa.SCCP.addUsersToWorklist(SCCP.java:116)
at com.android.dx.ssa.SCCP.simulateStmt(SCCP.java:538)
at com.android.dx.ssa.SCCP.simulateBlock(SCCP.java:208)
at com.android.dx.ssa.SCCP.run(SCCP.java:554)
at com.android.dx.ssa.SCCP.process(SCCP.java:92)
at com.android.dx.ssa.Optimizer.runSsaFormSteps(Optimizer.java:160)
at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:100)
at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:73)
at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:273)
at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:134)
at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:87)
at com.android.dx.command.dexer.Main.processClass(Main.java:487)
at com.android.dx.command.dexer.Main.processFileBytes(Main.java:459)
at com.android.dx.command.dexer.Main.access$400(Main.java:67)
at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:398)
at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:245)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131)
at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109)
at com.android.dx.command.dexer.Main.processOne(Main.java:422)
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:333)
at com.android.dx.command.dexer.Main.run(Main.java:209)
答案 0 :(得分:25)
<强>更新强> 正如Blueberry所述,您现在可以通过Xamarin / Visual Studio编辑器编辑此选项:
在Xamarin Studio中,您现在可以访问:
项目选项&gt;构建&gt; Android Build&gt;高级(标签)
在Visual Studio中,您现在可以转到:
项目属性&gt; Android选项&gt;高级(标签)
您可以在那里找到Java堆大小,您可以将其设置为1G。
在Xamarin 4.6及更高版本中,您可以指定Java最大堆大小(JavaMaximumHeapSize
),以便覆盖“default java heapsize which is sometimes too low to compile some .jar files.”
要指定值,请编辑Android项目的.csproj(而不是绑定项目)并在顶部添加此项(其中1G是您要设置的值)
<PropertyGroup>
<JavaMaximumHeapSize>1G</JavaMaximumHeapSize>
</PropertyGroup>
有关其他信息,请参阅Xamarin论坛上的this thread。
答案 1 :(得分:16)
在Xamarin Studio中,您现在可以访问:
项目选项&gt;构建&gt; Android Build&gt;高级(标签)
在Visual Studio中,您现在可以转到:
项目属性&gt; Android选项&gt;高级(标签)
您可以在那里找到Java堆大小,您可以将其设置为1G。