Multidex Xamarin Maps android issues



将 Xamarin 映射 nuget 包添加到我的应用程序后,我得到了 Java.exe 已退出并显示代码 2 错误。我在安卓选项中启用了多 dex,现在出现以下错误:

在"\

Android\android-sdk\build-tools\26.0.0-preview\lib\shrinkedAndroid.jar"之前需要类路径分隔符";">

我重新安装了Android SDK,并确保我拥有最新版本,但是我仍然收到错误。我花了很多时间在谷歌上搜索这个问题并尝试不同的解决方案,但是我还没有找到一个可以工作的解决方案

在当前版本中,multi-dex 存在一些问题。更新到 Visual Studio 2017 13.2 可能会解决您提到的问题。如果没有,您可以尝试两件事:

  1. 要修复类路径分隔符错误,请将您的 Android SDK 放在没有空格的路径中,即:C:android-sdk并更改 Tools>Options>Xamarin>Android SDK 位置中的路径。

如果不想移动 SDK,可以使用命令行创建链接:

mklink /D "C:android-sdk" "C:Program Files (x86)Androidandroid-sdk"
  1. 即使启用了 Multi-dex,它也不会运行:

当您在Android项目属性中勾选"启用Multi-Dex"选项时,您将看到更改反映在csproj中,如您所期望的那样

<AndroidEnableMultipleDex>true</AndroidEnableMultipleDex>

但是,如果您仔细观察,还有另一个类似的 xml 节点将其值保留为 false:

<AndroidEnableMultiDex>false</AndroidEnableMultiDex>

注意"MultiDex"和"MultipleDex"之间的区别将第二个更改为 true 将成功。

我在将带有 nuget 包的地图添加到我的应用程序时遇到了同样的问题。

只需从链接更改最新的ProGuard.jar文件并从您的Android SDK->工具中恢复>ProGuard->lib->progaurd.jar

和右键单击您的Android项目->选择选项->构建->Android构建->启用Proguard并启用Multidex以及转到高级->java堆大小放1G。

我在运行Visual Studio 2017 v 15.2时遇到了同样的问题。

如前所述,当您向解决方案添加了足够的 nuget 和包以超过标准 dex 文件中的 65k 方法限制时,会出现这种情况,这需要您启用多 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 的位置移动到没有空格的路径。

最新更新