diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/R8.cs b/src/Xamarin.Android.Build.Tasks/Tasks/R8.cs index 81d65a2c218..d9cafeb4e3d 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/R8.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/R8.cs @@ -1,3 +1,4 @@ +using System; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; using System.Collections.Generic; @@ -82,16 +83,15 @@ protected override CommandLineBuilder GetCommandLineBuilder () if (EnableShrinking) { if (!string.IsNullOrEmpty (AcwMapFile)) { - var acwLines = File.ReadAllLines (AcwMapFile); + var acwMap = MonoAndroidHelper.LoadMapFile (BuildEngine4, Path.GetFullPath (AcwMapFile), StringComparer.OrdinalIgnoreCase); + var javaTypes = new List (acwMap.Values.Count); + foreach (var v in acwMap.Values) { + javaTypes.Add (v); + } + javaTypes.Sort (StringComparer.Ordinal); using (var appcfg = File.CreateText (ProguardGeneratedApplicationConfiguration)) { - for (int i = 0; i + 2 < acwLines.Length; i += 3) { - try { - var line = acwLines [i + 2]; - var java = line.Substring (line.IndexOf (';') + 1); - appcfg.WriteLine ("-keep class " + java + " { *; }"); - } catch { - // skip invalid lines - } + foreach (var java in javaTypes) { + appcfg.WriteLine ($"-keep class {java} {{ *; }}"); } } }