Ошибка после включения 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"
Ответ 3
Для справки в будущем есть также ошибка, если у вас установлен JDK 1.8.
Смотрите эту тему
https://bugzilla.xamarin.com/show_bug.cgi?id=44013
К сожалению, фактическая ошибка недоступна для широкой публики.
https://bugzilla.xamarin.com/show_bug.cgi?id=42669
Ответ 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
- Очистите и снова создайте.
Ответ 5
Пожалуйста, поместите свой SDK туда, где он доступен. Достаточно места, а затем поместите свой файл jar или dll, он будет работать.
Ответ 6
У меня была та же проблема. Чтобы решить проблему, вы должны перейти к свойствам своего проекта и в опции Android Options
в упаковке вы отключите Multi-Dex
. И в опции отладчика выберите Xamarin
или не Microsoft
.
Я думаю, что он решает вашу проблему.