Ошибка после включения Multi-Dex в Xamarin Android

При создании приложения Xamarin для Android после добавления ссылки на элемент управления Infragistics Chart и сервисов Google Play мы должны были включить свойство Enable Multi-Dex 'true (так как приложение попало в ограничение метода dex 65K). Мы получаем сообщение об ошибке

..\CREATEMULTIDEXMAINDEXCLASSLIST: Error: Expecting class path
separator ';' before
'\Android\android-sdk\build-tools\21.1.1\lib\shrinkedAndroid.jar' in
argument number 8

Я использую Xamarin Studio Version 5.9 (сборка 431) Версия Xamarin.Android: 5.1.0

Пожалуйста, помогите исправить эту проблему в Xamarin.

Ответ 1

У нас была такая же проблема на нашем сервере сборки, и нам пришлось переместить Android SDK на путь без пробелов, например. C:\android-sdk\...

Очевидно, нам нужно было обновить переменную среды ANDROID_HOME до нового пути и установить пути SDK в Xamarin Studio и Visual Studio.

Это решило проблему для нас.

Ответ 2

Для тех, кто не хочет менять фактическое местоположение Android SDK плюс переменную enROID_HOME env, достаточно простой ссылки:

mklink /D "C:\android-sdk" "C:\Program Files (x86)\Android\android-sdk"

Ответ 4

Я сталкиваюсь с этой проблемой в любое время, когда я делаю обновление, которое меняет или устанавливает новую папку с инструментами. Поэтому я решил сохранить решение здесь для себя и для кого это могло бы выиграть от этого решения.

Некоторые ссылки bugzilla в других решениях или комментариях недоступны никому. Причиной этого является проблема с Android SDK на машинах Windows. Следующее исправление должно быть применено к серверу сборки и машинам разработчиков:

  • Исправление заключается в настройке mainDexClasses.bat в Android SDK. Найдите этот файл и примените исправление ко всем экземплярам. Прежде всего, найдите папку android-sdk и вспомогательные сборщики. Мой путь, например C:\Users\YOURUSERNAME\AppData\Local\Android\Android-SDK\сборки-инструменты \ проверьте внутри папок с номером версии, например xx.x.x(например, 24.0.1)
  • Итак, внутри файла mainDexClasses.bat найдите следующий блок текста:

если вывод DEFINED переадресован / call "% java_exe%" -Djava.ext.dirs = "% frameworkdir%" com.android.multidex.MainDexListBuilder "% disableKeepAnnotated%" "% tmpJar%" "% params%"
goto afterClassReferenceListBuilder
: перенаправление call "% java_exe%" -Djava.ext.dirs = "% frameworkdir%" com.android.multidex.MainDexListBuilder "% disableKeepAnnotated%" "% tmpJar%" "% params%" 1 > "% output%"
: AfterClassReferenceListBuilder

И замените на:

SET params =% params: '=%
если результат DEFINED переадресуется | вызов "% java_exe%" -Djava.ext.dirs = "% frameworkdir%" com.android.multidex.MainDexListBuilder% disableKeepAnnotated% "% tmpJar%" % params%
goto afterClassReferenceListBuilder
: перенаправление вызов "% java_exe%" -Djava.ext.dirs = "% frameworkdir%" com.android.multidex.MainDexListBuilder% disableKeepAnnotated% "% tmpJar%" % params% 1 > "% output%"
: AfterClassReferenceListBuilder

  1. Очистите и снова создайте.

Ответ 5

Пожалуйста, поместите свой SDK туда, где он доступен. Достаточно места, а затем поместите свой файл jar или dll, он будет работать.

Ответ 6

У меня была та же проблема. Чтобы решить проблему, вы должны перейти к свойствам своего проекта и в опции Android Options в упаковке вы отключите Multi-Dex. И в опции отладчика выберите Xamarin или не Microsoft. Я думаю, что он решает вашу проблему.