在Xamarin Android中启用Multi-Dex后出现错误

在创buildXamarin Android应用程序的同时,添加对Infragistics图表控件和Google Play服务的引用后,我们必须启用“启用Multi-Dex”属性为true (因为应用程序达到65K的dex方法限制)。 我们正在收到一个错误

 ..\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(内部版本431)Xamarin.Android版本:5.1.0

请帮助解决这个问题在Xamarin。

Solutions Collecting From Web of "在Xamarin Android中启用Multi-Dex后出现错误"

我们的构build服务器上有同样的问题,我们必须将Android SDK移动到不含空格的path,例如C:\android-sdk\...

显然,我们需要将ANDROID_HOME环境variables更新为新path,并在Xamarin Studio和Visual Studio中设置SDKpath。

这已经解决了我们的问题。

对于那些不想改变Android SDK实际位置加上ANDROID_HOMEvariables的env,一个简单的链接就足够了:

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

为了将来的参考,如果您安装了JDK 1.8,也有一个错误。

看到这个线程https://bugzilla.xamarin.com/show_bug.cgi?id=44013

不幸的是,实际的bug是一般公众无法访问的。https://bugzilla.xamarin.com/show_bug.cgi?id=42669

我正在面对这个问题,只要我更新或者安装一个新的build-tools文件夹。 所以我决定把这个解决scheme存储在这里,为了这个解决scheme,谁可以从中受益。

任何人都无法访问其他解决scheme或评论中的某些bugzilla链接。 原因是Windows机器上的Android SDK存在问题。 以下修补程序需要应用于构build服务器和开发人员的机器:

  1. 解决的办法是调整Android SDK中的mainDexClasses.bat 。 search此文件并将修复应用于所有实例。 第一件事是find文件夹android-sdk和sub build-tools 。 我的path例如C:\ Users \ YOURUSERNAME \ AppData \ Local \ Android \ android-sdk \ build-tools \检查以xx.xx等版本号命名的文件夹(例如24.0.1)
  2. 所以在mainDexClasses.bat文件里面find下面的文本块:

如果DEFINED输出转到了redirect
调用“%java_exe%”-Djava.ext.dirs =“%frameworkdir%”com.android.multidex.MainDexListBuilder“%disableKeepAnnotated%”“%tmpJar%”“%params%”
goto afterClassReferenceListBuilder
:redirect调用“%java_exe%”-Djava.ext.dirs =“%frameworkdir%”com.android.multidex.MainDexListBuilder“%disableKeepAnnotated%”“%tmpJar%”“%params%”1>“%output%”
:afterClassReferenceListBuilder

并replace为:

SET params =%params:'=%
如果DEFINED输出转到了redirect
调用“%java_exe%”-Djava.ext.dirs =“%frameworkdir%”com.android.multidex.MainDexListBuilder%disableKeepAnnotated%“%tmpJar%”%params%
goto afterClassReferenceListBuilder
:redirect调用“%java_exe%”-Djava.ext.dirs =“%frameworkdir%”com.android.multidex.MainDexListBuilder%disableKeepAnnotated%“%tmpJar%”%params%1>“%output%”
:afterClassReferenceListBuilder

  1. 清理并重新构build。

请把你的SDK放到可用的地方足够的空间,然后把你的jar或dll文件在那里工作。

我有同样的问题。 要解决它,你必须去你的项目的属性,并在包装​​的选项Android Options中禁用Multi-Dex 。 并在debugging器选项selectXamarin或不是Microsoft 。 我认为它解决了你的问题。