diff --git a/.external b/.external
index 39511b205a8..579f13b883b 100644
--- a/.external
+++ b/.external
@@ -1 +1 @@
-xamarin/monodroid:main@93ab95e18077d56d9d55ce7b4069a534e2dea35e
+xamarin/monodroid:main@c6aae9e5a154cfbf2c3a94e046fa2c747c3b82e2
diff --git a/Xamarin.Android.code-workspace b/Xamarin.Android.code-workspace
index 327ad56b9d4..217de4789b6 100644
--- a/Xamarin.Android.code-workspace
+++ b/Xamarin.Android.code-workspace
@@ -5,6 +5,7 @@
}
],
"settings": {
- "nxunitExplorer.logpanel": true
+ "nxunitExplorer.logpanel": true,
+ "java.compile.nullAnalysis.mode": "disabled"
}
}
\ No newline at end of file
diff --git a/build-tools/automation/yaml-templates/stage-msbuild-emulator-tests.yaml b/build-tools/automation/yaml-templates/stage-msbuild-emulator-tests.yaml
index f2c23e9a2bf..4e71b44222e 100644
--- a/build-tools/automation/yaml-templates/stage-msbuild-emulator-tests.yaml
+++ b/build-tools/automation/yaml-templates/stage-msbuild-emulator-tests.yaml
@@ -4,7 +4,7 @@ parameters:
stageName: msbuilddevice_tests
job_name: 'mac_dotnetdevice_tests'
dependsOn: mac_build
- agent_count: 8
+ agent_count: 12
stageCondition: succeeded()
stagePrefix: ''
xaSourcePath: $(System.DefaultWorkingDirectory)
diff --git a/build-tools/automation/yaml-templates/stage-msbuild-tests.yaml b/build-tools/automation/yaml-templates/stage-msbuild-tests.yaml
index d20e1549812..434de192f42 100644
--- a/build-tools/automation/yaml-templates/stage-msbuild-tests.yaml
+++ b/build-tools/automation/yaml-templates/stage-msbuild-tests.yaml
@@ -22,7 +22,7 @@ stages:
testOS: macOS
jobName: mac_msbuild_tests
jobDisplayName: macOS > Tests > MSBuild
- agentCount: 8
+ agentCount: 14
xaSourcePath: ${{ parameters.xaSourcePath }}
repositoryAlias: ${{ parameters.repositoryAlias }}
commit: ${{ parameters.commit }}
diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/ProcessAssemblies.cs b/src/Xamarin.Android.Build.Tasks/Tasks/ProcessAssemblies.cs
index 02ce62f6b87..426dce71b71 100644
--- a/src/Xamarin.Android.Build.Tasks/Tasks/ProcessAssemblies.cs
+++ b/src/Xamarin.Android.Build.Tasks/Tasks/ProcessAssemblies.cs
@@ -146,6 +146,7 @@ static bool IsFromAKnownRuntimePack (ITaskItem assembly)
// Sometimes .pdb files are not included in @(ResolvedFileToPublish), so add them if they exist
if (File.Exists (symbolPath)) {
symbols [symbolPath] = symbol = new TaskItem (symbolPath);
+ return symbol;
}
}
return symbol;
@@ -185,6 +186,7 @@ void SetIt (ITaskItem? item)
}
string destination = Path.Combine (abi, item.GetMetadata ("DestinationSubDirectory"));
+ //Log.LogDebugMessage ($"DEBUG!!!'{item.ItemSpec}' '{rid}' = '{abi}'. DestinationSubDirectory='{destination}'");
item.SetMetadata ("DestinationSubDirectory", destination + Path.DirectorySeparatorChar);
item.SetMetadata ("DestinationSubPath", Path.Combine (destination, Path.GetFileName (item.ItemSpec)));
}
diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Utilities/DeviceTest.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Utilities/DeviceTest.cs
index 18f022cbc05..a6dec7fe137 100644
--- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Utilities/DeviceTest.cs
+++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Utilities/DeviceTest.cs
@@ -11,6 +11,7 @@
using System.Xml.Linq;
using System.Xml.XPath;
using Xamarin.ProjectTools;
+using System.Runtime.InteropServices;
namespace Xamarin.Android.Build.Tests
{
@@ -77,7 +78,10 @@ public void DeviceSetup ()
}
SetAdbLogcatBufferSize (128);
CreateGuestUser (GuestUserName);
+ return;
}
+ TestContext.Out.WriteLine ($"LOG DeviceSetup: No Device!!!!");
+ DeviceAbi = RuntimeInformation.OSArchitecture == Architecture.Arm64 ? "arm64-v8a" : "x86_64";
}
[OneTimeTearDown]
diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets
index 6a96fe3decf..8440186e901 100644
--- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets
+++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets
@@ -496,10 +496,6 @@ Copyright (C) 2011-2012 Xamarin. All rights reserved.
ResourceName="XA0119_LinkTool"
Condition=" '$(EmbedAssembliesIntoApk)' != 'True' And '$(AndroidLinkTool)' != '' "
/>
-
"namespace Library1 { public class Class1 { public static int foo = 0; } }"
+ TextContent = () => "namespace Library1 { public class Class1 { public static int foo = 500; } }"
};
var lib1 = new XamarinAndroidLibraryProject () {
ProjectName = "Library1",
@@ -509,7 +514,7 @@ public void IncrementalFastDeployment ()
};
var class2src = new BuildItem.Source ("Class2.cs") {
- TextContent = () => "namespace Library2 { public class Class2 { public static int foo = 0; } }"
+ TextContent = () => "namespace Library2 { public class Class2 { public static int foo = 40; } }"
};
var lib2 = new DotNetStandard {
ProjectName = "Library2",
@@ -527,16 +532,21 @@ public void IncrementalFastDeployment ()
new BuildItem ("ProjectReference", "..\\Library2\\Library2.csproj"),
},
};
+ app.SetProperty ("AndroidPackageFormat", packageFormat);
// Set up library projects
var rootPath = Path.Combine (Root, "temp", TestName);
- using (var lb1 = CreateDllBuilder (Path.Combine (rootPath, lib1.ProjectName)))
+ using (var lb1 = CreateDllBuilder (Path.Combine (rootPath, lib1.ProjectName))) {
+ lb1.BuildLogFile = "build.log";
Assert.IsTrue (lb1.Build (lib1), "First library build should have succeeded.");
- using (var lb2 = CreateDllBuilder (Path.Combine (rootPath, lib2.ProjectName)))
+ }
+ using (var lb2 = CreateDllBuilder (Path.Combine (rootPath, lib2.ProjectName))) {
+ lb2.BuildLogFile = "build.log";
Assert.IsTrue (lb2.Build (lib2), "Second library build should have succeeded.");
+ }
long lib1FirstBuildSize = new FileInfo (Path.Combine (rootPath, lib1.ProjectName, lib1.OutputPath, "Library1.dll")).Length;
-
+
using (var builder = CreateApkBuilder (Path.Combine (rootPath, app.ProjectName))) {
builder.Verbosity = LoggerVerbosity.Detailed;
builder.ThrowOnBuildFailure = false;
@@ -560,13 +570,15 @@ public void IncrementalFastDeployment ()
File.SetLastWriteTimeUtc (file, DateTime.UtcNow);
}
- class1src.TextContent = () => "namespace Library1 { public class Class1 { public static int foo = 100; } }";
+ class1src.TextContent = () => "namespace Library1 { public class Class1 { public static int foo = 1; } }";
class1src.Timestamp = DateTime.UtcNow.AddSeconds(1);
- using (var lb1 = CreateDllBuilder (Path.Combine (rootPath, lib1.ProjectName)))
+ using (var lb1 = CreateDllBuilder (Path.Combine (rootPath, lib1.ProjectName))) {
+ lb1.BuildLogFile = "build2.log";
Assert.IsTrue (lb1.Build (lib1), "Second library build should have succeeded.");
+ }
long lib1SecondBuildSize = new FileInfo (Path.Combine (rootPath, lib1.ProjectName, lib1.OutputPath, "Library1.dll")).Length;
- Assert.AreEqual (lib1FirstBuildSize, lib1SecondBuildSize, "Library2.dll was not the same size.");
+ Assert.AreEqual (lib1FirstBuildSize, lib1SecondBuildSize, "Library1.dll was not the same size.");
builder.BuildLogFile = "install3.log";
Assert.IsTrue (builder.Install (app, doNotCleanupOnUpdate: true, saveProject: false), "Third install should have succeeded.");