diff --git a/Documentation/guides/building-apps/build-properties.md b/Documentation/guides/building-apps/build-properties.md index 80411236de6..9f73adc9ab9 100644 --- a/Documentation/guides/building-apps/build-properties.md +++ b/Documentation/guides/building-apps/build-properties.md @@ -129,14 +129,14 @@ Added in Xamarin.Android 6.1. A path to a directory containing the Android [binutils][binutils] such as `ld`, the native linker, -and `as`, the native assembler. These tools are part of the Android -NDK and are also included in the Xamarin.Android installation. +and `as`, the native assembler. These tools are included in the +Xamarin.Android installation. -The default value is `$(MonoAndroidBinDirectory)\ndk\`. +The default value is `$(MonoAndroidBinDirectory)\binutils\`. Added in Xamarin.Android 10.0. -[binutils]: https://android.googlesource.com/toolchain/binutils/ +[binutils]: https://github.com/xamarin/xamarin-android-binutils/ ## AndroidBoundExceptionType diff --git a/build-tools/installers/create-installers.targets b/build-tools/installers/create-installers.targets index d05347d4e97..a2eb4e4b426 100644 --- a/build-tools/installers/create-installers.targets +++ b/build-tools/installers/create-installers.targets @@ -310,18 +310,18 @@ <_MSBuildFilesWin Include="$(MSBuildSrcDir)\lib64\libZipSharpNative.pdb" /> <_MSBuildFilesWin Include="$(MSBuildSrcDir)\proguard\bin\proguard.bat" /> <_MSBuildFilesWin Include="$(MSBuildSrcDir)\aapt2.exe" /> - <_MSBuildFilesWin Include="$(MSBuildSrcDir)\ndk\aarch64-linux-android-as.exe" /> - <_MSBuildFilesWin Include="$(MSBuildSrcDir)\ndk\aarch64-linux-android-ld.exe" /> - <_MSBuildFilesWin Include="$(MSBuildSrcDir)\ndk\aarch64-linux-android-strip.exe" /> - <_MSBuildFilesWin Include="$(MSBuildSrcDir)\ndk\arm-linux-androideabi-as.exe" /> - <_MSBuildFilesWin Include="$(MSBuildSrcDir)\ndk\arm-linux-androideabi-ld.exe" /> - <_MSBuildFilesWin Include="$(MSBuildSrcDir)\ndk\arm-linux-androideabi-strip.exe" /> - <_MSBuildFilesWin Include="$(MSBuildSrcDir)\ndk\i686-linux-android-as.exe" /> - <_MSBuildFilesWin Include="$(MSBuildSrcDir)\ndk\i686-linux-android-ld.exe" /> - <_MSBuildFilesWin Include="$(MSBuildSrcDir)\ndk\i686-linux-android-strip.exe" /> - <_MSBuildFilesWin Include="$(MSBuildSrcDir)\ndk\x86_64-linux-android-as.exe" /> - <_MSBuildFilesWin Include="$(MSBuildSrcDir)\ndk\x86_64-linux-android-ld.exe" /> - <_MSBuildFilesWin Include="$(MSBuildSrcDir)\ndk\x86_64-linux-android-strip.exe" /> + <_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\aarch64-linux-android-as.exe" /> + <_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\aarch64-linux-android-ld.exe" /> + <_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\aarch64-linux-android-strip.exe" /> + <_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\arm-linux-androideabi-as.exe" /> + <_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\arm-linux-androideabi-ld.exe" /> + <_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\arm-linux-androideabi-strip.exe" /> + <_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\i686-linux-android-as.exe" /> + <_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\i686-linux-android-ld.exe" /> + <_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\i686-linux-android-strip.exe" /> + <_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\x86_64-linux-android-as.exe" /> + <_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\x86_64-linux-android-ld.exe" /> + <_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\x86_64-linux-android-strip.exe" /> <_MSBuildLibHostFilesWin Include="$(MSBuildSrcDir)\lib\host-mxe-Win64\libmono-android.debug.dll" Condition=" '$(HostOS)' != 'Windows' " /> <_MSBuildLibHostFilesWin Include="$(MSBuildSrcDir)\lib\host-mxe-Win64\libmono-android.release.dll" Condition=" '$(HostOS)' != 'Windows' " /> <_MSBuildLibHostFilesWin Include="$(MSBuildSrcDir)\lib\host-mxe-Win64\libMonoPosixHelper.dll" /> @@ -341,18 +341,18 @@ - <_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\ndk\aarch64-linux-android-as" /> - <_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\ndk\aarch64-linux-android-ld" /> - <_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\ndk\aarch64-linux-android-strip" /> - <_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\ndk\arm-linux-androideabi-as" /> - <_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\ndk\arm-linux-androideabi-ld" /> - <_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\ndk\arm-linux-androideabi-strip" /> - <_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\ndk\i686-linux-android-as" /> - <_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\ndk\i686-linux-android-ld" /> - <_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\ndk\i686-linux-android-strip" /> - <_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\ndk\x86_64-linux-android-as" /> - <_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\ndk\x86_64-linux-android-ld" /> - <_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\ndk\x86_64-linux-android-strip" /> + <_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\aarch64-linux-android-as" /> + <_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\aarch64-linux-android-ld" /> + <_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\aarch64-linux-android-strip" /> + <_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\arm-linux-androideabi-as" /> + <_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\arm-linux-androideabi-ld" /> + <_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\arm-linux-androideabi-strip" /> + <_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\i686-linux-android-as" /> + <_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\i686-linux-android-ld" /> + <_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\i686-linux-android-strip" /> + <_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\x86_64-linux-android-as" /> + <_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\x86_64-linux-android-ld" /> + <_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\x86_64-linux-android-strip" /> <_MSBuildFilesUnix Include="$(MSBuildSrcDir)\$(HostOS)\illinkanalyzer" Permission="755" /> <_MSBuildFilesUnix Include="$(MSBuildSrcDir)\$(HostOS)\jit-times" Permission="755" /> <_MSBuildFilesUnix Include="$(MSBuildSrcDir)\$(HostOS)\aprofutil" ExcludeFromAndroidNETSdk="true" /> diff --git a/build-tools/xaprepare/xaprepare/Application/BuildInfo.cs b/build-tools/xaprepare/xaprepare/Application/BuildInfo.cs index 69b8aed2e48..67413577b9b 100644 --- a/build-tools/xaprepare/xaprepare/Application/BuildInfo.cs +++ b/build-tools/xaprepare/xaprepare/Application/BuildInfo.cs @@ -18,6 +18,7 @@ partial class BuildInfo : AppObject public string NDKVersionMajor { get; private set; } = String.Empty; public string NDKVersionMinor { get; private set; } = String.Empty; public string NDKVersionMicro { get; private set; } = String.Empty; + public string NDKVersionTag { get; private set; } = String.Empty; public string NDKMinimumApiAvailable { get; private set; } = String.Empty; public string VersionHash { get; private set; } = String.Empty; @@ -59,8 +60,7 @@ public bool GatherNDKInfo (Context context) string rev = parts [1].Trim (); NDKRevision = rev; - Version ver; - if (!Version.TryParse (rev, out ver)) { + if (!Utilities.ParseAndroidPkgRevision (rev, out Version? ver, out string tag)) { Log.ErrorLine ($"Unable to parse NDK revision '{rev}' as a valid version string"); return false; } @@ -68,6 +68,7 @@ public bool GatherNDKInfo (Context context) NDKVersionMajor = ver.Major.ToString (); NDKVersionMinor = ver.Minor.ToString (); NDKVersionMicro = ver.Build.ToString (); + NDKVersionTag = tag; break; } diff --git a/build-tools/xaprepare/xaprepare/Application/MonoJitRuntime.cs b/build-tools/xaprepare/xaprepare/Application/MonoJitRuntime.cs index 31d435f4bc6..4838e62647e 100644 --- a/build-tools/xaprepare/xaprepare/Application/MonoJitRuntime.cs +++ b/build-tools/xaprepare/xaprepare/Application/MonoJitRuntime.cs @@ -24,7 +24,7 @@ public override void Init (Context context) OutputMonoBtlsFilename = Configurables.Defaults.MonoRuntimeOutputMonoBtlsFilename; OutputMonoPosixHelperFilename = Configurables.Defaults.MonoRuntimeOutputMonoPosixHelperFilename; OutputProfilerFilename = Configurables.Defaults.MonoRuntimeOutputProfilerFilename; - Strip = Path.Combine (Configurables.Paths.AndroidToolchainBinDirectory, $"{Configurables.Defaults.AndroidToolchainPrefixes [Name]}-strip"); + Strip = Path.Combine (Configurables.Paths.AndroidToolchainBinDirectory, "llvm-strip"); } } } diff --git a/build-tools/xaprepare/xaprepare/Application/Utilities.cs b/build-tools/xaprepare/xaprepare/Application/Utilities.cs index d3573903d41..75ee6edec7f 100644 --- a/build-tools/xaprepare/xaprepare/Application/Utilities.cs +++ b/build-tools/xaprepare/xaprepare/Application/Utilities.cs @@ -29,6 +29,29 @@ static partial class Utilities public static readonly Encoding UTF8NoBOM = new UTF8Encoding (false); + public static bool ParseAndroidPkgRevision (string? v, out Version? version, out string? tag) + { + string? ver = v?.Trim (); + version = null; + tag = null; + if (String.IsNullOrEmpty (ver)) + return false; + + if (ver!.IndexOf ('.') < 0) + ver = $"{ver}.0"; + + int tagIdx = ver.IndexOf ('-'); + if (tagIdx >= 0) { + tag = ver.Substring (tagIdx + 1); + ver = ver.Substring (0, tagIdx - 1); + } + + if (Version.TryParse (ver, out version)) + return true; + + return false; + } + public static bool AbiChoiceChanged (Context context) { string cacheFile = Configurables.Paths.MonoRuntimesEnabledAbisCachePath; diff --git a/build-tools/xaprepare/xaprepare/ConfigAndData/BuildAndroidPlatforms.cs b/build-tools/xaprepare/xaprepare/ConfigAndData/BuildAndroidPlatforms.cs index 39894f1a266..d7792bf0d5c 100644 --- a/build-tools/xaprepare/xaprepare/ConfigAndData/BuildAndroidPlatforms.cs +++ b/build-tools/xaprepare/xaprepare/ConfigAndData/BuildAndroidPlatforms.cs @@ -5,8 +5,8 @@ namespace Xamarin.Android.Prepare { class BuildAndroidPlatforms { - public const string AndroidNdkVersion = "22b"; - public const string AndroidNdkPkgRevision = "22.1.7171670"; + public const string AndroidNdkVersion = "23"; + public const string AndroidNdkPkgRevision = "23.0.7599858"; public static readonly List AllPlatforms = new List { new AndroidPlatform (apiName: "", apiLevel: 1, platformID: "1"), diff --git a/build-tools/xaprepare/xaprepare/ConfigAndData/Configurables.cs b/build-tools/xaprepare/xaprepare/ConfigAndData/Configurables.cs index 148d4372e04..10081f48e40 100644 --- a/build-tools/xaprepare/xaprepare/ConfigAndData/Configurables.cs +++ b/build-tools/xaprepare/xaprepare/ConfigAndData/Configurables.cs @@ -398,8 +398,8 @@ public static partial class Paths public static string AndroidToolchainRootDirectory => GetCachedPath (ref androidToolchainRootDirectory, () => Path.Combine (AndroidNdkDirectory, "toolchains", "llvm", "prebuilt", NdkToolchainOSTag)); public static string AndroidToolchainBinDirectory => GetCachedPath (ref androidToolchainBinDirectory, () => Path.Combine (AndroidToolchainRootDirectory, "bin")); public static string AndroidToolchainSysrootLibDirectory => GetCachedPath (ref androidToolchainSysrootLibDirectory, () => Path.Combine (AndroidToolchainRootDirectory, "sysroot", "usr", "lib")); - public static string WindowsBinutilsInstallDir => GetCachedPath (ref windowsBinutilsInstallDir, () => Path.Combine (InstallMSBuildDir, "ndk")); - public static string HostBinutilsInstallDir => GetCachedPath (ref hostBinutilsInstallDir, () => Path.Combine (InstallMSBuildDir, ctx.Properties.GetRequiredValue (KnownProperties.HostOS), "ndk")); + public static string WindowsBinutilsInstallDir => GetCachedPath (ref windowsBinutilsInstallDir, () => Path.Combine (InstallMSBuildDir, "binutils")); + public static string HostBinutilsInstallDir => GetCachedPath (ref hostBinutilsInstallDir, () => Path.Combine (InstallMSBuildDir, ctx.Properties.GetRequiredValue (KnownProperties.HostOS), "binutils")); public static string BinutilsCacheDir => ctx.Properties.GetRequiredValue (KnownProperties.AndroidToolchainCacheDirectory); public static string AndroidBuildToolsCacheDir => ctx.Properties.GetRequiredValue (KnownProperties.AndroidToolchainCacheDirectory); diff --git a/build-tools/xaprepare/xaprepare/ConfigAndData/Dependencies/AndroidToolchain.cs b/build-tools/xaprepare/xaprepare/ConfigAndData/Dependencies/AndroidToolchain.cs index e2ad727bcf5..30421f8d955 100644 --- a/build-tools/xaprepare/xaprepare/ConfigAndData/Dependencies/AndroidToolchain.cs +++ b/build-tools/xaprepare/xaprepare/ConfigAndData/Dependencies/AndroidToolchain.cs @@ -69,7 +69,7 @@ public AndroidToolchain () new AndroidToolchainComponent ("docs-24_r01", destDir: "docs", pkgRevision: "1", dependencyType: AndroidToolchainComponentType.BuildDependency), new AndroidToolchainComponent ("android_m2repository_r47", destDir: Path.Combine ("extras", "android", "m2repository"), pkgRevision: "47.0.0", dependencyType: AndroidToolchainComponentType.BuildDependency), new AndroidToolchainComponent ($"x86_64-29_r07-{osTag}", destDir: Path.Combine ("system-images", "android-29", "default", "x86_64"), relativeUrl: new Uri ("sys-img/android/", UriKind.Relative), pkgRevision: "7", dependencyType: AndroidToolchainComponentType.EmulatorDependency), - new AndroidToolchainComponent ($"android-ndk-r{AndroidNdkVersion}-{osTag}-x86_64", destDir: AndroidNdkDirectory, pkgRevision: AndroidPkgRevision), + new AndroidToolchainComponent ($"android-ndk-r{AndroidNdkVersion}-{osTag}", destDir: AndroidNdkDirectory, pkgRevision: AndroidPkgRevision), new AndroidToolchainComponent ($"{XABuildToolsPackagePrefix}build-tools_r{XABuildToolsVersion}-{altOsTag}", destDir: Path.Combine ("build-tools", XABuildToolsFolder), isMultiVersion: true), new AndroidToolchainComponent ($"commandlinetools-{cltOsTag}-{CommandLineToolsVersion}", destDir: Path.Combine ("cmdline-tools", CommandLineToolsFolder), isMultiVersion: true), diff --git a/build-tools/xaprepare/xaprepare/Steps/Step_Android_SDK_NDK.cs b/build-tools/xaprepare/xaprepare/Steps/Step_Android_SDK_NDK.cs index 3f54716ab0e..51b54e9e2b3 100644 --- a/build-tools/xaprepare/xaprepare/Steps/Step_Android_SDK_NDK.cs +++ b/build-tools/xaprepare/xaprepare/Steps/Step_Android_SDK_NDK.cs @@ -307,37 +307,21 @@ bool IsInstalled (AndroidToolchainComponent component, string path, out bool mis return false; } - if (!ParseVersion (pkgRevision, out Version? pkgVer) || pkgVer == null) { + if (!Utilities.ParseAndroidPkgRevision (pkgRevision, out Version? pkgVer, out string pkgTag) || pkgVer == null) { Log.DebugLine ($"Failed to parse a valid version from Pkg.Revision ({pkgRevision}) for component '{component.Name}'. Component will be reinstalled."); return false; } - if (!ParseVersion (component.PkgRevision, out Version? expectedPkgVer) || expectedPkgVer == null) + if (!Utilities.ParseAndroidPkgRevision (component.PkgRevision, out Version? expectedPkgVer, out string expectedTag) || expectedPkgVer == null) throw new InvalidOperationException ($"Invalid expected package version for component '{component.Name}': {component.PkgRevision}"); - bool equal = pkgVer == expectedPkgVer; + bool equal = (pkgVer == expectedPkgVer) && (pkgTag == expectedTag); if (!equal) - Log.DebugLine ($"Installed version of '{component.Name}' ({pkgVer}) is different than the required one ({expectedPkgVer})"); + Log.DebugLine ($"Installed version of '{component.Name}' ({pkgRevision}) is different than the required one ({component.PkgRevision})"); return equal; } - bool ParseVersion (string? v, out Version? version) - { - string? ver = v?.Trim (); - version = null; - if (String.IsNullOrEmpty (ver)) - return false; - - if (ver!.IndexOf ('.') < 0) - ver = $"{ver}.0"; - - if (Version.TryParse (ver, out version)) - return true; - - return false; - } - bool IsNdk (AndroidToolchainComponent component) { return component.Name.StartsWith ("android-ndk", StringComparison.OrdinalIgnoreCase); diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/GetAotArguments.cs b/src/Xamarin.Android.Build.Tasks/Tasks/GetAotArguments.cs index 9e15a17aac1..01149da32da 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/GetAotArguments.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/GetAotArguments.cs @@ -312,14 +312,20 @@ string GetLdFlags(NdkTools ndk, AndroidTargetArch arch, int level, string toolPr } string toolchainLibDir; - if (ndk.UsesClang) - toolchainLibDir = GetNdkToolchainLibraryDir (ndk, toolchainPath, arch); - else + if (ndk.UsesClang) { + if (ndk.NoBinutils) { + toolchainLibDir = String.Empty; + } else { + toolchainLibDir = GetNdkToolchainLibraryDir (ndk, toolchainPath, arch); + } + } else toolchainLibDir = GetNdkToolchainLibraryDir (ndk, toolchainPath); var libs = new List (); if (ndk.UsesClang) { - libs.Add ($"-L{toolchainLibDir.TrimEnd ('\\')}"); + if (!String.IsNullOrEmpty (toolchainLibDir)) { + libs.Add ($"-L{toolchainLibDir.TrimEnd ('\\')}"); + } libs.Add ($"-L{androidLibPath.TrimEnd ('\\')}"); if (arch == AndroidTargetArch.Arm) { @@ -329,7 +335,9 @@ string GetLdFlags(NdkTools ndk, AndroidTargetArch arch, int level, string toolPr } } - libs.Add (Path.Combine (toolchainLibDir, "libgcc.a")); + if (!String.IsNullOrEmpty (toolchainLibDir)) { + libs.Add (Path.Combine (toolchainLibDir, "libgcc.a")); + } libs.Add (Path.Combine (androidLibPath, "libc.so")); libs.Add (Path.Combine (androidLibPath, "libm.so")); diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/ResolveSdksTask.cs b/src/Xamarin.Android.Build.Tasks/Tasks/ResolveSdksTask.cs index d3096519471..261f9f9f175 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/ResolveSdksTask.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/ResolveSdksTask.cs @@ -1,23 +1,23 @@ -// +// // ResolveSdksTask.cs -// +// // Author: // Michael Hutchinson // Jonathan Pryor -// +// // Copyright (c) 2010 Novell, Inc. // Copyright (c) 2013 Xamarin Inc. -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -85,7 +85,7 @@ public override bool RunTask () } MonoAndroidBinPath = MonoAndroidHelper.GetOSBinPath () + Path.DirectorySeparatorChar; MonoAndroidLibPath = MonoAndroidHelper.GetOSLibPath () + Path.DirectorySeparatorChar; - AndroidBinUtilsPath = MonoAndroidBinPath + "ndk" + Path.DirectorySeparatorChar; + AndroidBinUtilsPath = MonoAndroidBinPath + "binutils" + Path.DirectorySeparatorChar; var minVersion = Version.Parse (MinimumSupportedJavaVersion); var maxVersion = Version.Parse (LatestSupportedJavaVersion); @@ -139,4 +139,3 @@ public override bool RunTask () } } } - diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/NdkUtilTests.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/NdkUtilTests.cs index c1947f59a15..8794fd4fb72 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/NdkUtilTests.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/NdkUtilTests.cs @@ -34,6 +34,7 @@ public void TestNdkUtil () var ndkDir = AndroidNdkPath; var sdkDir = AndroidSdkPath; NdkTools ndk = NdkTools.Create (ndkDir, log); + ndk.OSBinPath = SetUp.OSBinDirectory; MonoAndroidHelper.AndroidSdk = new AndroidSdkInfo ((arg1, arg2) => { }, sdkDir, ndkDir, AndroidSdkResolver.GetJavaSdkPath ()); var platforms = ndk.GetSupportedPlatforms (); Assert.AreNotEqual (0, platforms.Count (), "No platforms found"); diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Utilities/BaseTest.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Utilities/BaseTest.cs index 980d0918fca..6bc68ac47fe 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Utilities/BaseTest.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Utilities/BaseTest.cs @@ -42,6 +42,11 @@ public class SetUp { private set; } + public static string OSBinDirectory { + get; + private set; + } + static SetUp () { #if NETCOREAPP @@ -54,6 +59,16 @@ static SetUp () CommercialBuildAvailable = File.Exists (Path.Combine (builder.AndroidMSBuildDirectory, "Xamarin.Android.Common.Debugging.targets")); AndroidMSBuildDirectory = builder.AndroidMSBuildDirectory; } + + string osSubdirName; + if (TestEnvironment.IsLinux) { + osSubdirName = "Linux"; + } else if (TestEnvironment.IsMacOS) { + osSubdirName = "Darwin"; + } else { + osSubdirName = String.Empty; + } + OSBinDirectory = Path.Combine (AndroidMSBuildDirectory, osSubdirName); } [OneTimeSetUp] diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleLegacy.apkdesc b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleLegacy.apkdesc index 6d17b465281..eee08fac943 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleLegacy.apkdesc +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleLegacy.apkdesc @@ -5,10 +5,10 @@ "Size": 2584 }, "assemblies/Java.Interop.dll": { - "Size": 67759 + "Size": 67758 }, "assemblies/Mono.Android.dll": { - "Size": 251450 + "Size": 246233 }, "assemblies/mscorlib.dll": { "Size": 769324 @@ -20,10 +20,10 @@ "Size": 9171 }, "assemblies/UnnamedProject.dll": { - "Size": 2867 + "Size": 2862 }, "classes.dex": { - "Size": 345208 + "Size": 316760 }, "lib/arm64-v8a/libmono-btls-shared.so": { "Size": 1613872 @@ -32,16 +32,16 @@ "Size": 707024 }, "lib/arm64-v8a/libmonodroid.so": { - "Size": 282936 + "Size": 281352 }, "lib/arm64-v8a/libmonosgen-2.0.so": { "Size": 4037584 }, "lib/arm64-v8a/libxa-internal-api.so": { - "Size": 65496 + "Size": 65624 }, "lib/arm64-v8a/libxamarin-app.so": { - "Size": 20032 + "Size": 19696 }, "META-INF/ANDROIDD.RSA": { "Size": 1213 @@ -74,5 +74,5 @@ "Size": 1724 } }, - "PackageSize": 3978964 + "PackageSize": 3970772 } \ No newline at end of file diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsLegacy.apkdesc b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsLegacy.apkdesc index 2d000cc2e18..e7a51b2bc49 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsLegacy.apkdesc +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsLegacy.apkdesc @@ -8,7 +8,7 @@ "Size": 7200 }, "assemblies/Java.Interop.dll": { - "Size": 68711 + "Size": 68710 }, "assemblies/Mono.Android.dll": { "Size": 562181 @@ -77,10 +77,10 @@ "Size": 7050 }, "assemblies/Xamarin.AndroidX.Lifecycle.LiveData.Core.dll": { - "Size": 7179 + "Size": 7178 }, "assemblies/Xamarin.AndroidX.Lifecycle.ViewModel.dll": { - "Size": 4859 + "Size": 4860 }, "assemblies/Xamarin.AndroidX.Loader.dll": { "Size": 13574 @@ -122,16 +122,16 @@ "Size": 707024 }, "lib/arm64-v8a/libmonodroid.so": { - "Size": 282936 + "Size": 281352 }, "lib/arm64-v8a/libmonosgen-2.0.so": { "Size": 4037584 }, "lib/arm64-v8a/libxa-internal-api.so": { - "Size": 65496 + "Size": 65624 }, "lib/arm64-v8a/libxamarin-app.so": { - "Size": 142104 + "Size": 140560 }, "META-INF/android.support.design_material.version": { "Size": 12 diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/NdkTools/NdkTools.cs b/src/Xamarin.Android.Build.Tasks/Utilities/NdkTools/NdkTools.cs index f4e36e517f3..01306ccf0d3 100644 --- a/src/Xamarin.Android.Build.Tasks/Utilities/NdkTools/NdkTools.cs +++ b/src/Xamarin.Android.Build.Tasks/Utilities/NdkTools/NdkTools.cs @@ -33,6 +33,8 @@ public abstract class NdkTools { NdkToolKind.Strip, "strip" }, }; + string? osBinPath; + public NdkVersion Version { get; } public string NdkRootDirectory { get; } public bool UsesClang { get; protected set; } @@ -47,6 +49,17 @@ public abstract class NdkTools protected TaskLoggingHelper? Log { get; } + public string OSBinPath { + get => osBinPath ?? MonoAndroidHelper.GetOSBinPath (); + set { + if (String.IsNullOrEmpty (value)) { + osBinPath = null; + } else { + osBinPath = value; + } + } + } + protected NdkTools (string androidNdkPath, NdkVersion version, TaskLoggingHelper? log = null) { if (String.IsNullOrEmpty (androidNdkPath)) { @@ -58,7 +71,7 @@ protected NdkTools (string androidNdkPath, NdkVersion version, TaskLoggingHelper Version = version; } - public static NdkTools? Create (string androidNdkPath, TaskLoggingHelper? log = null) + public static NdkTools? Create (string androidNdkPath, TaskLoggingHelper? log = null, string? osBinPath = null) { if (String.IsNullOrEmpty (androidNdkPath)) { log?.LogCodedError ("XA5104", Properties.Resources.XA5104); diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/NdkTools/WithClang.cs b/src/Xamarin.Android.Build.Tasks/Utilities/NdkTools/WithClang.cs index 08c81ccab26..0c49e88361e 100644 --- a/src/Xamarin.Android.Build.Tasks/Utilities/NdkTools/WithClang.cs +++ b/src/Xamarin.Android.Build.Tasks/Utilities/NdkTools/WithClang.cs @@ -62,7 +62,7 @@ public override string GetToolPath (NdkToolKind kind, AndroidTargetArch arch, in public override string GetToolPath (string name, AndroidTargetArch arch, int apiLevel) { - return MakeToolPath ($"{GetArchTriple (arch)}-{name}"); + return MakeToolPath ($"{GetArchTriple (arch)}-{name}", mustExist: false); } public override string GetClangDeviceLibraryPath () @@ -99,11 +99,11 @@ protected string GetCompilerTriple (AndroidTargetArch arch) return arch == AndroidTargetArch.Arm ? "armv7a-linux-androideabi" : GetArchTriple (arch); } - protected string MakeToolPath (string toolName) + protected string MakeToolPath (string toolName, bool mustExist = true) { string toolPath = Path.Combine (GetToolchainDir (), "bin", toolName); - return GetExecutablePath (toolPath, mustExist: true)!; + return GetExecutablePath (toolPath, mustExist) ?? String.Empty; } protected string GetToolchainDir () diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/NdkTools/WithClangNoBinutils.cs b/src/Xamarin.Android.Build.Tasks/Utilities/NdkTools/WithClangNoBinutils.cs index c4b0bb98607..263e5bfa421 100644 --- a/src/Xamarin.Android.Build.Tasks/Utilities/NdkTools/WithClangNoBinutils.cs +++ b/src/Xamarin.Android.Build.Tasks/Utilities/NdkTools/WithClangNoBinutils.cs @@ -14,8 +14,6 @@ public NdkToolsWithClangNoBinutils (string androidNdkPath, NdkVersion version, T { NdkToolNames[NdkToolKind.Linker] = "ld"; NoBinutils = true; - - throw new NotSupportedException ($"NDK {Version} is not supported by this version of Xamarin.Android"); } public override string GetToolPath (NdkToolKind kind, AndroidTargetArch arch, int apiLevel) @@ -31,12 +29,28 @@ public override string GetToolPath (NdkToolKind kind, AndroidTargetArch arch, in } } + public override string GetToolPath (string name, AndroidTargetArch arch, int apiLevel) + { + // The only triple-prefixed binaries in NDK r23+ are the compilers, and these are + // handled by the other GetToolPath overload. + + // Some tools might not have any prefix, let's check that first + string toolPath = MakeToolPath (name, mustExist: false); + if (!String.IsNullOrEmpty (toolPath)) { + return toolPath; + } + + // Otherwise, they might be prefixed with llvm- + return MakeToolPath ($"llvm-{name}"); + } + string GetEmbeddedToolPath (NdkToolKind kind, AndroidTargetArch arch) { string toolName = GetToolName (kind); string triple = GetArchTriple (arch); + string binutilsDir = Path.Combine (OSBinPath, "binutils"); - return $"[TODO]/{triple}-{toolName}"; + return GetExecutablePath (Path.Combine (binutilsDir, $"{triple}-{toolName}"), mustExist: true); } } } diff --git a/src/monodroid/CMakeLists.txt b/src/monodroid/CMakeLists.txt index df77ad2489a..26502caa72b 100644 --- a/src/monodroid/CMakeLists.txt +++ b/src/monodroid/CMakeLists.txt @@ -279,7 +279,6 @@ endif() if(ANDROID) add_compile_definitions(HAVE_LZ4) add_compile_definitions(PLATFORM_ANDROID) - add_compile_definitions(__ANDROID_API__=${ANDROID_NATIVE_API_LEVEL}) if(ANDROID_ABI MATCHES "^(arm64-v8a|x86_64)") add_compile_definitions(ANDROID64) diff --git a/tests/apk-sizes-reference/Xamarin.Forms_Performance_Integration-Signed-Release.apkdesc b/tests/apk-sizes-reference/Xamarin.Forms_Performance_Integration-Signed-Release.apkdesc index 2b6e9290b1e..5cae9871001 100644 --- a/tests/apk-sizes-reference/Xamarin.Forms_Performance_Integration-Signed-Release.apkdesc +++ b/tests/apk-sizes-reference/Xamarin.Forms_Performance_Integration-Signed-Release.apkdesc @@ -4,263 +4,428 @@ "AndroidManifest.xml": { "Size": 3748 }, - "res/anim/abc_fade_in.xml": { - "Size": 388 + "assemblies/FormsViewGroup.dll": { + "Size": 7191 }, - "res/anim/abc_fade_out.xml": { - "Size": 388 + "assemblies/Java.Interop.dll": { + "Size": 68688 }, - "res/anim/abc_grow_fade_in_from_bottom.xml": { - "Size": 852 + "assemblies/Mono.Android.dll": { + "Size": 555037 }, - "res/anim/abc_popup_enter.xml": { - "Size": 508 + "assemblies/Mono.Security.dll": { + "Size": 68430 }, - "res/anim/abc_popup_exit.xml": { - "Size": 508 + "assemblies/mscorlib.dll": { + "Size": 936261 }, - "res/anim/abc_shrink_fade_out_from_bottom.xml": { - "Size": 852 + "assemblies/Newtonsoft.Json.dll": { + "Size": 319336 }, - "res/anim/abc_slide_in_bottom.xml": { - "Size": 396 + "assemblies/Plugin.Connectivity.Abstractions.dll": { + "Size": 3760 }, - "res/anim/abc_slide_in_top.xml": { - "Size": 396 + "assemblies/Plugin.Connectivity.dll": { + "Size": 10201 }, - "res/anim/abc_slide_out_bottom.xml": { - "Size": 396 + "assemblies/System.Core.dll": { + "Size": 192206 }, - "res/anim/abc_slide_out_top.xml": { - "Size": 396 + "assemblies/System.Data.dll": { + "Size": 316107 }, - "res/anim/abc_tooltip_enter.xml": { - "Size": 388 + "assemblies/System.dll": { + "Size": 443196 }, - "res/anim/abc_tooltip_exit.xml": { - "Size": 388 + "assemblies/System.Drawing.Common.dll": { + "Size": 16345 }, - "res/anim/btn_checkbox_to_checked_box_inner_merged_animation.xml": { - "Size": 2124 + "assemblies/System.Net.Http.dll": { + "Size": 113285 }, - "res/anim/btn_checkbox_to_checked_box_outer_merged_animation.xml": { - "Size": 2780 + "assemblies/System.Numerics.dll": { + "Size": 23251 }, - "res/anim/btn_checkbox_to_checked_icon_null_animation.xml": { - "Size": 1196 + "assemblies/System.Runtime.Serialization.dll": { + "Size": 193447 }, - "res/anim/btn_checkbox_to_unchecked_box_inner_merged_animation.xml": { - "Size": 2360 + "assemblies/System.ServiceModel.Internals.dll": { + "Size": 26590 }, - "res/anim/btn_checkbox_to_unchecked_check_path_merged_animation.xml": { - "Size": 2520 + "assemblies/System.Xml.dll": { + "Size": 592565 }, - "res/anim/btn_checkbox_to_unchecked_icon_null_animation.xml": { - "Size": 1196 + "assemblies/System.Xml.Linq.dll": { + "Size": 34368 }, - "res/anim/btn_radio_to_off_mtrl_dot_group_animation.xml": { - "Size": 1656 + "assemblies/Xamarin.AndroidX.Activity.dll": { + "Size": 7686 }, - "res/anim/btn_radio_to_off_mtrl_ring_outer_animation.xml": { - "Size": 1656 + "assemblies/Xamarin.AndroidX.AppCompat.dll": { + "Size": 124577 }, - "res/anim/btn_radio_to_off_mtrl_ring_outer_path_animation.xml": { - "Size": 1028 + "assemblies/Xamarin.AndroidX.AppCompat.Resources.dll": { + "Size": 6649 }, - "res/anim/btn_radio_to_on_mtrl_dot_group_animation.xml": { - "Size": 1656 + "assemblies/Xamarin.AndroidX.CardView.dll": { + "Size": 7355 }, - "res/anim/btn_radio_to_on_mtrl_ring_outer_animation.xml": { - "Size": 1656 + "assemblies/Xamarin.AndroidX.CoordinatorLayout.dll": { + "Size": 18262 }, - "res/anim/btn_radio_to_on_mtrl_ring_outer_path_animation.xml": { - "Size": 1028 + "assemblies/Xamarin.AndroidX.Core.dll": { + "Size": 131922 }, - "res/anim/design_bottom_sheet_slide_in.xml": { - "Size": 616 + "assemblies/Xamarin.AndroidX.DrawerLayout.dll": { + "Size": 15433 }, - "res/anim/design_bottom_sheet_slide_out.xml": { - "Size": 616 + "assemblies/Xamarin.AndroidX.Fragment.dll": { + "Size": 43119 }, - "res/anim/design_snackbar_in.xml": { - "Size": 312 + "assemblies/Xamarin.AndroidX.Legacy.Support.Core.UI.dll": { + "Size": 6705 }, - "res/anim/design_snackbar_out.xml": { - "Size": 312 + "assemblies/Xamarin.AndroidX.Lifecycle.Common.dll": { + "Size": 7053 }, - "res/anim/enterfromleft.xml": { - "Size": 640 + "assemblies/Xamarin.AndroidX.Lifecycle.LiveData.Core.dll": { + "Size": 7185 }, - "res/anim/enterfromright.xml": { - "Size": 468 + "assemblies/Xamarin.AndroidX.Lifecycle.ViewModel.dll": { + "Size": 4865 }, - "res/anim/exittoleft.xml": { - "Size": 640 + "assemblies/Xamarin.AndroidX.Loader.dll": { + "Size": 13574 }, - "res/anim/exittoright.xml": { - "Size": 468 + "assemblies/Xamarin.AndroidX.RecyclerView.dll": { + "Size": 102425 }, - "res/anim-v21/design_bottom_sheet_slide_in.xml": { - "Size": 616 + "assemblies/Xamarin.AndroidX.SavedState.dll": { + "Size": 6260 }, - "res/anim-v21/design_bottom_sheet_slide_out.xml": { - "Size": 616 + "assemblies/Xamarin.AndroidX.SwipeRefreshLayout.dll": { + "Size": 11260 }, - "res/animator/design_fab_hide_motion_spec.xml": { - "Size": 796 + "assemblies/Xamarin.AndroidX.ViewPager.dll": { + "Size": 19420 }, - "res/animator/design_fab_show_motion_spec.xml": { - "Size": 796 + "assemblies/Xamarin.Forms.Core.dll": { + "Size": 471882 }, - "res/animator/mtrl_btn_state_list_anim.xml": { - "Size": 2624 + "assemblies/Xamarin.Forms.Performance.Integration.dll": { + "Size": 21996 }, - "res/animator-v19/mtrl_btn_state_list_anim.xml": { - "Size": 2664 + "assemblies/Xamarin.Forms.Performance.Integration.Droid.dll": { + "Size": 114909 }, - "res/animator/mtrl_btn_unelevated_state_list_anim.xml": { - "Size": 120 + "assemblies/Xamarin.Forms.Platform.Android.dll": { + "Size": 367732 }, - "res/animator/mtrl_chip_state_list_anim.xml": { - "Size": 1072 + "assemblies/Xamarin.Forms.Platform.dll": { + "Size": 56584 }, - "res/animator/mtrl_fab_hide_motion_spec.xml": { - "Size": 796 + "assemblies/Xamarin.Forms.Xaml.dll": { + "Size": 55027 }, - "res/animator/mtrl_fab_show_motion_spec.xml": { - "Size": 796 + "assemblies/Xamarin.Google.Android.Material.dll": { + "Size": 43499 }, - "res/animator/mtrl_fab_transformation_sheet_collapse_spec.xml": { - "Size": 1888 + "classes.dex": { + "Size": 2473052 }, - "res/animator/mtrl_fab_transformation_sheet_expand_spec.xml": { - "Size": 1888 + "lib/armeabi-v7a/libmono-btls-shared.so": { + "Size": 1112688 }, - "res/animator-v21/design_appbar_state_list_animator.xml": { - "Size": 1216 + "lib/armeabi-v7a/libmono-native.so": { + "Size": 736396 }, - "res/color/abc_background_cache_hint_selector_material_dark.xml": { - "Size": 468 + "lib/armeabi-v7a/libmonodroid.so": { + "Size": 229052 }, - "res/color/abc_background_cache_hint_selector_material_light.xml": { - "Size": 468 + "lib/armeabi-v7a/libmonosgen-2.0.so": { + "Size": 4456332 }, - "res/color/abc_btn_colored_borderless_text_material.xml": { - "Size": 604 + "lib/armeabi-v7a/libxa-internal-api.so": { + "Size": 48844 }, - "res/color/abc_btn_colored_text_material.xml": { - "Size": 604 + "lib/armeabi-v7a/libxamarin-app.so": { + "Size": 136376 }, - "res/color/abc_hint_foreground_material_dark.xml": { - "Size": 564 + "lib/x86/libmono-btls-shared.so": { + "Size": 1459584 }, - "res/color/abc_hint_foreground_material_light.xml": { - "Size": 564 + "lib/x86/libmono-native.so": { + "Size": 803352 }, - "res/color/abc_primary_text_disable_only_material_dark.xml": { - "Size": 464 + "lib/x86/libmonodroid.so": { + "Size": 297720 }, - "res/color/abc_primary_text_disable_only_material_light.xml": { - "Size": 464 + "lib/x86/libmonosgen-2.0.so": { + "Size": 4212220 }, - "res/color/abc_primary_text_material_dark.xml": { - "Size": 464 + "lib/x86/libxa-internal-api.so": { + "Size": 61112 }, - "res/color/abc_primary_text_material_light.xml": { - "Size": 464 + "lib/x86/libxamarin-app.so": { + "Size": 134612 }, - "res/color/abc_search_url_text.xml": { - "Size": 588 + "META-INF/android.support.design_material.version": { + "Size": 12 }, - "res/color/abc_secondary_text_material_dark.xml": { - "Size": 464 + "META-INF/ANDROIDD.RSA": { + "Size": 1205 }, - "res/color/abc_secondary_text_material_light.xml": { - "Size": 464 + "META-INF/ANDROIDD.SF": { + "Size": 67501 }, - "res/color/abc_tint_btn_checkable.xml": { - "Size": 728 + "META-INF/androidx.activity_activity.version": { + "Size": 6 }, - "res/color/abc_tint_default.xml": { - "Size": 1224 + "META-INF/androidx.appcompat_appcompat-resources.version": { + "Size": 6 }, - "res/color/abc_tint_edittext.xml": { - "Size": 772 + "META-INF/androidx.appcompat_appcompat.version": { + "Size": 6 }, - "res/color/abc_tint_seek_thumb.xml": { - "Size": 604 + "META-INF/androidx.arch.core_core-runtime.version": { + "Size": 6 }, - "res/color/abc_tint_spinner.xml": { - "Size": 772 + "META-INF/androidx.asynclayoutinflater_asynclayoutinflater.version": { + "Size": 6 }, - "res/color/abc_tint_switch_track.xml": { - "Size": 768 + "META-INF/androidx.browser_browser.version": { + "Size": 6 }, - "res/color/design_error.xml": { - "Size": 464 + "META-INF/androidx.cardview_cardview.version": { + "Size": 6 }, - "res/color/design_tint_password_toggle.xml": { - "Size": 480 + "META-INF/androidx.coordinatorlayout_coordinatorlayout.version": { + "Size": 6 }, - "res/color/mtrl_bottom_nav_colored_item_tint.xml": { - "Size": 684 + "META-INF/androidx.core_core.version": { + "Size": 6 }, - "res/color/mtrl_bottom_nav_item_tint.xml": { - "Size": 684 + "META-INF/androidx.cursoradapter_cursoradapter.version": { + "Size": 6 }, - "res/color/mtrl_btn_bg_color_selector.xml": { - "Size": 464 + "META-INF/androidx.customview_customview.version": { + "Size": 6 }, - "res/color/mtrl_btn_ripple_color.xml": { - "Size": 948 + "META-INF/androidx.documentfile_documentfile.version": { + "Size": 6 }, - "res/color/mtrl_btn_stroke_color_selector.xml": { - "Size": 376 + "META-INF/androidx.drawerlayout_drawerlayout.version": { + "Size": 6 }, - "res/color/mtrl_btn_text_btn_ripple_color.xml": { - "Size": 948 + "META-INF/androidx.fragment_fragment.version": { + "Size": 6 }, - "res/color/mtrl_btn_text_color_selector.xml": { - "Size": 464 + "META-INF/androidx.interpolator_interpolator.version": { + "Size": 6 }, - "res/color/mtrl_chip_background_color.xml": { - "Size": 608 + "META-INF/androidx.legacy_legacy-support-core-ui.version": { + "Size": 6 }, - "res/color/mtrl_chip_close_icon_tint.xml": { - "Size": 1092 + "META-INF/androidx.legacy_legacy-support-core-utils.version": { + "Size": 6 }, - "res/color/mtrl_chip_ripple_color.xml": { - "Size": 948 + "META-INF/androidx.legacy_legacy-support-v4.version": { + "Size": 6 }, - "res/color/mtrl_chip_text_color.xml": { - "Size": 464 + "META-INF/androidx.lifecycle_lifecycle-livedata-core.version": { + "Size": 6 }, - "res/color/mtrl_fab_ripple_color.xml": { - "Size": 948 + "META-INF/androidx.lifecycle_lifecycle-livedata.version": { + "Size": 6 }, - "res/color/mtrl_tabs_colored_ripple_color.xml": { - "Size": 948 + "META-INF/androidx.lifecycle_lifecycle-runtime.version": { + "Size": 6 }, - "res/color/mtrl_tabs_icon_color_selector.xml": { - "Size": 464 + "META-INF/androidx.lifecycle_lifecycle-viewmodel.version": { + "Size": 6 }, - "res/color/mtrl_tabs_icon_color_selector_colored.xml": { - "Size": 464 + "META-INF/androidx.loader_loader.version": { + "Size": 6 }, - "res/color/mtrl_tabs_legacy_text_color_selector.xml": { - "Size": 464 + "META-INF/androidx.localbroadcastmanager_localbroadcastmanager.version": { + "Size": 6 }, - "res/color/mtrl_tabs_ripple_color.xml": { - "Size": 1672 + "META-INF/androidx.media_media.version": { + "Size": 6 }, - "res/color/mtrl_text_btn_text_color_selector.xml": { - "Size": 464 + "META-INF/androidx.print_print.version": { + "Size": 6 }, - "res/color/switch_thumb_material_dark.xml": { - "Size": 464 + "META-INF/androidx.recyclerview_recyclerview.version": { + "Size": 6 }, - "res/color/switch_thumb_material_light.xml": { - "Size": 464 + "META-INF/androidx.savedstate_savedstate.version": { + "Size": 6 + }, + "META-INF/androidx.slidingpanelayout_slidingpanelayout.version": { + "Size": 6 + }, + "META-INF/androidx.swiperefreshlayout_swiperefreshlayout.version": { + "Size": 6 + }, + "META-INF/androidx.transition_transition.version": { + "Size": 6 + }, + "META-INF/androidx.vectordrawable_vectordrawable-animated.version": { + "Size": 6 + }, + "META-INF/androidx.vectordrawable_vectordrawable.version": { + "Size": 6 + }, + "META-INF/androidx.versionedparcelable_versionedparcelable.version": { + "Size": 6 + }, + "META-INF/androidx.viewpager_viewpager.version": { + "Size": 6 + }, + "META-INF/com.google.android.material_material.version": { + "Size": 10 + }, + "META-INF/MANIFEST.MF": { + "Size": 67393 + }, + "META-INF/proguard/androidx-annotations.pro": { + "Size": 339 + }, + "res/anim-v21/design_bottom_sheet_slide_in.xml": { + "Size": 616 + }, + "res/anim-v21/design_bottom_sheet_slide_out.xml": { + "Size": 616 + }, + "res/anim/abc_fade_in.xml": { + "Size": 388 + }, + "res/anim/abc_fade_out.xml": { + "Size": 388 + }, + "res/anim/abc_grow_fade_in_from_bottom.xml": { + "Size": 852 + }, + "res/anim/abc_popup_enter.xml": { + "Size": 508 + }, + "res/anim/abc_popup_exit.xml": { + "Size": 508 + }, + "res/anim/abc_shrink_fade_out_from_bottom.xml": { + "Size": 852 + }, + "res/anim/abc_slide_in_bottom.xml": { + "Size": 396 + }, + "res/anim/abc_slide_in_top.xml": { + "Size": 396 + }, + "res/anim/abc_slide_out_bottom.xml": { + "Size": 396 + }, + "res/anim/abc_slide_out_top.xml": { + "Size": 396 + }, + "res/anim/abc_tooltip_enter.xml": { + "Size": 388 + }, + "res/anim/abc_tooltip_exit.xml": { + "Size": 388 + }, + "res/anim/btn_checkbox_to_checked_box_inner_merged_animation.xml": { + "Size": 2124 + }, + "res/anim/btn_checkbox_to_checked_box_outer_merged_animation.xml": { + "Size": 2780 + }, + "res/anim/btn_checkbox_to_checked_icon_null_animation.xml": { + "Size": 1196 + }, + "res/anim/btn_checkbox_to_unchecked_box_inner_merged_animation.xml": { + "Size": 2360 + }, + "res/anim/btn_checkbox_to_unchecked_check_path_merged_animation.xml": { + "Size": 2520 + }, + "res/anim/btn_checkbox_to_unchecked_icon_null_animation.xml": { + "Size": 1196 + }, + "res/anim/btn_radio_to_off_mtrl_dot_group_animation.xml": { + "Size": 1656 + }, + "res/anim/btn_radio_to_off_mtrl_ring_outer_animation.xml": { + "Size": 1656 + }, + "res/anim/btn_radio_to_off_mtrl_ring_outer_path_animation.xml": { + "Size": 1028 + }, + "res/anim/btn_radio_to_on_mtrl_dot_group_animation.xml": { + "Size": 1656 + }, + "res/anim/btn_radio_to_on_mtrl_ring_outer_animation.xml": { + "Size": 1656 + }, + "res/anim/btn_radio_to_on_mtrl_ring_outer_path_animation.xml": { + "Size": 1028 + }, + "res/anim/design_bottom_sheet_slide_in.xml": { + "Size": 616 + }, + "res/anim/design_bottom_sheet_slide_out.xml": { + "Size": 616 + }, + "res/anim/design_snackbar_in.xml": { + "Size": 312 + }, + "res/anim/design_snackbar_out.xml": { + "Size": 312 + }, + "res/anim/enterfromleft.xml": { + "Size": 640 + }, + "res/anim/enterfromright.xml": { + "Size": 468 + }, + "res/anim/exittoleft.xml": { + "Size": 640 + }, + "res/anim/exittoright.xml": { + "Size": 468 + }, + "res/animator-v19/mtrl_btn_state_list_anim.xml": { + "Size": 2664 + }, + "res/animator-v21/design_appbar_state_list_animator.xml": { + "Size": 1216 + }, + "res/animator/design_fab_hide_motion_spec.xml": { + "Size": 796 + }, + "res/animator/design_fab_show_motion_spec.xml": { + "Size": 796 + }, + "res/animator/mtrl_btn_state_list_anim.xml": { + "Size": 2624 + }, + "res/animator/mtrl_btn_unelevated_state_list_anim.xml": { + "Size": 120 + }, + "res/animator/mtrl_chip_state_list_anim.xml": { + "Size": 1072 + }, + "res/animator/mtrl_fab_hide_motion_spec.xml": { + "Size": 796 + }, + "res/animator/mtrl_fab_show_motion_spec.xml": { + "Size": 796 + }, + "res/animator/mtrl_fab_transformation_sheet_collapse_spec.xml": { + "Size": 1888 + }, + "res/animator/mtrl_fab_transformation_sheet_expand_spec.xml": { + "Size": 1888 }, "res/color-v21/abc_btn_colored_borderless_text_material.xml": { "Size": 464 @@ -295,257 +460,344 @@ "res/color-v23/design_tint_password_toggle.xml": { "Size": 376 }, - "res/drawable/abc_btn_borderless_material.xml": { - "Size": 588 + "res/color/abc_background_cache_hint_selector_material_dark.xml": { + "Size": 468 }, - "res/drawable/abc_btn_check_material.xml": { + "res/color/abc_background_cache_hint_selector_material_light.xml": { + "Size": 468 + }, + "res/color/abc_btn_colored_borderless_text_material.xml": { + "Size": 604 + }, + "res/color/abc_btn_colored_text_material.xml": { + "Size": 604 + }, + "res/color/abc_hint_foreground_material_dark.xml": { + "Size": 564 + }, + "res/color/abc_hint_foreground_material_light.xml": { + "Size": 564 + }, + "res/color/abc_primary_text_disable_only_material_dark.xml": { "Size": 464 }, - "res/drawable/abc_btn_check_material_anim.xml": { - "Size": 816 + "res/color/abc_primary_text_disable_only_material_light.xml": { + "Size": 464 }, - "res/drawable/abc_btn_colored_material.xml": { - "Size": 344 + "res/color/abc_primary_text_material_dark.xml": { + "Size": 464 }, - "res/drawable/abc_btn_default_mtrl_shape.xml": { - "Size": 932 + "res/color/abc_primary_text_material_light.xml": { + "Size": 464 }, - "res/drawable/abc_btn_radio_material.xml": { + "res/color/abc_search_url_text.xml": { + "Size": 588 + }, + "res/color/abc_secondary_text_material_dark.xml": { "Size": 464 }, - "res/drawable/abc_btn_radio_material_anim.xml": { - "Size": 816 + "res/color/abc_secondary_text_material_light.xml": { + "Size": 464 }, - "res/drawable/abc_cab_background_internal_bg.xml": { - "Size": 372 + "res/color/abc_tint_btn_checkable.xml": { + "Size": 728 }, - "res/drawable/abc_cab_background_top_material.xml": { - "Size": 336 + "res/color/abc_tint_default.xml": { + "Size": 1224 }, - "res/drawable/abc_dialog_material_background.xml": { - "Size": 716 + "res/color/abc_tint_edittext.xml": { + "Size": 772 }, - "res/drawable/abc_edit_text_material.xml": { - "Size": 868 + "res/color/abc_tint_seek_thumb.xml": { + "Size": 604 }, - "res/drawable/abc_ic_ab_back_material.xml": { - "Size": 692 + "res/color/abc_tint_spinner.xml": { + "Size": 772 }, - "res/drawable/abc_ic_arrow_drop_right_black_24dp.xml": { - "Size": 1000 + "res/color/abc_tint_switch_track.xml": { + "Size": 768 }, - "res/drawable/abc_ic_clear_material.xml": { + "res/color/design_error.xml": { + "Size": 464 + }, + "res/color/design_tint_password_toggle.xml": { + "Size": 480 + }, + "res/color/mtrl_bottom_nav_colored_item_tint.xml": { "Size": 684 }, - "res/drawable/abc_ic_go_search_api_material.xml": { - "Size": 640 + "res/color/mtrl_bottom_nav_item_tint.xml": { + "Size": 684 }, - "res/drawable/abc_ic_menu_overflow_material.xml": { - "Size": 792 + "res/color/mtrl_btn_bg_color_selector.xml": { + "Size": 464 }, - "res/drawable/abc_ic_search_api_material.xml": { - "Size": 812 + "res/color/mtrl_btn_ripple_color.xml": { + "Size": 948 }, - "res/drawable/abc_ic_voice_search_api_material.xml": { - "Size": 828 + "res/color/mtrl_btn_stroke_color_selector.xml": { + "Size": 376 }, - "res/drawable/abc_item_background_holo_dark.xml": { - "Size": 1012 + "res/color/mtrl_btn_text_btn_ripple_color.xml": { + "Size": 948 }, - "res/drawable/abc_item_background_holo_light.xml": { - "Size": 1012 + "res/color/mtrl_btn_text_color_selector.xml": { + "Size": 464 }, - "res/drawable/abc_list_divider_material.xml": { - "Size": 480 + "res/color/mtrl_chip_background_color.xml": { + "Size": 608 }, - "res/drawable/abc_list_selector_background_transition_holo_dark.xml": { - "Size": 424 + "res/color/mtrl_chip_close_icon_tint.xml": { + "Size": 1092 }, - "res/drawable/abc_list_selector_background_transition_holo_light.xml": { - "Size": 424 + "res/color/mtrl_chip_ripple_color.xml": { + "Size": 948 }, - "res/drawable/abc_list_selector_holo_dark.xml": { - "Size": 1064 + "res/color/mtrl_chip_text_color.xml": { + "Size": 464 }, - "res/drawable/abc_list_selector_holo_light.xml": { - "Size": 1064 + "res/color/mtrl_fab_ripple_color.xml": { + "Size": 948 }, - "res/drawable/abc_ratingbar_indicator_material.xml": { - "Size": 664 + "res/color/mtrl_tabs_colored_ripple_color.xml": { + "Size": 948 }, - "res/drawable-v21/abc_ratingbar_indicator_material.xml": { - "Size": 704 + "res/color/mtrl_tabs_icon_color_selector_colored.xml": { + "Size": 464 }, - "res/drawable/abc_ratingbar_material.xml": { - "Size": 664 + "res/color/mtrl_tabs_icon_color_selector.xml": { + "Size": 464 }, - "res/drawable-v21/abc_ratingbar_material.xml": { - "Size": 704 + "res/color/mtrl_tabs_legacy_text_color_selector.xml": { + "Size": 464 }, - "res/drawable/abc_ratingbar_small_material.xml": { - "Size": 664 + "res/color/mtrl_tabs_ripple_color.xml": { + "Size": 1672 }, - "res/drawable-v21/abc_ratingbar_small_material.xml": { - "Size": 704 + "res/color/mtrl_text_btn_text_color_selector.xml": { + "Size": 464 }, - "res/drawable/abc_seekbar_thumb_material.xml": { - "Size": 1100 + "res/color/switch_thumb_material_dark.xml": { + "Size": 464 }, - "res/drawable/abc_seekbar_tick_mark_material.xml": { - "Size": 516 + "res/color/switch_thumb_material_light.xml": { + "Size": 464 }, - "res/drawable/abc_seekbar_track_material.xml": { - "Size": 1408 + "res/drawable-anydpi-v21/design_ic_visibility_off.xml": { + "Size": 1144 }, - "res/drawable/abc_spinner_textfield_background_material.xml": { - "Size": 1160 + "res/drawable-anydpi-v21/design_ic_visibility.xml": { + "Size": 540 }, - "res/drawable/abc_switch_thumb_material.xml": { + "res/drawable-hdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png": { + "Size": 272 + }, + "res/drawable-hdpi-v4/abc_btn_check_to_on_mtrl_000.png": { + "Size": 227 + }, + "res/drawable-hdpi-v4/abc_btn_check_to_on_mtrl_015.png": { + "Size": 404 + }, + "res/drawable-hdpi-v4/abc_btn_radio_to_on_mtrl_000.png": { "Size": 464 }, - "res/drawable/abc_tab_indicator_material.xml": { - "Size": 468 + "res/drawable-hdpi-v4/abc_btn_radio_to_on_mtrl_015.png": { + "Size": 563 }, - "res/drawable/abc_text_cursor_material.xml": { - "Size": 516 + "res/drawable-hdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png": { + "Size": 1096 }, - "res/drawable/abc_textfield_search_material.xml": { - "Size": 756 + "res/drawable-hdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png": { + "Size": 1243 }, - "res/drawable/abc_vector_test.xml": { - "Size": 612 + "res/drawable-hdpi-v4/abc_cab_background_top_mtrl_alpha.9.png": { + "Size": 226 }, - "res/drawable/btn_checkbox_checked_mtrl.xml": { - "Size": 2688 + "res/drawable-hdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png": { + "Size": 171 }, - "res/drawable/btn_checkbox_checked_to_unchecked_mtrl_animation.xml": { - "Size": 688 + "res/drawable-hdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png": { + "Size": 202 }, - "res/drawable/btn_checkbox_unchecked_mtrl.xml": { - "Size": 2660 + "res/drawable-hdpi-v4/abc_ic_menu_cut_mtrl_alpha.png": { + "Size": 404 }, - "res/drawable/btn_checkbox_unchecked_to_checked_mtrl_animation.xml": { - "Size": 688 + "res/drawable-hdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png": { + "Size": 226 }, - "res/drawable/btn_radio_off_mtrl.xml": { - "Size": 1728 + "res/drawable-hdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png": { + "Size": 215 }, - "res/drawable/btn_radio_off_to_on_mtrl_animation.xml": { - "Size": 680 + "res/drawable-hdpi-v4/abc_ic_menu_share_mtrl_alpha.png": { + "Size": 389 }, - "res/drawable/btn_radio_on_mtrl.xml": { - "Size": 1656 + "res/drawable-hdpi-v4/abc_ic_star_black_16dp.png": { + "Size": 263 }, - "res/drawable/btn_radio_on_to_off_mtrl_animation.xml": { - "Size": 680 + "res/drawable-hdpi-v4/abc_ic_star_black_36dp.png": { + "Size": 522 }, - "res/drawable/design_bottom_navigation_item_background.xml": { - "Size": 784 + "res/drawable-hdpi-v4/abc_ic_star_black_48dp.png": { + "Size": 668 }, - "res/drawable/design_fab_background.xml": { - "Size": 372 + "res/drawable-hdpi-v4/abc_ic_star_half_black_16dp.png": { + "Size": 197 }, - "res/drawable/design_password_eye.xml": { - "Size": 464 + "res/drawable-hdpi-v4/abc_ic_star_half_black_36dp.png": { + "Size": 328 }, - "res/drawable/design_snackbar_background.xml": { + "res/drawable-hdpi-v4/abc_ic_star_half_black_48dp.png": { + "Size": 431 + }, + "res/drawable-hdpi-v4/abc_list_divider_mtrl_alpha.9.png": { + "Size": 167 + }, + "res/drawable-hdpi-v4/abc_list_focused_holo.9.png": { + "Size": 244 + }, + "res/drawable-hdpi-v4/abc_list_longpressed_holo.9.png": { + "Size": 212 + }, + "res/drawable-hdpi-v4/abc_list_pressed_holo_dark.9.png": { + "Size": 208 + }, + "res/drawable-hdpi-v4/abc_list_pressed_holo_light.9.png": { + "Size": 208 + }, + "res/drawable-hdpi-v4/abc_list_selector_disabled_holo_dark.9.png": { + "Size": 228 + }, + "res/drawable-hdpi-v4/abc_list_selector_disabled_holo_light.9.png": { + "Size": 229 + }, + "res/drawable-hdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png": { + "Size": 738 + }, + "res/drawable-hdpi-v4/abc_popup_background_mtrl_mult.9.png": { + "Size": 1098 + }, + "res/drawable-hdpi-v4/abc_scrubber_control_off_mtrl_alpha.png": { + "Size": 201 + }, + "res/drawable-hdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png": { + "Size": 196 + }, + "res/drawable-hdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png": { + "Size": 272 + }, + "res/drawable-hdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png": { + "Size": 205 + }, + "res/drawable-hdpi-v4/abc_scrubber_track_mtrl_alpha.9.png": { + "Size": 196 + }, + "res/drawable-hdpi-v4/abc_spinner_mtrl_am_alpha.9.png": { + "Size": 345 + }, + "res/drawable-hdpi-v4/abc_switch_track_mtrl_alpha.9.png": { "Size": 484 }, - "res/drawable/ic_mtrl_chip_checked_black.xml": { - "Size": 600 + "res/drawable-hdpi-v4/abc_tab_indicator_mtrl_alpha.9.png": { + "Size": 190 + }, + "res/drawable-hdpi-v4/abc_text_select_handle_left_mtrl_dark.png": { + "Size": 278 + }, + "res/drawable-hdpi-v4/abc_text_select_handle_left_mtrl_light.png": { + "Size": 278 }, - "res/drawable/ic_mtrl_chip_checked_circle.xml": { - "Size": 940 + "res/drawable-hdpi-v4/abc_text_select_handle_middle_mtrl_dark.png": { + "Size": 398 }, - "res/drawable/ic_mtrl_chip_close_circle.xml": { - "Size": 808 + "res/drawable-hdpi-v4/abc_text_select_handle_middle_mtrl_light.png": { + "Size": 396 }, - "res/drawable/icon.png": { - "Size": 1358 + "res/drawable-hdpi-v4/abc_text_select_handle_right_mtrl_dark.png": { + "Size": 263 }, - "res/drawable/mtrl_snackbar_background.xml": { - "Size": 484 + "res/drawable-hdpi-v4/abc_text_select_handle_right_mtrl_light.png": { + "Size": 262 }, - "res/drawable/mtrl_tabs_default_indicator.xml": { - "Size": 628 + "res/drawable-hdpi-v4/abc_textfield_activated_mtrl_alpha.9.png": { + "Size": 186 }, - "res/drawable/navigation_empty_icon.xml": { - "Size": 516 + "res/drawable-hdpi-v4/abc_textfield_default_mtrl_alpha.9.png": { + "Size": 192 }, - "res/drawable/notification_bg.xml": { - "Size": 532 + "res/drawable-hdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png": { + "Size": 178 }, - "res/drawable/notification_bg_low.xml": { - "Size": 532 + "res/drawable-hdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png": { + "Size": 178 }, - "res/drawable/notification_icon_background.xml": { - "Size": 372 + "res/drawable-hdpi-v4/design_ic_visibility_off.png": { + "Size": 507 }, - "res/drawable/notification_tile_bg.xml": { - "Size": 304 + "res/drawable-hdpi-v4/design_ic_visibility.png": { + "Size": 470 }, - "res/drawable/tooltip_frame_dark.xml": { - "Size": 484 + "res/drawable-hdpi-v4/icon.png": { + "Size": 1358 }, - "res/drawable/tooltip_frame_light.xml": { - "Size": 484 + "res/drawable-hdpi-v4/notification_bg_low_normal.9.png": { + "Size": 212 }, - "res/drawable/xamarin_logo.png": { - "Size": 9794 + "res/drawable-hdpi-v4/notification_bg_low_pressed.9.png": { + "Size": 225 }, - "res/drawable-watch-v20/abc_dialog_material_background.xml": { - "Size": 372 + "res/drawable-hdpi-v4/notification_bg_normal_pressed.9.png": { + "Size": 225 }, - "res/drawable-v21/$avd_hide_password__0.xml": { - "Size": 1176 + "res/drawable-hdpi-v4/notification_bg_normal.9.png": { + "Size": 212 }, - "res/drawable-v21/$avd_hide_password__1.xml": { - "Size": 592 + "res/drawable-hdpi-v4/notify_panel_notification_icon_bg.png": { + "Size": 107 }, - "res/drawable-v21/$avd_hide_password__2.xml": { - "Size": 556 + "res/drawable-ldrtl-hdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png": { + "Size": 199 }, - "res/drawable-v21/$avd_show_password__0.xml": { - "Size": 1136 + "res/drawable-ldrtl-hdpi-v17/abc_ic_menu_cut_mtrl_alpha.png": { + "Size": 400 }, - "res/drawable-v21/$avd_show_password__1.xml": { - "Size": 592 + "res/drawable-ldrtl-hdpi-v17/abc_spinner_mtrl_am_alpha.9.png": { + "Size": 345 }, - "res/drawable-v21/$avd_show_password__2.xml": { - "Size": 556 + "res/drawable-ldrtl-mdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png": { + "Size": 127 }, - "res/drawable-v21/abc_action_bar_item_background_material.xml": { - "Size": 264 + "res/drawable-ldrtl-mdpi-v17/abc_ic_menu_cut_mtrl_alpha.png": { + "Size": 253 }, - "res/drawable-v21/abc_btn_colored_material.xml": { - "Size": 1716 + "res/drawable-ldrtl-mdpi-v17/abc_spinner_mtrl_am_alpha.9.png": { + "Size": 318 }, - "res/drawable-v21/abc_dialog_material_background.xml": { - "Size": 716 + "res/drawable-ldrtl-xhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png": { + "Size": 178 }, - "res/drawable-v21/abc_edit_text_material.xml": { - "Size": 1172 + "res/drawable-ldrtl-xhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png": { + "Size": 494 }, - "res/drawable-v21/abc_list_divider_material.xml": { - "Size": 516 + "res/drawable-ldrtl-xhdpi-v17/abc_spinner_mtrl_am_alpha.9.png": { + "Size": 417 }, - "res/drawable-v21/avd_hide_password.xml": { - "Size": 660 + "res/drawable-ldrtl-xxhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png": { + "Size": 260 }, - "res/drawable-v21/avd_show_password.xml": { - "Size": 660 + "res/drawable-ldrtl-xxhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png": { + "Size": 705 }, - "res/drawable-v21/design_bottom_navigation_item_background.xml": { - "Size": 264 + "res/drawable-ldrtl-xxhdpi-v17/abc_spinner_mtrl_am_alpha.9.png": { + "Size": 525 }, - "res/drawable-v21/design_password_eye.xml": { - "Size": 816 + "res/drawable-ldrtl-xxxhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png": { + "Size": 325 }, - "res/drawable-v21/notification_action_background.xml": { - "Size": 1180 + "res/drawable-ldrtl-xxxhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png": { + "Size": 905 }, - "res/drawable-v23/abc_control_background_material.xml": { - "Size": 304 + "res/drawable-ldrtl-xxxhdpi-v17/abc_spinner_mtrl_am_alpha.9.png": { + "Size": 437 }, "res/drawable-mdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png": { "Size": 267 @@ -631,266 +883,146 @@ "res/drawable-mdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png": { "Size": 541 }, - "res/drawable-mdpi-v4/abc_popup_background_mtrl_mult.9.png": { - "Size": 776 - }, - "res/drawable-mdpi-v4/abc_scrubber_control_off_mtrl_alpha.png": { - "Size": 159 - }, - "res/drawable-mdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png": { - "Size": 145 - }, - "res/drawable-mdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png": { - "Size": 197 - }, - "res/drawable-mdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png": { - "Size": 203 - }, - "res/drawable-mdpi-v4/abc_scrubber_track_mtrl_alpha.9.png": { - "Size": 194 - }, - "res/drawable-mdpi-v4/abc_spinner_mtrl_am_alpha.9.png": { - "Size": 327 - }, - "res/drawable-mdpi-v4/abc_switch_track_mtrl_alpha.9.png": { - "Size": 395 - }, - "res/drawable-mdpi-v4/abc_tab_indicator_mtrl_alpha.9.png": { - "Size": 186 - }, - "res/drawable-mdpi-v4/abc_text_select_handle_left_mtrl_dark.png": { - "Size": 203 - }, - "res/drawable-mdpi-v4/abc_text_select_handle_left_mtrl_light.png": { - "Size": 203 - }, - "res/drawable-mdpi-v4/abc_text_select_handle_middle_mtrl_dark.png": { - "Size": 311 - }, - "res/drawable-mdpi-v4/abc_text_select_handle_middle_mtrl_light.png": { - "Size": 310 - }, - "res/drawable-mdpi-v4/abc_text_select_handle_right_mtrl_dark.png": { - "Size": 187 - }, - "res/drawable-mdpi-v4/abc_text_select_handle_right_mtrl_light.png": { - "Size": 186 - }, - "res/drawable-mdpi-v4/abc_textfield_activated_mtrl_alpha.9.png": { - "Size": 181 - }, - "res/drawable-mdpi-v4/abc_textfield_default_mtrl_alpha.9.png": { - "Size": 178 - }, - "res/drawable-mdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png": { - "Size": 178 - }, - "res/drawable-mdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png": { - "Size": 178 - }, - "res/drawable-mdpi-v4/design_ic_visibility.png": { - "Size": 309 - }, - "res/drawable-mdpi-v4/design_ic_visibility_off.png": { - "Size": 351 - }, - "res/drawable-mdpi-v4/notification_bg_low_normal.9.png": { - "Size": 215 - }, - "res/drawable-mdpi-v4/notification_bg_low_pressed.9.png": { - "Size": 223 - }, - "res/drawable-mdpi-v4/notification_bg_normal.9.png": { - "Size": 215 - }, - "res/drawable-mdpi-v4/notification_bg_normal_pressed.9.png": { - "Size": 223 - }, - "res/drawable-mdpi-v4/notify_panel_notification_icon_bg.png": { - "Size": 98 - }, - "res/drawable-ldrtl-mdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png": { - "Size": 127 - }, - "res/drawable-ldrtl-mdpi-v17/abc_ic_menu_cut_mtrl_alpha.png": { - "Size": 253 - }, - "res/drawable-ldrtl-mdpi-v17/abc_spinner_mtrl_am_alpha.9.png": { - "Size": 318 - }, - "res/drawable-hdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png": { - "Size": 272 - }, - "res/drawable-hdpi-v4/abc_btn_check_to_on_mtrl_000.png": { - "Size": 227 - }, - "res/drawable-hdpi-v4/abc_btn_check_to_on_mtrl_015.png": { - "Size": 404 - }, - "res/drawable-hdpi-v4/abc_btn_radio_to_on_mtrl_000.png": { - "Size": 464 - }, - "res/drawable-hdpi-v4/abc_btn_radio_to_on_mtrl_015.png": { - "Size": 563 - }, - "res/drawable-hdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png": { - "Size": 1096 - }, - "res/drawable-hdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png": { - "Size": 1243 - }, - "res/drawable-hdpi-v4/abc_cab_background_top_mtrl_alpha.9.png": { - "Size": 226 - }, - "res/drawable-hdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png": { - "Size": 171 - }, - "res/drawable-hdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png": { - "Size": 202 - }, - "res/drawable-hdpi-v4/abc_ic_menu_cut_mtrl_alpha.png": { - "Size": 404 - }, - "res/drawable-hdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png": { - "Size": 226 - }, - "res/drawable-hdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png": { - "Size": 215 - }, - "res/drawable-hdpi-v4/abc_ic_menu_share_mtrl_alpha.png": { - "Size": 389 - }, - "res/drawable-hdpi-v4/abc_ic_star_black_16dp.png": { - "Size": 263 + "res/drawable-mdpi-v4/abc_popup_background_mtrl_mult.9.png": { + "Size": 776 }, - "res/drawable-hdpi-v4/abc_ic_star_black_36dp.png": { - "Size": 522 + "res/drawable-mdpi-v4/abc_scrubber_control_off_mtrl_alpha.png": { + "Size": 159 }, - "res/drawable-hdpi-v4/abc_ic_star_black_48dp.png": { - "Size": 668 + "res/drawable-mdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png": { + "Size": 145 }, - "res/drawable-hdpi-v4/abc_ic_star_half_black_16dp.png": { + "res/drawable-mdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png": { "Size": 197 }, - "res/drawable-hdpi-v4/abc_ic_star_half_black_36dp.png": { - "Size": 328 + "res/drawable-mdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png": { + "Size": 203 }, - "res/drawable-hdpi-v4/abc_ic_star_half_black_48dp.png": { - "Size": 431 + "res/drawable-mdpi-v4/abc_scrubber_track_mtrl_alpha.9.png": { + "Size": 194 }, - "res/drawable-hdpi-v4/abc_list_divider_mtrl_alpha.9.png": { - "Size": 167 + "res/drawable-mdpi-v4/abc_spinner_mtrl_am_alpha.9.png": { + "Size": 327 }, - "res/drawable-hdpi-v4/abc_list_focused_holo.9.png": { - "Size": 244 + "res/drawable-mdpi-v4/abc_switch_track_mtrl_alpha.9.png": { + "Size": 395 }, - "res/drawable-hdpi-v4/abc_list_longpressed_holo.9.png": { - "Size": 212 + "res/drawable-mdpi-v4/abc_tab_indicator_mtrl_alpha.9.png": { + "Size": 186 }, - "res/drawable-hdpi-v4/abc_list_pressed_holo_dark.9.png": { - "Size": 208 + "res/drawable-mdpi-v4/abc_text_select_handle_left_mtrl_dark.png": { + "Size": 203 }, - "res/drawable-hdpi-v4/abc_list_pressed_holo_light.9.png": { - "Size": 208 + "res/drawable-mdpi-v4/abc_text_select_handle_left_mtrl_light.png": { + "Size": 203 }, - "res/drawable-hdpi-v4/abc_list_selector_disabled_holo_dark.9.png": { - "Size": 228 + "res/drawable-mdpi-v4/abc_text_select_handle_middle_mtrl_dark.png": { + "Size": 311 }, - "res/drawable-hdpi-v4/abc_list_selector_disabled_holo_light.9.png": { - "Size": 229 + "res/drawable-mdpi-v4/abc_text_select_handle_middle_mtrl_light.png": { + "Size": 310 }, - "res/drawable-hdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png": { - "Size": 738 + "res/drawable-mdpi-v4/abc_text_select_handle_right_mtrl_dark.png": { + "Size": 187 }, - "res/drawable-hdpi-v4/abc_popup_background_mtrl_mult.9.png": { - "Size": 1098 + "res/drawable-mdpi-v4/abc_text_select_handle_right_mtrl_light.png": { + "Size": 186 }, - "res/drawable-hdpi-v4/abc_scrubber_control_off_mtrl_alpha.png": { - "Size": 201 + "res/drawable-mdpi-v4/abc_textfield_activated_mtrl_alpha.9.png": { + "Size": 181 }, - "res/drawable-hdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png": { - "Size": 196 + "res/drawable-mdpi-v4/abc_textfield_default_mtrl_alpha.9.png": { + "Size": 178 }, - "res/drawable-hdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png": { - "Size": 272 + "res/drawable-mdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png": { + "Size": 178 }, - "res/drawable-hdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png": { - "Size": 205 + "res/drawable-mdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png": { + "Size": 178 }, - "res/drawable-hdpi-v4/abc_scrubber_track_mtrl_alpha.9.png": { - "Size": 196 + "res/drawable-mdpi-v4/design_ic_visibility_off.png": { + "Size": 351 }, - "res/drawable-hdpi-v4/abc_spinner_mtrl_am_alpha.9.png": { - "Size": 345 + "res/drawable-mdpi-v4/design_ic_visibility.png": { + "Size": 309 }, - "res/drawable-hdpi-v4/abc_switch_track_mtrl_alpha.9.png": { - "Size": 484 + "res/drawable-mdpi-v4/notification_bg_low_normal.9.png": { + "Size": 215 }, - "res/drawable-hdpi-v4/abc_tab_indicator_mtrl_alpha.9.png": { - "Size": 190 + "res/drawable-mdpi-v4/notification_bg_low_pressed.9.png": { + "Size": 223 }, - "res/drawable-hdpi-v4/abc_text_select_handle_left_mtrl_dark.png": { - "Size": 278 + "res/drawable-mdpi-v4/notification_bg_normal_pressed.9.png": { + "Size": 223 }, - "res/drawable-hdpi-v4/abc_text_select_handle_left_mtrl_light.png": { - "Size": 278 + "res/drawable-mdpi-v4/notification_bg_normal.9.png": { + "Size": 215 }, - "res/drawable-hdpi-v4/abc_text_select_handle_middle_mtrl_dark.png": { - "Size": 398 + "res/drawable-mdpi-v4/notify_panel_notification_icon_bg.png": { + "Size": 98 }, - "res/drawable-hdpi-v4/abc_text_select_handle_middle_mtrl_light.png": { - "Size": 396 + "res/drawable-v21/$avd_hide_password__0.xml": { + "Size": 1176 }, - "res/drawable-hdpi-v4/abc_text_select_handle_right_mtrl_dark.png": { - "Size": 263 + "res/drawable-v21/$avd_hide_password__1.xml": { + "Size": 592 }, - "res/drawable-hdpi-v4/abc_text_select_handle_right_mtrl_light.png": { - "Size": 262 + "res/drawable-v21/$avd_hide_password__2.xml": { + "Size": 556 }, - "res/drawable-hdpi-v4/abc_textfield_activated_mtrl_alpha.9.png": { - "Size": 186 + "res/drawable-v21/$avd_show_password__0.xml": { + "Size": 1136 }, - "res/drawable-hdpi-v4/abc_textfield_default_mtrl_alpha.9.png": { - "Size": 192 + "res/drawable-v21/$avd_show_password__1.xml": { + "Size": 592 }, - "res/drawable-hdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png": { - "Size": 178 + "res/drawable-v21/$avd_show_password__2.xml": { + "Size": 556 }, - "res/drawable-hdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png": { - "Size": 178 + "res/drawable-v21/abc_action_bar_item_background_material.xml": { + "Size": 264 }, - "res/drawable-hdpi-v4/design_ic_visibility.png": { - "Size": 470 + "res/drawable-v21/abc_btn_colored_material.xml": { + "Size": 1716 }, - "res/drawable-hdpi-v4/design_ic_visibility_off.png": { - "Size": 507 + "res/drawable-v21/abc_dialog_material_background.xml": { + "Size": 716 }, - "res/drawable-hdpi-v4/icon.png": { - "Size": 1358 + "res/drawable-v21/abc_edit_text_material.xml": { + "Size": 1172 }, - "res/drawable-hdpi-v4/notification_bg_low_normal.9.png": { - "Size": 212 + "res/drawable-v21/abc_list_divider_material.xml": { + "Size": 516 }, - "res/drawable-hdpi-v4/notification_bg_low_pressed.9.png": { - "Size": 225 + "res/drawable-v21/abc_ratingbar_indicator_material.xml": { + "Size": 704 }, - "res/drawable-hdpi-v4/notification_bg_normal.9.png": { - "Size": 212 + "res/drawable-v21/abc_ratingbar_material.xml": { + "Size": 704 }, - "res/drawable-hdpi-v4/notification_bg_normal_pressed.9.png": { - "Size": 225 + "res/drawable-v21/abc_ratingbar_small_material.xml": { + "Size": 704 }, - "res/drawable-hdpi-v4/notify_panel_notification_icon_bg.png": { - "Size": 107 + "res/drawable-v21/avd_hide_password.xml": { + "Size": 660 }, - "res/drawable-ldrtl-hdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png": { - "Size": 199 + "res/drawable-v21/avd_show_password.xml": { + "Size": 660 }, - "res/drawable-ldrtl-hdpi-v17/abc_ic_menu_cut_mtrl_alpha.png": { - "Size": 400 + "res/drawable-v21/design_bottom_navigation_item_background.xml": { + "Size": 264 }, - "res/drawable-ldrtl-hdpi-v17/abc_spinner_mtrl_am_alpha.9.png": { - "Size": 345 + "res/drawable-v21/design_password_eye.xml": { + "Size": 816 + }, + "res/drawable-v21/notification_action_background.xml": { + "Size": 1180 + }, + "res/drawable-v23/abc_control_background_material.xml": { + "Size": 304 + }, + "res/drawable-watch-v20/abc_dialog_material_background.xml": { + "Size": 372 }, "res/drawable-xhdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png": { "Size": 280 @@ -1033,12 +1165,12 @@ "res/drawable-xhdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png": { "Size": 182 }, - "res/drawable-xhdpi-v4/design_ic_visibility.png": { - "Size": 593 - }, "res/drawable-xhdpi-v4/design_ic_visibility_off.png": { "Size": 629 }, + "res/drawable-xhdpi-v4/design_ic_visibility.png": { + "Size": 593 + }, "res/drawable-xhdpi-v4/icon.png": { "Size": 1140 }, @@ -1048,24 +1180,15 @@ "res/drawable-xhdpi-v4/notification_bg_low_pressed.9.png": { "Size": 252 }, - "res/drawable-xhdpi-v4/notification_bg_normal.9.png": { - "Size": 221 - }, "res/drawable-xhdpi-v4/notification_bg_normal_pressed.9.png": { "Size": 247 }, + "res/drawable-xhdpi-v4/notification_bg_normal.9.png": { + "Size": 221 + }, "res/drawable-xhdpi-v4/notify_panel_notification_icon_bg.png": { "Size": 138 }, - "res/drawable-ldrtl-xhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png": { - "Size": 178 - }, - "res/drawable-ldrtl-xhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png": { - "Size": 494 - }, - "res/drawable-ldrtl-xhdpi-v17/abc_spinner_mtrl_am_alpha.9.png": { - "Size": 417 - }, "res/drawable-xxhdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png": { "Size": 286 }, @@ -1207,24 +1330,15 @@ "res/drawable-xxhdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png": { "Size": 186 }, - "res/drawable-xxhdpi-v4/design_ic_visibility.png": { - "Size": 868 - }, "res/drawable-xxhdpi-v4/design_ic_visibility_off.png": { "Size": 884 }, + "res/drawable-xxhdpi-v4/design_ic_visibility.png": { + "Size": 868 + }, "res/drawable-xxhdpi-v4/icon.png": { "Size": 1647 }, - "res/drawable-ldrtl-xxhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png": { - "Size": 260 - }, - "res/drawable-ldrtl-xxhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png": { - "Size": 705 - }, - "res/drawable-ldrtl-xxhdpi-v17/abc_spinner_mtrl_am_alpha.9.png": { - "Size": 525 - }, "res/drawable-xxxhdpi-v4/abc_btn_check_to_on_mtrl_000.png": { "Size": 275 }, @@ -1303,693 +1417,579 @@ "res/drawable-xxxhdpi-v4/abc_text_select_handle_right_mtrl_light.png": { "Size": 513 }, + "res/drawable-xxxhdpi-v4/design_ic_visibility_off.png": { + "Size": 1201 + }, "res/drawable-xxxhdpi-v4/design_ic_visibility.png": { "Size": 1155 }, - "res/drawable-xxxhdpi-v4/design_ic_visibility_off.png": { - "Size": 1201 + "res/drawable/abc_btn_borderless_material.xml": { + "Size": 588 }, - "res/drawable-ldrtl-xxxhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png": { - "Size": 325 + "res/drawable/abc_btn_check_material_anim.xml": { + "Size": 816 }, - "res/drawable-ldrtl-xxxhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png": { - "Size": 905 + "res/drawable/abc_btn_check_material.xml": { + "Size": 464 }, - "res/drawable-ldrtl-xxxhdpi-v17/abc_spinner_mtrl_am_alpha.9.png": { - "Size": 437 + "res/drawable/abc_btn_colored_material.xml": { + "Size": 344 }, - "res/drawable-anydpi-v21/design_ic_visibility.xml": { - "Size": 540 + "res/drawable/abc_btn_default_mtrl_shape.xml": { + "Size": 932 }, - "res/drawable-anydpi-v21/design_ic_visibility_off.xml": { - "Size": 1144 + "res/drawable/abc_btn_radio_material_anim.xml": { + "Size": 816 }, - "res/interpolator/btn_checkbox_checked_mtrl_animation_interpolator_0.xml": { - "Size": 316 + "res/drawable/abc_btn_radio_material.xml": { + "Size": 464 }, - "res/interpolator/btn_checkbox_checked_mtrl_animation_interpolator_1.xml": { - "Size": 328 + "res/drawable/abc_cab_background_internal_bg.xml": { + "Size": 372 }, - "res/interpolator/btn_checkbox_unchecked_mtrl_animation_interpolator_0.xml": { - "Size": 316 + "res/drawable/abc_cab_background_top_material.xml": { + "Size": 336 }, - "res/interpolator/btn_checkbox_unchecked_mtrl_animation_interpolator_1.xml": { - "Size": 328 + "res/drawable/abc_dialog_material_background.xml": { + "Size": 716 }, - "res/interpolator/btn_radio_to_off_mtrl_animation_interpolator_0.xml": { - "Size": 320 + "res/drawable/abc_edit_text_material.xml": { + "Size": 868 }, - "res/interpolator/btn_radio_to_on_mtrl_animation_interpolator_0.xml": { - "Size": 320 + "res/drawable/abc_ic_ab_back_material.xml": { + "Size": 692 }, - "res/interpolator/fast_out_slow_in.xml": { - "Size": 400 + "res/drawable/abc_ic_arrow_drop_right_black_24dp.xml": { + "Size": 1000 }, - "res/interpolator/mtrl_fast_out_linear_in.xml": { - "Size": 136 + "res/drawable/abc_ic_clear_material.xml": { + "Size": 684 }, - "res/interpolator/mtrl_fast_out_slow_in.xml": { - "Size": 144 + "res/drawable/abc_ic_go_search_api_material.xml": { + "Size": 640 }, - "res/interpolator/mtrl_linear.xml": { - "Size": 132 + "res/drawable/abc_ic_menu_overflow_material.xml": { + "Size": 792 }, - "res/interpolator/mtrl_linear_out_slow_in.xml": { - "Size": 136 + "res/drawable/abc_ic_search_api_material.xml": { + "Size": 812 }, - "res/interpolator-v21/mtrl_fast_out_linear_in.xml": { - "Size": 400 + "res/drawable/abc_ic_voice_search_api_material.xml": { + "Size": 828 }, - "res/interpolator-v21/mtrl_fast_out_slow_in.xml": { - "Size": 400 + "res/drawable/abc_item_background_holo_dark.xml": { + "Size": 1012 }, - "res/interpolator-v21/mtrl_linear_out_slow_in.xml": { - "Size": 400 + "res/drawable/abc_item_background_holo_light.xml": { + "Size": 1012 }, - "res/layout/abc_action_bar_title_item.xml": { - "Size": 872 + "res/drawable/abc_list_divider_material.xml": { + "Size": 480 }, - "res/layout/abc_action_bar_up_container.xml": { - "Size": 440 + "res/drawable/abc_list_selector_background_transition_holo_dark.xml": { + "Size": 424 }, - "res/layout/abc_action_menu_item_layout.xml": { - "Size": 768 + "res/drawable/abc_list_selector_background_transition_holo_light.xml": { + "Size": 424 }, - "res/layout/abc_action_menu_layout.xml": { - "Size": 576 + "res/drawable/abc_list_selector_holo_dark.xml": { + "Size": 1064 }, - "res/layout/abc_action_mode_bar.xml": { - "Size": 464 + "res/drawable/abc_list_selector_holo_light.xml": { + "Size": 1064 }, - "res/layout/abc_action_mode_close_item_material.xml": { - "Size": 748 + "res/drawable/abc_ratingbar_indicator_material.xml": { + "Size": 664 }, - "res/layout-v17/abc_action_mode_close_item_material.xml": { - "Size": 840 + "res/drawable/abc_ratingbar_material.xml": { + "Size": 664 }, - "res/layout/abc_activity_chooser_view.xml": { - "Size": 1684 + "res/drawable/abc_ratingbar_small_material.xml": { + "Size": 664 }, - "res/layout/abc_activity_chooser_view_list_item.xml": { - "Size": 1304 + "res/drawable/abc_seekbar_thumb_material.xml": { + "Size": 1100 }, - "res/layout/abc_alert_dialog_button_bar_material.xml": { - "Size": 1492 + "res/drawable/abc_seekbar_tick_mark_material.xml": { + "Size": 516 }, - "res/layout-v17/abc_alert_dialog_button_bar_material.xml": { - "Size": 1536 + "res/drawable/abc_seekbar_track_material.xml": { + "Size": 1408 }, - "res/layout-v22/abc_alert_dialog_button_bar_material.xml": { - "Size": 1584 + "res/drawable/abc_spinner_textfield_background_material.xml": { + "Size": 1160 }, - "res/layout/abc_alert_dialog_material.xml": { - "Size": 2476 + "res/drawable/abc_switch_thumb_material.xml": { + "Size": 464 }, - "res/layout/abc_alert_dialog_title_material.xml": { - "Size": 1472 + "res/drawable/abc_tab_indicator_material.xml": { + "Size": 468 }, - "res/layout-v17/abc_alert_dialog_title_material.xml": { - "Size": 1560 + "res/drawable/abc_text_cursor_material.xml": { + "Size": 516 }, - "res/layout/abc_cascading_menu_item_layout.xml": { - "Size": 1868 + "res/drawable/abc_textfield_search_material.xml": { + "Size": 756 }, - "res/layout/abc_dialog_title_material.xml": { - "Size": 1072 + "res/drawable/abc_vector_test.xml": { + "Size": 612 }, - "res/layout-v17/abc_dialog_title_material.xml": { - "Size": 1116 + "res/drawable/btn_checkbox_checked_mtrl.xml": { + "Size": 2688 }, - "res/layout/abc_expanded_menu_layout.xml": { - "Size": 388 + "res/drawable/btn_checkbox_checked_to_unchecked_mtrl_animation.xml": { + "Size": 688 }, - "res/layout/abc_list_menu_item_checkbox.xml": { - "Size": 528 + "res/drawable/btn_checkbox_unchecked_mtrl.xml": { + "Size": 2660 }, - "res/layout/abc_list_menu_item_icon.xml": { - "Size": 684 + "res/drawable/btn_checkbox_unchecked_to_checked_mtrl_animation.xml": { + "Size": 688 }, - "res/layout/abc_list_menu_item_layout.xml": { - "Size": 1396 + "res/drawable/btn_radio_off_mtrl.xml": { + "Size": 1728 }, - "res/layout/abc_list_menu_item_radio.xml": { - "Size": 532 + "res/drawable/btn_radio_off_to_on_mtrl_animation.xml": { + "Size": 680 }, - "res/layout/abc_popup_menu_header_item_layout.xml": { - "Size": 804 + "res/drawable/btn_radio_on_mtrl.xml": { + "Size": 1656 }, - "res/layout-v17/abc_popup_menu_header_item_layout.xml": { - "Size": 848 + "res/drawable/btn_radio_on_to_off_mtrl_animation.xml": { + "Size": 680 }, - "res/layout/abc_popup_menu_item_layout.xml": { - "Size": 2072 + "res/drawable/design_bottom_navigation_item_background.xml": { + "Size": 784 }, - "res/layout/abc_screen_content_include.xml": { - "Size": 548 + "res/drawable/design_fab_background.xml": { + "Size": 372 }, - "res/layout/abc_screen_simple.xml": { - "Size": 832 + "res/drawable/design_password_eye.xml": { + "Size": 464 }, - "res/layout/abc_screen_simple_overlay_action_mode.xml": { - "Size": 792 + "res/drawable/design_snackbar_background.xml": { + "Size": 484 }, - "res/layout/abc_screen_toolbar.xml": { - "Size": 1452 + "res/drawable/ic_mtrl_chip_checked_black.xml": { + "Size": 600 }, - "res/layout-v21/abc_screen_toolbar.xml": { - "Size": 1504 + "res/drawable/ic_mtrl_chip_checked_circle.xml": { + "Size": 940 }, - "res/layout/abc_search_dropdown_item_icons_2line.xml": { - "Size": 1916 + "res/drawable/ic_mtrl_chip_close_circle.xml": { + "Size": 808 }, - "res/layout/abc_search_view.xml": { - "Size": 3428 + "res/drawable/icon.png": { + "Size": 1358 }, - "res/layout-v17/abc_search_view.xml": { - "Size": 3472 + "res/drawable/mtrl_snackbar_background.xml": { + "Size": 484 }, - "res/layout/abc_select_dialog_material.xml": { - "Size": 976 + "res/drawable/mtrl_tabs_default_indicator.xml": { + "Size": 628 }, - "res/layout-v17/abc_select_dialog_material.xml": { - "Size": 1020 + "res/drawable/navigation_empty_icon.xml": { + "Size": 516 }, - "res/layout/abc_tooltip.xml": { - "Size": 972 + "res/drawable/notification_bg_low.xml": { + "Size": 532 }, - "res/layout-v17/abc_tooltip.xml": { - "Size": 1056 + "res/drawable/notification_bg.xml": { + "Size": 532 }, - "res/layout/bottomtablayout.xml": { - "Size": 832 + "res/drawable/notification_icon_background.xml": { + "Size": 372 }, - "res/layout/browser_actions_context_menu_page.xml": { - "Size": 1576 + "res/drawable/notification_tile_bg.xml": { + "Size": 304 }, - "res/layout-v17/browser_actions_context_menu_page.xml": { - "Size": 1660 + "res/drawable/tooltip_frame_dark.xml": { + "Size": 484 }, - "res/layout/browser_actions_context_menu_row.xml": { - "Size": 1032 + "res/drawable/tooltip_frame_light.xml": { + "Size": 484 }, - "res/layout-v17/browser_actions_context_menu_row.xml": { - "Size": 1164 + "res/drawable/xamarin_logo.png": { + "Size": 9799 }, - "res/layout/custom_dialog.xml": { - "Size": 612 + "res/interpolator-v21/mtrl_fast_out_linear_in.xml": { + "Size": 400 }, - "res/layout/design_bottom_navigation_item.xml": { - "Size": 1492 + "res/interpolator-v21/mtrl_fast_out_slow_in.xml": { + "Size": 400 }, - "res/layout/design_bottom_sheet_dialog.xml": { - "Size": 1184 + "res/interpolator-v21/mtrl_linear_out_slow_in.xml": { + "Size": 400 }, - "res/layout/design_layout_snackbar.xml": { - "Size": 528 + "res/interpolator/btn_checkbox_checked_mtrl_animation_interpolator_0.xml": { + "Size": 316 }, - "res/layout/design_layout_snackbar_include.xml": { - "Size": 1352 + "res/interpolator/btn_checkbox_checked_mtrl_animation_interpolator_1.xml": { + "Size": 328 }, - "res/layout-v17/design_layout_snackbar_include.xml": { - "Size": 1444 + "res/interpolator/btn_checkbox_unchecked_mtrl_animation_interpolator_0.xml": { + "Size": 316 }, - "res/layout/design_layout_tab_icon.xml": { - "Size": 408 + "res/interpolator/btn_checkbox_unchecked_mtrl_animation_interpolator_1.xml": { + "Size": 328 }, - "res/layout/design_layout_tab_text.xml": { - "Size": 436 + "res/interpolator/btn_radio_to_off_mtrl_animation_interpolator_0.xml": { + "Size": 320 }, - "res/layout/design_menu_item_action_area.xml": { + "res/interpolator/btn_radio_to_on_mtrl_animation_interpolator_0.xml": { "Size": 320 }, - "res/layout/design_navigation_item.xml": { - "Size": 536 + "res/interpolator/fast_out_slow_in.xml": { + "Size": 400 + }, + "res/interpolator/mtrl_fast_out_linear_in.xml": { + "Size": 136 + }, + "res/interpolator/mtrl_fast_out_slow_in.xml": { + "Size": 144 }, - "res/layout/design_navigation_item_header.xml": { - "Size": 440 + "res/interpolator/mtrl_linear_out_slow_in.xml": { + "Size": 136 }, - "res/layout/design_navigation_item_separator.xml": { - "Size": 472 + "res/interpolator/mtrl_linear.xml": { + "Size": 132 }, - "res/layout/design_navigation_item_subheader.xml": { - "Size": 564 + "res/layout-sw600dp-v13/design_layout_snackbar.xml": { + "Size": 528 }, - "res/layout/design_navigation_menu.xml": { + "res/layout-sw600dp-v13/mtrl_layout_snackbar.xml": { "Size": 528 }, - "res/layout/design_navigation_menu_item.xml": { - "Size": 856 + "res/layout-v16/notification_template_custom_big.xml": { + "Size": 3012 }, - "res/layout/design_text_input_password_icon.xml": { - "Size": 564 + "res/layout-v17/abc_action_mode_close_item_material.xml": { + "Size": 840 }, - "res/layout/fallbacktabbardonotuse.xml": { - "Size": 692 + "res/layout-v17/abc_alert_dialog_button_bar_material.xml": { + "Size": 1536 }, - "res/layout/fallbacktoolbardonotuse.xml": { - "Size": 452 + "res/layout-v17/abc_alert_dialog_title_material.xml": { + "Size": 1560 }, - "res/layout-v21/fallbacktoolbardonotuse.xml": { - "Size": 496 + "res/layout-v17/abc_dialog_title_material.xml": { + "Size": 1116 }, - "res/layout/flyoutcontent.xml": { - "Size": 944 + "res/layout-v17/abc_popup_menu_header_item_layout.xml": { + "Size": 848 }, - "res/layout/mtrl_layout_snackbar.xml": { - "Size": 528 + "res/layout-v17/abc_search_view.xml": { + "Size": 3472 }, - "res/layout/mtrl_layout_snackbar_include.xml": { - "Size": 1312 + "res/layout-v17/abc_select_dialog_material.xml": { + "Size": 1020 }, - "res/layout-v17/mtrl_layout_snackbar_include.xml": { - "Size": 1404 + "res/layout-v17/abc_tooltip.xml": { + "Size": 1056 }, - "res/layout/notification_action.xml": { - "Size": 1092 + "res/layout-v17/browser_actions_context_menu_page.xml": { + "Size": 1660 }, - "res/layout-v17/notification_action.xml": { - "Size": 1156 + "res/layout-v17/browser_actions_context_menu_row.xml": { + "Size": 1164 }, - "res/layout/notification_action_tombstone.xml": { - "Size": 1268 + "res/layout-v17/design_layout_snackbar_include.xml": { + "Size": 1444 + }, + "res/layout-v17/mtrl_layout_snackbar_include.xml": { + "Size": 1404 }, "res/layout-v17/notification_action_tombstone.xml": { "Size": 1332 }, - "res/layout/notification_media_action.xml": { - "Size": 564 - }, - "res/layout/notification_media_cancel_action.xml": { - "Size": 744 - }, - "res/layout/notification_template_big_media.xml": { - "Size": 1504 - }, - "res/layout-v17/notification_template_big_media.xml": { - "Size": 1696 - }, - "res/layout/notification_template_big_media_custom.xml": { - "Size": 2760 + "res/layout-v17/notification_action.xml": { + "Size": 1156 }, "res/layout-v17/notification_template_big_media_custom.xml": { "Size": 3044 }, - "res/layout/notification_template_big_media_narrow.xml": { - "Size": 1564 + "res/layout-v17/notification_template_big_media_narrow_custom.xml": { + "Size": 3216 }, "res/layout-v17/notification_template_big_media_narrow.xml": { "Size": 1824 }, - "res/layout/notification_template_big_media_narrow_custom.xml": { - "Size": 2868 - }, - "res/layout-v17/notification_template_big_media_narrow_custom.xml": { - "Size": 3216 - }, - "res/layout-v16/notification_template_custom_big.xml": { - "Size": 3012 + "res/layout-v17/notification_template_big_media.xml": { + "Size": 1696 }, "res/layout-v17/notification_template_custom_big.xml": { "Size": 3208 }, - "res/layout/notification_template_icon_group.xml": { - "Size": 392 - }, - "res/layout/notification_template_lines_media.xml": { - "Size": 2660 - }, "res/layout-v17/notification_template_lines_media.xml": { "Size": 2872 }, - "res/layout/notification_template_media.xml": { - "Size": 1200 - }, - "res/layout-v17/notification_template_media.xml": { - "Size": 1292 - }, - "res/layout/notification_template_media_custom.xml": { - "Size": 2528 - }, "res/layout-v17/notification_template_media_custom.xml": { "Size": 2756 }, - "res/layout/notification_template_part_chronometer.xml": { - "Size": 440 - }, - "res/layout/notification_template_part_time.xml": { - "Size": 440 - }, - "res/layout/rootlayout.xml": { - "Size": 1352 - }, - "res/layout/select_dialog_item_material.xml": { - "Size": 640 - }, - "res/layout/select_dialog_multichoice_material.xml": { - "Size": 780 + "res/layout-v17/notification_template_media.xml": { + "Size": 1292 }, "res/layout-v17/select_dialog_multichoice_material.xml": { "Size": 864 }, - "res/layout/select_dialog_singlechoice_material.xml": { - "Size": 780 - }, "res/layout-v17/select_dialog_singlechoice_material.xml": { "Size": 864 }, - "res/layout/shellcontent.xml": { - "Size": 888 - }, - "res/layout/support_simple_spinner_dropdown_item.xml": { - "Size": 464 - }, - "res/layout/tabbar.xml": { - "Size": 692 - }, - "res/layout/toolbar.xml": { - "Size": 452 + "res/layout-v21/abc_screen_toolbar.xml": { + "Size": 1504 }, - "res/layout-v21/toolbar.xml": { + "res/layout-v21/fallbacktoolbardonotuse.xml": { "Size": 496 }, - "res/layout-sw600dp-v13/design_layout_snackbar.xml": { - "Size": 528 - }, - "res/layout-sw600dp-v13/mtrl_layout_snackbar.xml": { - "Size": 528 - }, - "res/layout-watch-v20/abc_alert_dialog_button_bar_material.xml": { - "Size": 1208 - }, - "res/layout-watch-v20/abc_alert_dialog_title_material.xml": { - "Size": 1352 + "res/layout-v21/notification_action_tombstone.xml": { + "Size": 1228 }, "res/layout-v21/notification_action.xml": { "Size": 1052 }, - "res/layout-v21/notification_action_tombstone.xml": { - "Size": 1228 - }, "res/layout-v21/notification_template_custom_big.xml": { "Size": 2456 }, "res/layout-v21/notification_template_icon_group.xml": { "Size": 988 }, - "res/layout-v26/abc_screen_toolbar.xml": { - "Size": 1560 - }, - "resources.arsc": { - "Size": 347268 - }, - "classes.dex": { - "Size": 2467756 - }, - "assemblies/Xamarin.Forms.Performance.Integration.Droid.dll": { - "Size": 114906 - }, - "assemblies/FormsViewGroup.dll": { - "Size": 7191 - }, - "assemblies/Newtonsoft.Json.dll": { - "Size": 317978 - }, - "assemblies/Plugin.Connectivity.Abstractions.dll": { - "Size": 3760 - }, - "assemblies/Plugin.Connectivity.dll": { - "Size": 10201 - }, - "assemblies/Xamarin.AndroidX.Activity.dll": { - "Size": 7686 - }, - "assemblies/Xamarin.AndroidX.AppCompat.dll": { - "Size": 124577 - }, - "assemblies/Xamarin.AndroidX.AppCompat.Resources.dll": { - "Size": 6649 - }, - "assemblies/Xamarin.AndroidX.CardView.dll": { - "Size": 7355 - }, - "assemblies/Xamarin.AndroidX.CoordinatorLayout.dll": { - "Size": 18262 - }, - "assemblies/Xamarin.AndroidX.Core.dll": { - "Size": 131922 - }, - "assemblies/Xamarin.AndroidX.DrawerLayout.dll": { - "Size": 15433 - }, - "assemblies/Xamarin.AndroidX.Fragment.dll": { - "Size": 43119 - }, - "assemblies/Xamarin.AndroidX.Legacy.Support.Core.UI.dll": { - "Size": 6705 - }, - "assemblies/Xamarin.AndroidX.Lifecycle.Common.dll": { - "Size": 7053 - }, - "assemblies/Xamarin.AndroidX.Lifecycle.LiveData.Core.dll": { - "Size": 7185 - }, - "assemblies/Xamarin.AndroidX.Lifecycle.ViewModel.dll": { - "Size": 4865 + "res/layout-v21/toolbar.xml": { + "Size": 496 }, - "assemblies/Xamarin.AndroidX.Loader.dll": { - "Size": 13574 + "res/layout-v22/abc_alert_dialog_button_bar_material.xml": { + "Size": 1584 }, - "assemblies/Xamarin.AndroidX.RecyclerView.dll": { - "Size": 102425 + "res/layout-v26/abc_screen_toolbar.xml": { + "Size": 1560 }, - "assemblies/Xamarin.AndroidX.SavedState.dll": { - "Size": 6260 + "res/layout-watch-v20/abc_alert_dialog_button_bar_material.xml": { + "Size": 1208 }, - "assemblies/Xamarin.AndroidX.SwipeRefreshLayout.dll": { - "Size": 11260 + "res/layout-watch-v20/abc_alert_dialog_title_material.xml": { + "Size": 1352 }, - "assemblies/Xamarin.AndroidX.ViewPager.dll": { - "Size": 19420 + "res/layout/abc_action_bar_title_item.xml": { + "Size": 872 }, - "assemblies/Xamarin.Forms.Core.dll": { - "Size": 471882 + "res/layout/abc_action_bar_up_container.xml": { + "Size": 440 }, - "assemblies/Xamarin.Forms.Performance.Integration.dll": { - "Size": 22008 + "res/layout/abc_action_menu_item_layout.xml": { + "Size": 768 }, - "assemblies/Xamarin.Forms.Platform.Android.dll": { - "Size": 367732 + "res/layout/abc_action_menu_layout.xml": { + "Size": 576 }, - "assemblies/Xamarin.Forms.Platform.dll": { - "Size": 56584 + "res/layout/abc_action_mode_bar.xml": { + "Size": 464 }, - "assemblies/Xamarin.Forms.Xaml.dll": { - "Size": 55027 + "res/layout/abc_action_mode_close_item_material.xml": { + "Size": 748 }, - "assemblies/Xamarin.Google.Android.Material.dll": { - "Size": 43499 + "res/layout/abc_activity_chooser_view_list_item.xml": { + "Size": 1304 }, - "assemblies/System.Runtime.Serialization.dll": { - "Size": 193447 + "res/layout/abc_activity_chooser_view.xml": { + "Size": 1684 }, - "assemblies/Java.Interop.dll": { - "Size": 68623 + "res/layout/abc_alert_dialog_button_bar_material.xml": { + "Size": 1492 }, - "assemblies/Mono.Android.dll": { - "Size": 554752 + "res/layout/abc_alert_dialog_material.xml": { + "Size": 2476 }, - "assemblies/mscorlib.dll": { - "Size": 936306 + "res/layout/abc_alert_dialog_title_material.xml": { + "Size": 1472 }, - "assemblies/System.Core.dll": { - "Size": 192208 + "res/layout/abc_cascading_menu_item_layout.xml": { + "Size": 1868 }, - "assemblies/System.dll": { - "Size": 443294 + "res/layout/abc_dialog_title_material.xml": { + "Size": 1072 }, - "assemblies/System.Net.Http.dll": { - "Size": 113286 + "res/layout/abc_expanded_menu_layout.xml": { + "Size": 388 }, - "assemblies/System.Xml.dll": { - "Size": 592605 + "res/layout/abc_list_menu_item_checkbox.xml": { + "Size": 528 }, - "assemblies/System.ServiceModel.Internals.dll": { - "Size": 26592 + "res/layout/abc_list_menu_item_icon.xml": { + "Size": 684 }, - "assemblies/System.Drawing.Common.dll": { - "Size": 16345 + "res/layout/abc_list_menu_item_layout.xml": { + "Size": 1396 }, - "assemblies/System.Data.dll": { - "Size": 316116 + "res/layout/abc_list_menu_item_radio.xml": { + "Size": 532 }, - "assemblies/System.Numerics.dll": { - "Size": 23251 + "res/layout/abc_popup_menu_header_item_layout.xml": { + "Size": 804 }, - "assemblies/System.Xml.Linq.dll": { - "Size": 34368 + "res/layout/abc_popup_menu_item_layout.xml": { + "Size": 2072 }, - "assemblies/Mono.Security.dll": { - "Size": 68489 + "res/layout/abc_screen_content_include.xml": { + "Size": 548 }, - "lib/armeabi-v7a/libxamarin-app.so": { - "Size": 130176 + "res/layout/abc_screen_simple_overlay_action_mode.xml": { + "Size": 792 }, - "lib/x86/libxamarin-app.so": { - "Size": 129296 + "res/layout/abc_screen_simple.xml": { + "Size": 832 }, - "lib/armeabi-v7a/libmonodroid.so": { - "Size": 216940 + "res/layout/abc_screen_toolbar.xml": { + "Size": 1452 }, - "lib/x86/libmonodroid.so": { - "Size": 272124 + "res/layout/abc_search_dropdown_item_icons_2line.xml": { + "Size": 1916 }, - "lib/armeabi-v7a/libxa-internal-api.so": { - "Size": 48620 + "res/layout/abc_search_view.xml": { + "Size": 3428 }, - "lib/x86/libxa-internal-api.so": { - "Size": 61312 + "res/layout/abc_select_dialog_material.xml": { + "Size": 976 }, - "lib/armeabi-v7a/libmono-btls-shared.so": { - "Size": 1113088 + "res/layout/abc_tooltip.xml": { + "Size": 972 }, - "lib/x86/libmono-btls-shared.so": { - "Size": 1459984 + "res/layout/bottomtablayout.xml": { + "Size": 832 }, - "lib/armeabi-v7a/libmonosgen-2.0.so": { - "Size": 4456372 + "res/layout/browser_actions_context_menu_page.xml": { + "Size": 1576 }, - "lib/x86/libmonosgen-2.0.so": { - "Size": 4212484 + "res/layout/browser_actions_context_menu_row.xml": { + "Size": 1032 }, - "lib/armeabi-v7a/libmono-native.so": { - "Size": 736764 + "res/layout/custom_dialog.xml": { + "Size": 612 }, - "lib/x86/libmono-native.so": { - "Size": 803736 + "res/layout/design_bottom_navigation_item.xml": { + "Size": 1492 }, - "META-INF/androidx.swiperefreshlayout_swiperefreshlayout.version": { - "Size": 6 + "res/layout/design_bottom_sheet_dialog.xml": { + "Size": 1184 }, - "META-INF/androidx.fragment_fragment.version": { - "Size": 6 + "res/layout/design_layout_snackbar_include.xml": { + "Size": 1352 }, - "META-INF/androidx.documentfile_documentfile.version": { - "Size": 6 + "res/layout/design_layout_snackbar.xml": { + "Size": 528 }, - "META-INF/androidx.vectordrawable_vectordrawable.version": { - "Size": 6 + "res/layout/design_layout_tab_icon.xml": { + "Size": 408 }, - "META-INF/androidx.drawerlayout_drawerlayout.version": { - "Size": 6 + "res/layout/design_layout_tab_text.xml": { + "Size": 436 }, - "META-INF/androidx.loader_loader.version": { - "Size": 6 + "res/layout/design_menu_item_action_area.xml": { + "Size": 320 }, - "META-INF/androidx.cursoradapter_cursoradapter.version": { - "Size": 6 + "res/layout/design_navigation_item_header.xml": { + "Size": 440 }, - "META-INF/androidx.lifecycle_lifecycle-livedata-core.version": { - "Size": 6 + "res/layout/design_navigation_item_separator.xml": { + "Size": 472 }, - "META-INF/androidx.interpolator_interpolator.version": { - "Size": 6 + "res/layout/design_navigation_item_subheader.xml": { + "Size": 564 }, - "META-INF/androidx.activity_activity.version": { - "Size": 6 + "res/layout/design_navigation_item.xml": { + "Size": 536 }, - "META-INF/androidx.legacy_legacy-support-core-utils.version": { - "Size": 6 + "res/layout/design_navigation_menu_item.xml": { + "Size": 856 }, - "META-INF/androidx.transition_transition.version": { - "Size": 6 + "res/layout/design_navigation_menu.xml": { + "Size": 528 }, - "META-INF/androidx.versionedparcelable_versionedparcelable.version": { - "Size": 6 + "res/layout/design_text_input_password_icon.xml": { + "Size": 564 }, - "META-INF/androidx.cardview_cardview.version": { - "Size": 6 + "res/layout/fallbacktabbardonotuse.xml": { + "Size": 692 }, - "META-INF/androidx.browser_browser.version": { - "Size": 6 + "res/layout/fallbacktoolbardonotuse.xml": { + "Size": 452 }, - "META-INF/androidx.appcompat_appcompat-resources.version": { - "Size": 6 + "res/layout/flyoutcontent.xml": { + "Size": 944 }, - "META-INF/androidx.appcompat_appcompat.version": { - "Size": 6 + "res/layout/mtrl_layout_snackbar_include.xml": { + "Size": 1312 }, - "META-INF/androidx.legacy_legacy-support-core-ui.version": { - "Size": 6 + "res/layout/mtrl_layout_snackbar.xml": { + "Size": 528 }, - "META-INF/androidx.localbroadcastmanager_localbroadcastmanager.version": { - "Size": 6 + "res/layout/notification_action_tombstone.xml": { + "Size": 1268 }, - "META-INF/androidx.slidingpanelayout_slidingpanelayout.version": { - "Size": 6 + "res/layout/notification_action.xml": { + "Size": 1092 }, - "META-INF/androidx.lifecycle_lifecycle-viewmodel.version": { - "Size": 6 + "res/layout/notification_media_action.xml": { + "Size": 564 }, - "META-INF/androidx.savedstate_savedstate.version": { - "Size": 6 + "res/layout/notification_media_cancel_action.xml": { + "Size": 744 }, - "META-INF/androidx.vectordrawable_vectordrawable-animated.version": { - "Size": 6 + "res/layout/notification_template_big_media_custom.xml": { + "Size": 2760 }, - "META-INF/androidx.arch.core_core-runtime.version": { - "Size": 6 + "res/layout/notification_template_big_media_narrow_custom.xml": { + "Size": 2868 }, - "META-INF/androidx.recyclerview_recyclerview.version": { - "Size": 6 + "res/layout/notification_template_big_media_narrow.xml": { + "Size": 1564 }, - "META-INF/androidx.print_print.version": { - "Size": 6 + "res/layout/notification_template_big_media.xml": { + "Size": 1504 }, - "META-INF/androidx.lifecycle_lifecycle-runtime.version": { - "Size": 6 + "res/layout/notification_template_icon_group.xml": { + "Size": 392 }, - "META-INF/androidx.legacy_legacy-support-v4.version": { - "Size": 6 + "res/layout/notification_template_lines_media.xml": { + "Size": 2660 }, - "META-INF/androidx.media_media.version": { - "Size": 6 + "res/layout/notification_template_media_custom.xml": { + "Size": 2528 }, - "META-INF/androidx.customview_customview.version": { - "Size": 6 + "res/layout/notification_template_media.xml": { + "Size": 1200 }, - "META-INF/androidx.coordinatorlayout_coordinatorlayout.version": { - "Size": 6 + "res/layout/notification_template_part_chronometer.xml": { + "Size": 440 }, - "META-INF/androidx.asynclayoutinflater_asynclayoutinflater.version": { - "Size": 6 + "res/layout/notification_template_part_time.xml": { + "Size": 440 }, - "META-INF/android.support.design_material.version": { - "Size": 12 + "res/layout/rootlayout.xml": { + "Size": 1352 }, - "META-INF/com.google.android.material_material.version": { - "Size": 10 + "res/layout/select_dialog_item_material.xml": { + "Size": 640 }, - "META-INF/androidx.viewpager_viewpager.version": { - "Size": 6 + "res/layout/select_dialog_multichoice_material.xml": { + "Size": 780 }, - "META-INF/androidx.core_core.version": { - "Size": 6 + "res/layout/select_dialog_singlechoice_material.xml": { + "Size": 780 }, - "META-INF/androidx.lifecycle_lifecycle-livedata.version": { - "Size": 6 + "res/layout/shellcontent.xml": { + "Size": 888 }, - "META-INF/proguard/androidx-annotations.pro": { - "Size": 339 + "res/layout/support_simple_spinner_dropdown_item.xml": { + "Size": 464 }, - "META-INF/ANDROIDD.SF": { - "Size": 67501 + "res/layout/tabbar.xml": { + "Size": 692 }, - "META-INF/ANDROIDD.RSA": { - "Size": 1205 + "res/layout/toolbar.xml": { + "Size": 452 }, - "META-INF/MANIFEST.MF": { - "Size": 67393 + "resources.arsc": { + "Size": 347268 } }, - "PackageSize": 12801376 + "PackageSize": 12854624 } \ No newline at end of file