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

时间:2015-06-11 09:36:07

标签: c# android xamarin 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版本5.9(build 431) Xamarin.Android版本:5.1.0

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

6 个答案:

答案 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存在问题。 需要将以下修复程序应用于构建服务器和开发人员计算机:

  1. 修复方法是调整Android SDK中的 mainDexClasses.bat 。搜索此文件并将修复程序应用于所有实例。首先找到文件夹 android-sdk 和sub build-tools 。我的道路就是例如 C:\用户\ YOURUSERNAME \应用程序数据\本地\的Android \ Android的SDK \构建工具\ 检查以xx.x.x(例如24.0.1)
  2. 等版本号命名的文件夹
  3. 因此,在 mainDexClasses.bat 文件中,找到以下文本块:
  4. 如果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. 清理并再次建造。

答案 4 :(得分:-2)

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

答案 5 :(得分:-3)

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