问题 在Xamarin Android中启用Multi-Dex后出错


在创建Xamarin Android应用程序时,在添加对Infragistics Chart控件和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(build 431) Xamarin.Android版本:5.1.0

请帮助解决Xamarin中的这个问题。


7151
2018-06-11 09:36


起源

你已经看过了吗? 文档? - Andy
得到了同样的错误......你是怎么解决这个问题的? - Angudroid
我一直在阅读建议,在没有空格的非默认目录下安装Android SDK(例如,C:\ Android),因为默认目录位于C:\ Program Files(x86)\ Android中,其中包含2个空格,其中包含一些命令行'命令行参数结束的界限。在我打开Multi-Dex支持之前,我对默认目录没有任何问题。 - optikos


答案:


我们的构建服务器遇到了同样的问题,我们不得不将Android SDK移动到没有空格的路径,例如 C:\android-sdk\...

显然我们需要更新 ANDROID_HOME 环境变量到新路径,并在Xamarin Studio和Visual Studio中设置SDK路径。

这解决了我们的问题。


10
2018-01-20 16:22





对于那些不想更改Android SDK实际位置和ANDROID_HOME env变量的人来说,一个简单的链接就足够了:

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

3
2018-05-17 05:16





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

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

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


1
2017-11-07 22:28





每当我进行更新以更改或安装新的build-tools文件夹时,我都会遇到此问题。所以我决定在这里为我自己存储解决方案,并为谁从这个解决方案中受益。

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

  1. 修复是调整 mainDexClasses.bat 在Android SDK中。搜索此文件并将修复程序应用于所有实例。首先是找到文件夹 Android的SDK 和子 构建工具。我的道路就是例如 C:\用户\ YOURUSERNAME \应用程序数据\本地\的Android \ Android的SDK \构建工具\ 检查使用版本号命名的文件夹,如xx.x.x(例如24.0.1)
  2. 所以在里面 mainDexClasses.bat 文件找到以下文本块:

如果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

  1. 再次清洁和建造。

0
2017-11-11 17:11



这不是我的问题..它对你有帮助吗? - Sankar ganesh
是的,我的同事和我的工作。 - Daniele D.
这对我也不起作用 - thumbmunkeys


请将您的SDK放入可用空间,然后将您的jar或dll文件放在那里它将起作用。


-2
2017-09-08 10:34





我有同样的问题。要解决此问题,您必须转到项目的属性和选项中 Android Options 在包装中你禁用 Multi-Dex。并在调试器选项中选择 Xamarin 或不 Microsoft。 我认为这可以解决你的问题。


-3
2017-07-13 16:59