From c39ed5ead148db89f3fe4fef0d3bf22c6e2cdee9 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Tue, 5 Jul 2022 16:27:17 -0500 Subject: [PATCH] [Xamarin.Android.Build.Tasks] fix @(LibraryProjectZip) and NuGets Context: https://github.com/xamarin/GooglePlayServicesComponents/issues/652 In .NET 6, `@(AndroidLibrary)` defaults to `%(Pack)` being true, while `@(LibraryProjectZip)` mistakenly does not. This would be an issue if you migrated a project using `@(LibraryProjectZip)` and were not relying on the default wildcards that would use: Let's set this value by default, to ease migration to .NET 6. I updated a test for this scenario and fixed some assertions that are working since 2ca2a103 was merged. --- .../Xamarin.Android.AvailableItems.targets | 3 +++ .../Xamarin.Android.Build.Tests/XASdkTests.cs | 23 +++++++++++-------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.AvailableItems.targets b/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.AvailableItems.targets index 9a1e70f9392..f5dac4d577b 100644 --- a/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.AvailableItems.targets +++ b/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.AvailableItems.targets @@ -66,6 +66,9 @@ This item group populates the Build Action drop-down in IDEs. true true + + true + true diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/XASdkTests.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/XASdkTests.cs index 55dc15634d4..dd1091bfecc 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/XASdkTests.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/XASdkTests.cs @@ -304,6 +304,10 @@ public String Say (String quote) { MetadataValues = "Link=x86\\libfoo.so", BinaryContent = () => Array.Empty (), }); + proj.OtherBuildItems.Add (new AndroidItem.LibraryProjectZip ("..\\baz.aar") { + WebContent = "https://repo1.maven.org/maven2/com/balysv/material-menu/1.1.0/material-menu-1.1.0.aar", + MetadataValues = "Bind=false", + }); proj.OtherBuildItems.Add (new AndroidItem.AndroidLibrary (default (Func)) { Update = () => "nopack.aar", WebContent = "https://repo1.maven.org/maven2/com/balysv/material-menu/1.1.0/material-menu-1.1.0.aar", @@ -318,16 +322,17 @@ public String Say (String quote) { using var nupkg = ZipHelper.OpenZip (nupkgPath); nupkg.AssertContainsEntry (nupkgPath, $"lib/{dotnetVersion}-android{apiLevel}.0/{proj.ProjectName}.dll"); nupkg.AssertContainsEntry (nupkgPath, $"lib/{dotnetVersion}-android{apiLevel}.0/{proj.ProjectName}.aar"); - + nupkg.AssertContainsEntry (nupkgPath, $"lib/{dotnetVersion}-android{apiLevel}.0/bar.aar"); + nupkg.AssertDoesNotContainEntry (nupkgPath, "content/bar.aar"); + nupkg.AssertDoesNotContainEntry (nupkgPath, "content/sub/directory/bar.aar"); + nupkg.AssertDoesNotContainEntry (nupkgPath, $"contentFiles/any/{dotnetVersion}-android{apiLevel}.0/sub/directory/bar.aar"); + nupkg.AssertDoesNotContainEntry (nupkgPath, $"lib/{dotnetVersion}-android{apiLevel}.0/nopack.aar"); + nupkg.AssertDoesNotContainEntry (nupkgPath, "content/nopack.aar"); + nupkg.AssertDoesNotContainEntry (nupkgPath, $"contentFiles/any/{dotnetVersion}-android{apiLevel}.0/nopack.aar"); + + //TODO: this issue is not fixed in net6.0-android MSBuild targets if (dotnetVersion != "net6.0") { - //TODO: this issue is not fixed in net6.0-android MSBuild targets - nupkg.AssertContainsEntry (nupkgPath, $"lib/{dotnetVersion}-android{apiLevel}.0/bar.aar"); - nupkg.AssertDoesNotContainEntry (nupkgPath, "content/bar.aar"); - nupkg.AssertDoesNotContainEntry (nupkgPath, "content/sub/directory/bar.aar"); - nupkg.AssertDoesNotContainEntry (nupkgPath, $"contentFiles/any/{dotnetVersion}-android{apiLevel}.0/sub/directory/bar.aar"); - nupkg.AssertDoesNotContainEntry (nupkgPath, $"lib/{dotnetVersion}-android{apiLevel}.0/nopack.aar"); - nupkg.AssertDoesNotContainEntry (nupkgPath, "content/nopack.aar"); - nupkg.AssertDoesNotContainEntry (nupkgPath, $"contentFiles/any/{dotnetVersion}-android{apiLevel}.0/nopack.aar"); + nupkg.AssertContainsEntry (nupkgPath, $"lib/{dotnetVersion}-android{apiLevel}.0/baz.aar"); } }