diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/CreateMultiDexMainDexClassList.cs b/src/Xamarin.Android.Build.Tasks/Tasks/CreateMultiDexMainDexClassList.cs index 1ead40be35a..d7937d24d87 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/CreateMultiDexMainDexClassList.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/CreateMultiDexMainDexClassList.cs @@ -4,6 +4,7 @@ using System.Collections.Generic; using System.Linq; using System.IO; +using System.Text; using Microsoft.Build.Utilities; using Microsoft.Build.Framework; @@ -97,7 +98,7 @@ void GenerateMainDexListBuilderCommands(CommandLineBuilder cmd) var enclosingDoubleQuote = OS.IsWindows ? "\"" : string.Empty; var enclosingQuote = OS.IsWindows ? string.Empty : "'"; var jars = JavaLibraries.Select (i => i.ItemSpec).Concat (new string [] { Path.Combine (ClassesOutputDirectory, "..", "classes.zip") }); - cmd.AppendSwitchIfNotNull ("-Djava.ext.dirs=", Path.Combine (AndroidSdkBuildToolsPath, "lib")); + cmd.AppendSwitchUnquotedIfNotNull ("-classpath ", "\"" + GetMainDexListBuilderClasspath () + "\""); cmd.AppendSwitch ("com.android.multidex.MainDexListBuilder"); if (!string.IsNullOrWhiteSpace (ExtraArgs)) cmd.AppendSwitch (ExtraArgs); @@ -108,6 +109,12 @@ void GenerateMainDexListBuilderCommands(CommandLineBuilder cmd) writeOutputToKeepFile = true; } + string GetMainDexListBuilderClasspath () + { + var libdir = Path.Combine (AndroidSdkBuildToolsPath, "lib"); + return string.Join (Path.PathSeparator.ToString (), Directory.EnumerateFiles (libdir, "*.jar")); + } + protected override void LogEventsFromTextOutput (string singleLine, MessageImportance messageImportance) { var match = CodeErrorRegEx.Match (singleLine);