diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/ResolveLibraryProjectImports.cs b/src/Xamarin.Android.Build.Tasks/Tasks/ResolveLibraryProjectImports.cs index f55838abac1..637667b72b8 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/ResolveLibraryProjectImports.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/ResolveLibraryProjectImports.cs @@ -44,6 +44,8 @@ public class ResolveLibraryProjectImports : AndroidTask [Required] public bool DesignTimeBuild { get; set; } + public bool AndroidApplication { get; set; } + [Output] public ITaskItem [] Jars { get; set; } @@ -442,7 +444,7 @@ void Extract ( resolvedAssetDirectories.Add (new TaskItem (Path.GetFullPath (assetsDir), new Dictionary { { OriginalFile, aarFullPath }, })); - if (File.Exists (proguardFile)) { + if (AndroidApplication && File.Exists (proguardFile)) { proguardConfigFiles.Add (new TaskItem (Path.GetFullPath (proguardFile), new Dictionary { { OriginalFile, aarFullPath }, })); diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Utilities/AssertionExtensions.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Utilities/AssertionExtensions.cs index 8552a37a22b..a6bc7f20c4b 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Utilities/AssertionExtensions.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Utilities/AssertionExtensions.cs @@ -54,6 +54,19 @@ public static void AssertTargetIsPartiallyBuilt (this BuildOutput output, string Assert.IsTrue (output.IsTargetPartiallyBuilt (target), $"The target {target} should have been partially built."); } + [DebuggerHidden] + public static void AssertEntryEquals (this ZipArchive zip, string zipPath, string archivePath, string expected) + { + zip.AssertContainsEntry (zipPath, archivePath); + + var entry = zip.ReadEntry (archivePath); + using var stream = new MemoryStream (); + entry.Extract (stream); + stream.Position = 0; + using var reader = new StreamReader (stream); + Assert.AreEqual (expected, reader.ReadToEnd ().Trim ()); + } + [DebuggerHidden] public static void AssertContainsEntry (this ZipArchive zip, string zipPath, string archivePath) { 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 fb071d6623e..2691ac568bf 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 @@ -79,7 +79,7 @@ public void DotNetBuildLibrary (bool isRelease, bool duplicateAar, bool useDesig BinaryContent = () => XamarinAndroidApplicationProject.icon_binary_mdpi, }, new AndroidItem.ProguardConfiguration ("proguard.txt") { - TextContent = () => @"-ignorewarnings", + TextContent = () => "# LibraryC", }, } }; @@ -97,7 +97,7 @@ public void DotNetBuildLibrary (bool isRelease, bool duplicateAar, bool useDesig FileAssert.Exists (aarPath); using (var aar = ZipHelper.OpenZip (aarPath)) { aar.AssertContainsEntry (aarPath, "assets/bar/bar.txt"); - aar.AssertContainsEntry (aarPath, "proguard.txt"); + aar.AssertEntryEquals (aarPath, "proguard.txt", "# LibraryC"); } var libB = new XASdkProject (outputType: "Library") { @@ -139,7 +139,7 @@ public Foo () TextContent = () => ResourceData.JavaSourceTestExtension, }, new AndroidItem.ProguardConfiguration ("proguard.txt") { - TextContent = () => @"-ignorewarnings", + TextContent = () => "# LibraryB", }, } }; @@ -185,6 +185,8 @@ public Foo () aar.AssertContainsEntry (aarPath, $"libs/{projectJarHash}.jar"); aar.AssertContainsEntry (aarPath, "jni/arm64-v8a/libfoo.so"); aar.AssertContainsEntry (aarPath, "jni/x86/libfoo.so"); + // proguard.txt from Library C should not flow to Library B and "double" + aar.AssertEntryEquals (aarPath, "proguard.txt", "# LibraryB"); } // Check EmbeddedResource files do not exist diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.EmbeddedResource.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.EmbeddedResource.targets index a525915edbc..1b629e13c06 100644 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.EmbeddedResource.targets +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.EmbeddedResource.targets @@ -38,6 +38,7 @@ This file is used by all project types, including binding projects. Outputs="$(_AndroidStampDirectory)_ResolveLibraryProjectImports.stamp">