在创建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中的这个问题。
我们的构建服务器遇到了同样的问题,我们不得不将Android SDK移动到没有空格的路径,例如 C:\android-sdk\...
显然我们需要更新 ANDROID_HOME
环境变量到新路径,并在Xamarin Studio和Visual Studio中设置SDK路径。
这解决了我们的问题。
对于那些不想更改Android SDK实际位置和ANDROID_HOME env变量的人来说,一个简单的链接就足够了:
mklink /D "C:\android-sdk" "C:\Program Files (x86)\Android\android-sdk"
每当我进行更新以更改或安装新的build-tools文件夹时,我都会遇到此问题。所以我决定在这里为我自己存储解决方案,并为谁从这个解决方案中受益。
任何人都无法访问其他解决方案或评论中的某些bugzilla链接。
原因是Windows机器上的Android SDK存在问题。
需要将以下修复程序应用于构建服务器和开发人员计算机:
- 修复是调整 mainDexClasses.bat 在Android SDK中。搜索此文件并将修复程序应用于所有实例。首先是找到文件夹 Android的SDK 和子 构建工具。我的道路就是例如
C:\用户\ YOURUSERNAME \应用程序数据\本地\的Android \ Android的SDK \构建工具\
检查使用版本号命名的文件夹,如xx.x.x(例如24.0.1)
- 所以在里面 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
- 再次清洁和建造。
请将您的SDK放入可用空间,然后将您的jar或dll文件放在那里它将起作用。
我有同样的问题。要解决此问题,您必须转到项目的属性和选项中 Android Options
在包装中你禁用 Multi-Dex
。并在调试器选项中选择 Xamarin
或不 Microsoft
。
我认为这可以解决你的问题。