diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/CompileToDalvik.cs b/src/Xamarin.Android.Build.Tasks/Tasks/CompileToDalvik.cs
index 0b81c372a5c..bccfd9dcae3 100644
--- a/src/Xamarin.Android.Build.Tasks/Tasks/CompileToDalvik.cs
+++ b/src/Xamarin.Android.Build.Tasks/Tasks/CompileToDalvik.cs
@@ -114,7 +114,7 @@ protected override string GenerateCommandLineCommands ()
cmd.AppendSwitchIfNotNull ("--main-dex-list=", MultiDexMainDexListFile);
}
}
- cmd.AppendSwitchIfNotNull ("--output ", Path.GetDirectoryName (ClassesOutputDirectory));
+ cmd.AppendSwitchIfNotNull ("--output ", ClassesOutputDirectory);
using (var sw = new StreamWriter (path: inputListFile, append: false,
encoding: MonoAndroidHelper.UTF8withoutBOM)) {
diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/PackagingTest.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/PackagingTest.cs
index 466c3e33287..15427edb555 100644
--- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/PackagingTest.cs
+++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/PackagingTest.cs
@@ -677,5 +677,23 @@ public void CheckTheCorrectRuntimeAssemblyIsUsedFromNuget ()
Assert.IsTrue (xab.LastBuildOutput.ContainsText (expected), $"Build should be using {expected}");
}
}
+
+ [Test]
+ public void MissingDexFile ()
+ {
+ //NOTE: The trailing / breaks
+ var parameters = new [] { "_AndroidIntermediateJavaClassDirectory=obj/Debug/android/bin/classes/" };
+ var proj = new XamarinAndroidApplicationProject {
+ DexTool = "dx"
+ };
+ using (var b = CreateApkBuilder ()) {
+ Assert.IsTrue (b.Build (proj, parameters: parameters), "Build should have succeeded.");
+ var apk = Path.Combine (Root, b.ProjectDirectory,
+ proj.IntermediateOutputPath, "android", "bin", "UnnamedProject.UnnamedProject.apk");
+ using (var zip = ZipHelper.OpenZip (apk)) {
+ Assert.IsTrue (zip.ContainsEntry ("classes.dex"), "Apk should contain classes.dex");
+ }
+ }
+ }
}
}
diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets
index 0a02bb119db..ac13b3cd027 100644
--- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets
+++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets
@@ -1024,6 +1024,7 @@ because xbuild doesn't support framework reference assemblies.
$(IntermediateOutputPath)generated
$(IntermediateOutputPath)resourcecache
<_AndroidIntermediateJavaSourceDirectory>$(IntermediateOutputPath)android\src\
+ <_AndroidIntermediateDexOutputDirectory>$(IntermediateOutputPath)android\bin\
<_AndroidIntermediateJavaClassDirectory>$(IntermediateOutputPath)android\bin\classes\
<_AndroidIntermediateClassesZip>$(IntermediateOutputPath)android\bin\classes.zip
<_AndroidAotBinDirectory>$(IntermediateOutputPath)aot
@@ -2274,8 +2275,7 @@ because xbuild doesn't support framework reference assemblies.
- <_DexFile Include="$(IntermediateOutputPath)android\bin\dex\*.dex" />
- <_DexFile Include="$(IntermediateOutputPath)android\bin\*.dex" />
+ <_DexFile Include="$(_AndroidIntermediateDexOutputDirectory)*.dex" />
diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.D8.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.D8.targets
index a92b6db9406..8744a3f43f4 100644
--- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.D8.targets
+++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.D8.targets
@@ -36,7 +36,7 @@ Copyright (C) 2018 Xamarin. All rights reserved.
- <_DexesToDelete Include="$(IntermediateOutputPath)android\bin\*.dex" />
+ <_DexesToDelete Include="$(_AndroidIntermediateDexOutputDirectory)*.dex" />
@@ -52,7 +52,7 @@ Copyright (C) 2018 Xamarin. All rights reserved.
JavaOptions="$(JavaOptions)"
JarPath="$(AndroidR8JarPath)"
AndroidManifestFile="$(IntermediateOutputPath)android\AndroidManifest.xml"
- OutputDirectory="$(IntermediateOutputPath)android\bin"
+ OutputDirectory="$(_AndroidIntermediateDexOutputDirectory)"
Debug="$(AndroidIncludeDebugSymbols)"
JavaPlatformJarPath="$(JavaPlatformJarPath)"
ClassesZip="$(_AndroidIntermediateClassesZip)"
@@ -79,7 +79,7 @@ Copyright (C) 2018 Xamarin. All rights reserved.
JavaOptions="$(JavaOptions)"
JarPath="$(AndroidR8JarPath)"
AndroidManifestFile="$(IntermediateOutputPath)android\AndroidManifest.xml"
- OutputDirectory="$(IntermediateOutputPath)android\bin"
+ OutputDirectory="$(_AndroidIntermediateDexOutputDirectory)"
Debug="$(AndroidIncludeDebugSymbols)"
JavaPlatformJarPath="$(JavaPlatformJarPath)"
ClassesZip="$(_AndroidIntermediateClassesZip)"
@@ -92,7 +92,7 @@ Copyright (C) 2018 Xamarin. All rights reserved.
-
+
diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.DX.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.DX.targets
index 98159443d77..bb20d2b3aa5 100644
--- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.DX.targets
+++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.DX.targets
@@ -71,7 +71,7 @@ Copyright (C) 2018 Xamarin. All rights reserved.
- <_DexesToDelete Include="$(IntermediateOutputPath)android\bin\*.dex" />
+ <_DexesToDelete Include="$(_AndroidIntermediateDexOutputDirectory)*.dex" />
@@ -82,7 +82,7 @@ Copyright (C) 2018 Xamarin. All rights reserved.
JavaToolPath="$(JavaToolPath)"
JavaMaximumHeapSize="$(JavaMaximumHeapSize)"
JavaOptions="$(JavaOptions)"
- ClassesOutputDirectory="$(_AndroidIntermediateJavaClassDirectory.TrimEnd('\'))"
+ ClassesOutputDirectory="$(_AndroidIntermediateDexOutputDirectory)"
ClassesZip="$(_AndroidIntermediateClassesZip)"
ToolPath="$(DxToolPath)"
ToolExe="$(DxToolExe)"
@@ -94,7 +94,7 @@ Copyright (C) 2018 Xamarin. All rights reserved.
/>
-
+