Подтвердить что ты не робот

Явное пространство Java OutOfMemoryError при привязке .jar в Xamarin

Следуя шагам на сайте Xamarin для Связывание библиотеки Java, чтобы создать проект привязки для ArcGIS для 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)
4b9b3361

Ответ 1

Update: Как сказал Blueberry, теперь вы можете отредактировать эту опцию с помощью редакторов Xamarin/Visual Studio:

В Xamarin Studio вы можете перейти к:

Project Option > Build > Android Build > Дополнительно (вкладка)

В Visual Studio вы можете перейти к:

Свойства проектa > Параметры Android > Дополнительно (вкладка)

Здесь вы найдете Java Heap Size, который вы можете установить в 1G.

В Xamarin 4.6 и более поздних версиях вы можете указать максимальный размер кучи Java (JavaMaximumHeapSize), который позволяет переопределить " умолчанию java heapsize, который иногда слишком мало, чтобы скомпилировать некоторые .jar файлы."

Чтобы указать значение, отредактируйте проект .csproj проекта Android (а не проект привязки) и добавьте его вверху (где 1G - это значение, которое вы хотите установить)

<PropertyGroup>
    <JavaMaximumHeapSize>1G</JavaMaximumHeapSize>
</PropertyGroup>

Дополнительную информацию см. этот поток на форумах Xamarin.

Ответ 2

В Xamarin Studio вы можете перейти к:

Project Option > Build > Android Build > Дополнительно (вкладка)

В Visual Studio вы можете перейти к:

Свойства проектa > Параметры Android > Дополнительно (вкладка)

Здесь вы найдете Java Heap Size, который вы можете установить в 1G.