From f653bf5914e6150b416e396c53c4e9f7b39f74ea Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Fri, 6 May 2022 15:50:50 -0400 Subject: [PATCH] fix(net6): [Android] Adjust for proper assets base path --- build/uno.winui.single-project.targets | 2 +- src/SourceGenerators/Uno.UI.Tasks/Assets/RetargetAssets.cs | 6 ++++-- .../Uno.UI.Tasks/Content/Uno.UI.Tasks.targets | 1 + src/Uno.UWP/Helpers/AndroidResourceNameEncoder.cs | 4 ++-- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/build/uno.winui.single-project.targets b/build/uno.winui.single-project.targets index 15bab12d084e..92806ede12eb 100644 --- a/build/uno.winui.single-project.targets +++ b/build/uno.winui.single-project.targets @@ -51,7 +51,7 @@ Android\ $(AndroidProjectFolder)AndroidManifest.xml $(AndroidProjectFolder)Resources - $(AndroidProjectFolder)Assets;Assets + $(AndroidProjectFolder)Assets false diff --git a/src/SourceGenerators/Uno.UI.Tasks/Assets/RetargetAssets.cs b/src/SourceGenerators/Uno.UI.Tasks/Assets/RetargetAssets.cs index b945bf9d33c9..d710bd68e4f2 100644 --- a/src/SourceGenerators/Uno.UI.Tasks/Assets/RetargetAssets.cs +++ b/src/SourceGenerators/Uno.UI.Tasks/Assets/RetargetAssets.cs @@ -26,6 +26,8 @@ public class RetargetAssets_v0 : Task [Required] public string TargetPlatform { get; set; } + public string AndroidAssetsPrefix { get; set; } + [Required] public string DefaultLanguage { get; set; } @@ -53,7 +55,7 @@ public override bool Execute() break; case "android": resourceToTargetPath = resource => AndroidResourceConverter.Convert(resource, DefaultLanguage); - pathEncoder = AndroidResourceNameEncoder.EncodeFileSystemPath; + pathEncoder = s => AndroidResourceNameEncoder.EncodeFileSystemPath(s, AndroidAssetsPrefix ?? "Assets"); break; default: Log.LogMessage($"Skipping unknown platform {TargetPlatform}"); @@ -62,7 +64,7 @@ public override bool Execute() Assets = ContentItems.ToArray(); RetargetedAssets = Assets - .Select((Func)(asset => ProcessContentItem(asset, resourceToTargetPath, pathEncoder))) + .Select(asset => ProcessContentItem(asset, resourceToTargetPath, pathEncoder)) .Where(a => a != null) .ToArray(); diff --git a/src/SourceGenerators/Uno.UI.Tasks/Content/Uno.UI.Tasks.targets b/src/SourceGenerators/Uno.UI.Tasks/Content/Uno.UI.Tasks.targets index 6725190ca03a..880e5006213c 100644 --- a/src/SourceGenerators/Uno.UI.Tasks/Content/Uno.UI.Tasks.targets +++ b/src/SourceGenerators/Uno.UI.Tasks/Content/Uno.UI.Tasks.targets @@ -62,6 +62,7 @@ TargetPlatform="$(XamarinProjectType)" DefaultLanguage="$(DefaultLanguage)" ContentItems="@(Content)" + AndroidAssetsPrefix="$(MonoAndroidAssetsPrefix)" Condition="'$(XamarinProjectType)'!=''"> diff --git a/src/Uno.UWP/Helpers/AndroidResourceNameEncoder.cs b/src/Uno.UWP/Helpers/AndroidResourceNameEncoder.cs index 8f5efbe147cc..2b2dc271756a 100644 --- a/src/Uno.UWP/Helpers/AndroidResourceNameEncoder.cs +++ b/src/Uno.UWP/Helpers/AndroidResourceNameEncoder.cs @@ -46,9 +46,9 @@ public static string Encode(string key) return key; } - public static string EncodeFileSystemPath(string path) + public static string EncodeFileSystemPath(string path, string prefix = "Assets") // Android assets need to placed in the Assets folder - => global::System.IO.Path.Combine("Assets", EncodePath(path, global::System.IO.Path.DirectorySeparatorChar)); + => global::System.IO.Path.Combine(prefix, EncodePath(path, global::System.IO.Path.DirectorySeparatorChar)); public static string EncodeResourcePath(string path) => EncodePath(path, '/');