在创建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版本5.9(build 431) Xamarin.Android版本:5.1.0
请帮助解决Xamarin中的这个问题。
答案 0 :(得分:10)
我们的构建服务器遇到了同样的问题,我们不得不将Android SDK移动到没有空格的路径,例如C:\android-sdk\...
显然,我们需要将ANDROID_HOME
环境变量更新为新路径,并在Xamarin Studio和Visual Studio中设置SDK路径。
这解决了我们的问题。
答案 1 :(得分:3)
对于那些不想更改Android SDK实际位置以及ANDROID_HOME env变量的人来说,只需一个简单的链接即可:
mklink /D "C:\android-sdk" "C:\Program Files (x86)\Android\android-sdk"
答案 2 :(得分:1)
为了将来参考,如果安装了JDK 1.8,也会出现错误。
查看此主题 https://bugzilla.xamarin.com/show_bug.cgi?id=44013
不幸的是,一般公众无法访问实际的错误。 https://bugzilla.xamarin.com/show_bug.cgi?id=42669
答案 3 :(得分:0)
每次更新或更新新的build-tools文件夹时,我都会遇到此问题。所以我决定在这里为我自己存储解决方案,并且可以从这个解决方案中受益。
任何人都无法访问其他解决方案或评论中的某些bugzilla链接。 原因是Windows机器上的Android SDK存在问题。 需要将以下修复程序应用于构建服务器和开发人员计算机:
如果DEFINED输出转到重定向
调用“%java_exe%”-Djava.ext.dirs =“%frameworkdir%”com.android.multidex.MainDexListBuilder“%disableKeepAnnotated%”“%tmpJar%”“%params%”
转到afterClassReferenceListBuilder
:重定向
调用“%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%
转到afterClassReferenceListBuilder
:重定向
调用“%java_exe%”-Djava.ext.dirs =“%frameworkdir%”com.android.multidex.MainDexListBuilder%disableKeepAnnotated%“%tmpJar%”%params%1>“%output%”
:afterClassReferenceListBuilder
答案 4 :(得分:-2)
请将您的SDK放入可用的空间,然后将您的jar或dll文件放在那里,它会起作用。
答案 5 :(得分:-3)
我遇到了同样的问题。要解决此问题,您必须转到项目的属性,并在打包选项Android Options
中禁用Multi-Dex
。在调试器选项中,选择Xamarin
或不选择Microsoft
。
我认为这可以解决你的问题。