From 53231e080c637efe9f7d9376a1a55a429e775190 Mon Sep 17 00:00:00 2001 From: Dean Ellis Date: Tue, 20 Feb 2024 15:13:53 +0000 Subject: [PATCH] Fix issue when files are deleted --- .../Android/Xamarin.Android.Javac.targets | 24 +++++++++++++++++-- .../BindingBuildTest.cs | 2 +- .../Common/DotNetXamarinProject.cs | 3 +++ .../Xamarin.Android.Common.targets | 2 ++ .../Tests/InstallTests.cs | 8 ++++--- 5 files changed, 33 insertions(+), 6 deletions(-) diff --git a/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Javac.targets b/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Javac.targets index b932c578336..4c2a8ed5173 100644 --- a/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Javac.targets +++ b/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Javac.targets @@ -21,7 +21,9 @@ It is shared between "legacy" binding projects and .NET 7+ projects. <_AndroidIntermediateBindingClassesZip>$(IntermediateOutputPath)binding\bin\$(MSBuildProjectName).jar <_AndroidIntermediateBindingClassesDocs>$(IntermediateOutputPath)binding\bin\$(MSBuildProjectName)-docs.xml <_AndroidCompileJavaStampFile>$(_AndroidStampDirectory)_CompileJava.stamp + <_AndroidCompileJavaFileList>$(IntermediateOutputPath)_CompileJava.FileList.txt <_AndroidCompileBindingJavaStampFile>$(_AndroidStampDirectory)_CompileBindingJava.stamp + <_AndroidCompileBindingJavaFileList>$(IntermediateOutputPath)_CompileBindingJava.FileList.txt @@ -74,18 +76,36 @@ It is shared between "legacy" binding projects and .NET 7+ projects. <_JavaBindingSource Include="@(AndroidJavaSource)" Condition=" '%(AndroidJavaSource.Bind)' == 'True' " /> + + + + <_JavaSource Include="@(AndroidJavaSource)" Condition=" '%(AndroidJavaSource.Bind)' != 'True' " /> + + + + @@ -132,7 +152,7 @@ It is shared between "legacy" binding projects and .NET 7+ projects. diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BindingBuildTest.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BindingBuildTest.cs index 5b70e0301b1..1533da5d716 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BindingBuildTest.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BindingBuildTest.cs @@ -39,7 +39,7 @@ public void DotNetBuildBinding () proj.OtherBuildItems.Add (new BuildItem ("JavaSourceJar", "javaclasses-sources.jar") { BinaryContent = () => ResourceData.JavaSourceJarTestSourcesJar, }); - proj.OtherBuildItems.Add (new AndroidItem.AndroidJavaSource ("JavaSourceTestExtension.java") { + proj.AndroidJavaSources.Add (new AndroidItem.AndroidJavaSource ("JavaSourceTestExtension.java") { Encoding = Encoding.ASCII, TextContent = () => ResourceData.JavaSourceTestExtension, Metadata = { { "Bind", "True"} }, diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetXamarinProject.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetXamarinProject.cs index 32425e363c0..30ae44a3628 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetXamarinProject.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetXamarinProject.cs @@ -17,10 +17,12 @@ protected DotNetXamarinProject (string debugConfigurationName = "Debug", string Sources = new List (); OtherBuildItems = new List (); + AndroidJavaSources = new List (); ItemGroupList.Add (References); ItemGroupList.Add (OtherBuildItems); ItemGroupList.Add (Sources); + ItemGroupList.Add (AndroidJavaSources); SetProperty ("RootNamespace", () => RootNamespace ?? ProjectName); SetProperty ("AssemblyName", () => AssemblyName ?? ProjectName); @@ -40,6 +42,7 @@ protected DotNetXamarinProject (string debugConfigurationName = "Debug", string public IList OtherBuildItems { get; private set; } public IList Sources { get; private set; } + public IList AndroidJavaSources { get; private set; } public IList ActiveConfigurationProperties { get { return IsRelease ? ReleaseProperties : DebugProperties; } diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets index 0fda73a444e..977931950c5 100644 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets @@ -2569,6 +2569,8 @@ because xbuild doesn't support framework reference assemblies. + + diff --git a/tests/MSBuildDeviceIntegration/Tests/InstallTests.cs b/tests/MSBuildDeviceIntegration/Tests/InstallTests.cs index 43bfaa906f6..edf0bf87ccb 100644 --- a/tests/MSBuildDeviceIntegration/Tests/InstallTests.cs +++ b/tests/MSBuildDeviceIntegration/Tests/InstallTests.cs @@ -631,7 +631,8 @@ public String test(){ }, }; var proj = new XamarinAndroidApplicationProject { - OtherBuildItems = { + EnableDefaultItems = true, + AndroidJavaSources = { new AndroidItem.AndroidJavaSource ("TestJavaClass.java") { Encoding = Encoding.ASCII, TextContent = () => @"package com.test.java; @@ -664,8 +665,9 @@ public String test(){ Assert.IsTrue (b.Output.IsTargetSkipped ("_ClearGeneratedManagedBindings", defaultIfNotUsed: true), $"`_ClearGeneratedManagedBindings` should be skipped on DTB build!"); FileAssert.Exists (generatedCode, $"'{generatedCode}' should have not be deleted on DTB build."); FileAssert.Exists (generatedCode2, $"'{generatedCode2}' should have not be deleted on DTB build."); - proj.OtherBuildItems.Remove (itemToDelete); - Assert.IsTrue (b.Build (proj, doNotCleanupOnUpdate: true, saveProject: true), "Second build should have succeeded."); + proj.AndroidJavaSources.Remove (itemToDelete); + File.Delete (Path.Combine (Root, b.ProjectDirectory, itemToDelete.Include ())); + Assert.IsTrue (b.Build (proj, doNotCleanupOnUpdate: true, saveProject: false), "Second build should have succeeded."); FileAssert.Exists (generatedCode, $"'{generatedCode}' should have not be deleted on second build."); FileAssert.DoesNotExist (generatedCode2, $"'{generatedCode2}' should have be deleted on second build."); Assert.IsFalse (b.Output.IsTargetSkipped ("_CompileBindingJava"), $"`_CompileBindingJava` should run on second build!");