diff --git a/samples/NativeAOT/NativeAOT.csproj b/samples/NativeAOT/NativeAOT.csproj
index 8643c56ef1b..8b9148c5a88 100644
--- a/samples/NativeAOT/NativeAOT.csproj
+++ b/samples/NativeAOT/NativeAOT.csproj
@@ -9,16 +9,12 @@
1
1.0
apk
-
- android-arm64
true
-
- android-x64
<_NuGetFolderOnCI>..\..\bin\Build$(Configuration)\nuget-unsigned
$(_NuGetFolderOnCI)
<_FastDeploymentDiagnosticLogging>true
diff --git a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.NativeAOT.targets b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.NativeAOT.targets
index 0735371eacc..9dd225160fe 100644
--- a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.NativeAOT.targets
+++ b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.NativeAOT.targets
@@ -13,6 +13,8 @@ This file contains the NativeAOT-specific MSBuild logic for .NET for Android.
<_AndroidRuntimePackRuntime>NativeAOT
JavaInterop1
+
+ true
true
diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest2.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest2.cs
index e687e1e605d..1b52f3d9f9a 100644
--- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest2.cs
+++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest2.cs
@@ -125,15 +125,8 @@ public void NativeAOT ()
{
var proj = new XamarinAndroidApplicationProject {
ProjectName = "Hello",
- IsRelease = true,
- RuntimeIdentifier = "android-arm64",
- // Add locally downloaded NativeAOT packs
- ExtraNuGetConfigSources = {
- Path.Combine (XABuildPaths.BuildOutputDirectory, "nuget-unsigned"),
- }
};
- proj.SetProperty ("PublishAot", "true");
- proj.SetProperty ("AndroidNdkDirectory", AndroidNdkPath);
+ proj.SetPublishAot (true, AndroidNdkPath);
proj.SetProperty ("_ExtraTrimmerArgs", "--verbose");
// Required for java/util/ArrayList assertion below
@@ -149,16 +142,19 @@ public void NativeAOT ()
];
string[] mono_files = [
"lib/arm64-v8a/libmonosgen-2.0.so",
+ "lib/x86_64/libmonosgen-2.0.so",
];
string [] nativeaot_files = [
$"lib/arm64-v8a/lib{proj.ProjectName}.so",
"lib/arm64-v8a/libc++_shared.so",
+ $"lib/x86_64/lib{proj.ProjectName}.so",
+ "lib/x86_64/libc++_shared.so",
];
- var intermediate = Path.Combine (Root, b.ProjectDirectory, proj.IntermediateOutputPath, proj.RuntimeIdentifier);
- var output = Path.Combine (Root, b.ProjectDirectory, proj.OutputPath, proj.RuntimeIdentifier);
+ var intermediate = Path.Combine (Root, b.ProjectDirectory, proj.IntermediateOutputPath);
+ var output = Path.Combine (Root, b.ProjectDirectory, proj.OutputPath);
- var linkedMonoAndroidAssembly = Path.Combine (intermediate, "linked", "Mono.Android.dll");
+ var linkedMonoAndroidAssembly = Path.Combine (intermediate, "android-arm64", "linked", "Mono.Android.dll");
FileAssert.Exists (linkedMonoAndroidAssembly);
using (var assembly = AssemblyDefinition.ReadAssembly (linkedMonoAndroidAssembly)) {
var typeName = "Android.App.Activity";
@@ -170,7 +166,7 @@ public void NativeAOT ()
}
var typemap = new Dictionary ();
- var linkedRuntimeAssembly = Path.Combine (intermediate, "linked", "Microsoft.Android.Runtime.NativeAOT.dll");
+ var linkedRuntimeAssembly = Path.Combine (intermediate, "android-arm64", "linked", "Microsoft.Android.Runtime.NativeAOT.dll");
FileAssert.Exists (linkedRuntimeAssembly);
using (var assembly = AssemblyDefinition.ReadAssembly (linkedRuntimeAssembly)) {
var type = assembly.MainModule.Types.FirstOrDefault (t => t.Name == "NativeAotTypeManager");
diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/KnownProperties.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/KnownProperties.cs
index 427ec8cb52a..dfc9da64a38 100644
--- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/KnownProperties.cs
+++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/KnownProperties.cs
@@ -36,5 +36,6 @@ public static class KnownProperties
public const string _AndroidAllowDeltaInstall = "_AndroidAllowDeltaInstall";
public const string Nullable = "Nullable";
public const string ImplicitUsings = "ImplicitUsings";
+ public const string PublishAot = "PublishAot";
}
}
diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/XamarinAndroidApplicationProject.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/XamarinAndroidApplicationProject.cs
index 7cf28b8ace0..772b0f3a438 100644
--- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/XamarinAndroidApplicationProject.cs
+++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/XamarinAndroidApplicationProject.cs
@@ -165,6 +165,30 @@ public bool EnableMarshalMethods {
set { SetProperty (KnownProperties.AndroidEnableMarshalMethods, value.ToString ()); }
}
+ private bool PublishAot {
+ get { return string.Equals (GetProperty (KnownProperties.PublishAot), "True", StringComparison.OrdinalIgnoreCase); }
+ set { SetProperty (KnownProperties.PublishAot, value.ToString ()); }
+ }
+
+ ///
+ /// Sets properties required for $(PublishAot)=true
+ ///
+ public void SetPublishAot (bool value, string androidNdkPath)
+ {
+ IsRelease = value;
+ PublishAot = value;
+ SetProperty ("AndroidNdkDirectory", androidNdkPath);
+
+ // NuGet feed needed as Microsoft.Android.Runtime.NativeAOT packs not installed in workload by default
+ var source = Path.Combine (XABuildPaths.BuildOutputDirectory, "nuget-unsigned");
+ if (value) {
+ if (!ExtraNuGetConfigSources.Contains (source))
+ ExtraNuGetConfigSources.Add (source);
+ } else {
+ ExtraNuGetConfigSources.Remove (source);
+ }
+ }
+
public string AndroidManifest { get; set; }
public string LayoutMain { get; set; }
public string MainActivity { get; set; }