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 3e63db73393..9a1e70f9392 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
@@ -100,7 +100,7 @@ This item group populates the Build Action drop-down in IDEs.
-
+
diff --git a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.AndroidLibraries.targets b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.AndroidLibraries.targets
index aab24a7676b..fce34fc745c 100644
--- a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.AndroidLibraries.targets
+++ b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.AndroidLibraries.targets
@@ -91,14 +91,16 @@ projects.
$(TargetsForTfmSpecificContentInPackage);_IncludeAarInNuGetPackage
+ Condition=" '$(IncludeBuildOutput)' != 'false' and '$(AndroidApplication)' != 'true' "
+ DependsOnTargets="_CategorizeAndroidLibraries">
-
+
+
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 2f1fbc095e6..8f4aa643cd4 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
@@ -91,27 +91,34 @@ public Foo ()
TextContent = () => {
return "\n";
}
- }
+ },
+ new AndroidItem.AndroidAsset ("Assets\\foo\\foo.txt") {
+ BinaryContent = () => Array.Empty (),
+ },
+ new AndroidItem.AndroidResource ("Resources\\layout\\MyLayout.axml") {
+ TextContent = () => ""
+ },
+ new AndroidItem.AndroidResource ("Resources\\raw\\bar.txt") {
+ BinaryContent = () => Array.Empty (),
+ },
+ new AndroidItem.AndroidLibrary ("sub\\directory\\foo.jar") {
+ BinaryContent = () => ResourceData.JavaSourceJarTestJar,
+ },
+ new AndroidItem.AndroidLibrary ("sub\\directory\\bar.aar") {
+ WebContent = "https://repo1.maven.org/maven2/com/balysv/material-menu/1.1.0/material-menu-1.1.0.aar",
+ },
+ new AndroidItem.AndroidJavaSource ("JavaSourceTestExtension.java") {
+ Encoding = Encoding.ASCII,
+ TextContent = () => ResourceData.JavaSourceTestExtension,
+ },
}
};
- libB.OtherBuildItems.Add (new AndroidItem.AndroidAsset ("Assets\\foo\\foo.txt") {
- BinaryContent = () => Array.Empty (),
- });
- libB.OtherBuildItems.Add (new AndroidItem.AndroidResource ("Resources\\layout\\MyLayout.axml") {
- TextContent = () => ""
- });
- libB.OtherBuildItems.Add (new AndroidItem.AndroidResource ("Resources\\raw\\bar.txt") {
- BinaryContent = () => Array.Empty (),
- });
libB.OtherBuildItems.Add (new AndroidItem.AndroidEnvironment ("env.txt") {
TextContent = () => $"{env_var}={env_val}",
});
libB.OtherBuildItems.Add (new AndroidItem.AndroidEnvironment ("sub\\directory\\env.txt") {
TextContent = () => $"{env_var}={env_val}",
});
- libB.OtherBuildItems.Add (new AndroidItem.AndroidLibrary ("sub\\directory\\foo.jar") {
- BinaryContent = () => ResourceData.JavaSourceJarTestJar,
- });
libB.OtherBuildItems.Add (new AndroidItem.AndroidLibrary ("sub\\directory\\arm64-v8a\\libfoo.so") {
BinaryContent = () => Array.Empty (),
});
@@ -120,11 +127,6 @@ public Foo ()
MetadataValues = "Link=x86\\libfoo.so",
BinaryContent = () => Array.Empty (),
});
- libB.OtherBuildItems.Add (new AndroidItem.AndroidJavaSource ("JavaSourceTestExtension.java") {
- Encoding = Encoding.ASCII,
- TextContent = () => ResourceData.JavaSourceTestExtension,
- Metadata = { { "Bind", "True"} },
- });
libB.AddReference (libC);
activity = libB.Sources.FirstOrDefault (s => s.Include () == "MainActivity.cs");
@@ -137,8 +139,10 @@ public Foo ()
"binding", "bin", $"{libB.ProjectName}.jar").Replace ("\\", "/"));
// Check .aar file for class library
- var aarPath = Path.Combine (FullProjectDirectory, libB.OutputPath, $"{libB.ProjectName}.aar");
+ var libBOutputPath = Path.Combine (FullProjectDirectory, libB.OutputPath);
+ var aarPath = Path.Combine (libBOutputPath, $"{libB.ProjectName}.aar");
FileAssert.Exists (aarPath);
+ FileAssert.Exists (Path.Combine (libBOutputPath, "bar.aar"));
using (var aar = ZipHelper.OpenZip (aarPath)) {
aar.AssertContainsEntry (aarPath, "assets/foo/foo.txt");
aar.AssertContainsEntry (aarPath, "res/layout/mylayout.xml");
@@ -263,7 +267,26 @@ public void DotNetPack (string dotnetVersion, string platform, int apiLevel)
Sources = {
new BuildItem.Source ("Foo.cs") {
TextContent = () => "public class Foo { }",
- }
+ },
+ new AndroidItem.AndroidResource ("Resources\\raw\\bar.txt") {
+ BinaryContent = () => Array.Empty (),
+ },
+ new AndroidItem.AndroidLibrary ("sub\\directory\\foo.jar") {
+ BinaryContent = () => ResourceData.JavaSourceJarTestJar,
+ },
+ new AndroidItem.AndroidLibrary ("sub\\directory\\bar.aar") {
+ WebContent = "https://repo1.maven.org/maven2/com/balysv/material-menu/1.1.0/material-menu-1.1.0.aar",
+ },
+ new AndroidItem.AndroidJavaSource ("JavaSourceTest.java") {
+ Encoding = Encoding.ASCII,
+ TextContent = () =>
+@"package com.xamarin.android.test.msbuildtest;
+public class JavaSourceTest {
+ public String Say (String quote) {
+ return quote;
+ }
+}",
+ },
},
ExtraNuGetConfigSources = {
// Projects targeting net6.0 require ref/runtime packs on NuGet.org
@@ -273,12 +296,6 @@ public void DotNetPack (string dotnetVersion, string platform, int apiLevel)
if (IsPreviewFrameworkVersion (targetFramework)) {
proj.SetProperty ("EnablePreviewFeatures", "true");
}
- proj.OtherBuildItems.Add (new AndroidItem.AndroidResource ("Resources\\raw\\bar.txt") {
- BinaryContent = () => Array.Empty (),
- });
- proj.OtherBuildItems.Add (new AndroidItem.AndroidLibrary ("sub\\directory\\foo.jar") {
- BinaryContent = () => ResourceData.JavaSourceJarTestJar,
- });
proj.OtherBuildItems.Add (new AndroidItem.AndroidLibrary ("sub\\directory\\arm64-v8a\\libfoo.so") {
BinaryContent = () => Array.Empty (),
});
@@ -287,27 +304,30 @@ public void DotNetPack (string dotnetVersion, string platform, int apiLevel)
MetadataValues = "Link=x86\\libfoo.so",
BinaryContent = () => Array.Empty (),
});
- proj.OtherBuildItems.Add (new AndroidItem.AndroidJavaSource ("JavaSourceTest.java") {
- Encoding = Encoding.ASCII,
- TextContent = () => @"package com.xamarin.android.test.msbuildtest;
-public class JavaSourceTest {
- public String Say (String quote) {
- return quote;
- }
-}
-",
- Metadata = { { "Bind", "True"} },
- }
- );
+ 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",
+ MetadataValues = "Pack=false;Bind=false",
+ });
var dotnet = CreateDotNetBuilder (proj);
Assert.IsTrue (dotnet.Pack (), "`dotnet pack` should succeed");
var nupkgPath = Path.Combine (FullProjectDirectory, proj.OutputPath, "..", $"{proj.ProjectName}.1.0.0.nupkg");
FileAssert.Exists (nupkgPath);
- 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");
+ 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");
+
+ 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");
}
}