From 29ad2cc822068fa7865c8233a69297eb5eca7504 Mon Sep 17 00:00:00 2001 From: Dean Ellis Date: Thu, 25 May 2023 10:11:27 +0100 Subject: [PATCH 01/13] Fix an Issue with new Resource Desginer Assembly --- .../FixLegacyResourceDesignerStep.cs | 4 +- .../Android/KnownPackages.cs | 8 ++ .../Utilities/RtxtParser.cs | 2 +- .../Tests/InstallAndRunTests.cs | 107 ++++++++++++++++++ 4 files changed, 119 insertions(+), 2 deletions(-) diff --git a/src/Xamarin.Android.Build.Tasks/Linker/MonoDroid.Tuner/FixLegacyResourceDesignerStep.cs b/src/Xamarin.Android.Build.Tasks/Linker/MonoDroid.Tuner/FixLegacyResourceDesignerStep.cs index d5ca2e4c65c..13eba187c07 100644 --- a/src/Xamarin.Android.Build.Tasks/Linker/MonoDroid.Tuner/FixLegacyResourceDesignerStep.cs +++ b/src/Xamarin.Android.Build.Tasks/Linker/MonoDroid.Tuner/FixLegacyResourceDesignerStep.cs @@ -138,12 +138,14 @@ protected override void FixBody (MethodBody body, TypeDefinition designer) if (idx >= 0) { string key = line.Substring (idx + designerFullName.Length); LogMessage ($"Looking for {key}."); + Console.WriteLine ($"Looking for {key}."); if (lookup.TryGetValue (key, out MethodDefinition method)) { var importedMethod = designer.Module.ImportReference (method); var newIn = Instruction.Create (OpCodes.Call, importedMethod); instructions.Add (i, newIn); } else { - LogMessage ($"DEBUG! Failed to find {key}!"); + LogMessage ($"DEBUG! Failed to find {key}! defaulting to 0x0"); + throw new InvalidOperationException ($"Failed to find AndroidResource for {key}!"); } } } diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/KnownPackages.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/KnownPackages.cs index 007ff8d4172..c4dca5c2b42 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/KnownPackages.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/KnownPackages.cs @@ -593,6 +593,14 @@ public static class KnownPackages Id = "Mono.AotProfiler.Android", Version = "7.0.0-preview1", }; + public static Package SkiaSharp = new Package () { + Id = "SkiaSharp", + Version = "2.88.3", + }; + public static Package SkiaSharp_Views = new Package () { + Id = "SkiaSharp.Views", + Version = "2.88.3", + }; } } diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/RtxtParser.cs b/src/Xamarin.Android.Build.Tasks/Utilities/RtxtParser.cs index ed7aa317780..d2d1f6aa42b 100644 --- a/src/Xamarin.Android.Build.Tasks/Utilities/RtxtParser.cs +++ b/src/Xamarin.Android.Build.Tasks/Utilities/RtxtParser.cs @@ -119,7 +119,7 @@ void ProcessRtxtFile (string file, IList result) continue; } int value = items [1] != "styleable" ? Convert.ToInt32 (items [3].Trim (), 16) : -1; - string itemName = ResourceIdentifier.GetResourceName(items [1], items [2], map, log); + string itemName = ResourceIdentifier.GetResourceName(ResourceParser.GetNestedTypeName (items [1]), items [2], map, log); if (knownTypes.Contains (items [1])) { if (items [1] != "styleable") { result.Add (new R () { diff --git a/tests/MSBuildDeviceIntegration/Tests/InstallAndRunTests.cs b/tests/MSBuildDeviceIntegration/Tests/InstallAndRunTests.cs index 8e8c6b1b360..0807ccfbc9a 100644 --- a/tests/MSBuildDeviceIntegration/Tests/InstallAndRunTests.cs +++ b/tests/MSBuildDeviceIntegration/Tests/InstallAndRunTests.cs @@ -914,6 +914,113 @@ public void CheckXamarinFormsAppDeploysAndAButtonWorks () }, Path.Combine (Root, builder.ProjectDirectory, "button-logcat.log")), "Button Should have been Clicked."); } + [Test] + public void SkiaSharpCanvasBasedAppRuns ([Values (true, false)] bool isRelease) + { + var app = new XamarinAndroidApplicationProject () { + IsRelease = isRelease, + PackageName = "Xamarin.SkiaSharpCanvasTest", + PackageReferences = { + KnownPackages.SkiaSharp, + KnownPackages.SkiaSharp_Views, + KnownPackages.AndroidXAppCompat, + KnownPackages.AndroidXAppCompatResources, + }, + }; + app.AndroidResources.Add (new AndroidItem.AndroidResource ("Resources\\values\\styles.xml") { + TextContent = () => @"