当前版本存在多dex问题。升级到Visual Studio 2017 13.2可能会解决你提到的问题。如果不能,你可以尝试以下两个方法:
C:\android-sdk\
并在Tools>Options>Xamarin>Android SDK Location中更改路径。如果您不想移动SDK,可以通过命令行创建链接:
mklink /D "C:\android-sdk" "C:\Program Files (x86)\Android\android-sdk"
当您在Android项目属性中勾选“启用Multi-Dex”选项时,您会看到如预期的在csproj文件中反映出相应的更改。
<AndroidEnableMultipleDex>true</AndroidEnableMultipleDex>
但是如果您仔细看,还有另一个类似的XML节点将其值保持为false:
<AndroidEnableMultiDex>false</AndroidEnableMultiDex>
在我的应用程序中使用NuGet包添加地图时,遇到了相同的问题。
只需从链接更改最新的proguard.jar文件,并替换您的Android SDK ->工具 -> proguard -> lib -> progaurd.jar
然后,右键单击您的Android项目 ->选择选项 ->构建 -> Android构建 -> 启用ProGuard并启用multidex,然后转到高级 -> Java堆大小设置为1G。
我在运行Visual Studio 2017 v15.2时遇到了同样的问题。
正如之前提到的那样,当您向解决方案添加了足够的NuGet和包以超过标准dex文件中的65k方法限制时,就会出现这种情况,需要启用multi-dex。
正如其他人所指出的,启用multi-dex并不总是解决问题,因为它会在.csproj文件中打开一个名为“AndroidEnableMutipleDex”的标志。因此,如上所建议,我添加了节点
<AndroidEnableMultiDex>true</AndroidEnableMultiDex>
但是,由于我对.csproj文件的格式不太熟悉,所以我忘记在两个地方都添加它。
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
...
<AndroidEnableMultipleDex>true</AndroidEnableMultipleDex>
<AndroidEnableMultiDex>true</AndroidEnableMultiDex>
</PropertyGroup>
并且
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
...
<AndroidEnableMultipleDex>true</AndroidEnableMultipleDex>
<AndroidEnableMultiDex>true</AndroidEnableMultiDex>
</PropertyGroup>
是的,这是一个基本错误,但如果你不习惯手动编辑 .csproj 文件,特别是如果你第一次涉足这个领域并且甚至不确定错误来自哪里,那么很容易犯错。
另外,正如其他人指出的那样,你需要将 Android sdk 的位置移动到没有空格的路径。