From d236eb1fc536b9700452f20dbfa6510c89f3d5c1 Mon Sep 17 00:00:00 2001 From: Marek Habersack Date: Thu, 15 Jul 2021 08:23:23 +0200 Subject: [PATCH] Add support for NDK r23. Context: https://github.com/android/ndk/wiki/Changelog-r23#changelog The most important changes for Xamarin.Android: NDK r23 removes GNU Binutils and so we need to switch to using our bundled copy of them. Upstream changes: * Includes Android 12 APIs. * Updated LLVM to clang-r416183b, based on LLVM 12 development. * [Issue 1047]: Fixes crash when using ASan with the CFI unwinder. * [Issue 1096]: Includes support for [Polly]. Enable by adding `-mllvm -polly` to your cflags. * [Issue 1230]: LLVM's libunwind is now used instead of libgcc for all architectures rather than just 32-bit Arm. * [Issue 1231]: LLVM's libclang_rt.builtins is now used instead of libgcc. * [Issue 1406]: Fixes crash with Neon intrinsic. * Vulkan validation layer source and binaries are no longer shipped in the NDK. The latest are now posted directly to [GitHub](https://github.com/KhronosGroup/Vulkan-ValidationLayers/releases). * Vulkan tools source is also removed, specifically vulkan_wrapper. It should be downloaded upstream from [GitHub](https://github.com/KhronosGroup/Vulkan-Tools). * The toolchain file (android.toolchain.cmake) is refactored to base on CMake's integrated Android support. This new toolchain file will be enabled by default for CMake 3.21 and newer. No user side change is expected. But if anything goes wrong, please file a bug and set `ANDROID_USE_LEGACY_TOOLCHAIN_FILE=ON` to restore the legacy behavior. * When using the new behavior (when using CMake 3.21+ and not explicitly selecting the legacy toolchain), **default build flags may change**. One of the primary goals was to reduce the behavior differences between our toolchain and CMake, and CMake's default flags do not always match the legacy toolchain file. Most notably, if using `CMAKE_BUILD_TYPE=Release`, your optimization type will likely be `-O3` instead of `-O2` or `-Oz`. See [Issue 1536] for more information. * [Issue 929]: `find_library` now prefers shared libraries from the sysroot over static libraries. * [Issue 1390]: ndk-build now warns when building a static executable with the wrong API level. * [Issue 1452]: `NDK_ANALYZE=1` now sets `APP_CLANG_TIDY=true` rather than using scan-build. clang-tidy performs all the same checks by default, and scan-build was no longer working. See the bug for more details, but no user-side changes should be needed. [Issue 929]: https://github.com/android/ndk/issues/929 [Issue 1047]: https://github.com/android/ndk/issues/1047 [Issue 1096]: https://github.com/android/ndk/issues/1096 [Issue 1230]: https://github.com/android/ndk/issues/1230 [Issue 1231]: https://github.com/android/ndk/issues/1231 [Issue 1390]: https://github.com/android/ndk/issues/1390 [Issue 1406]: https://github.com/android/ndk/issues/1406 [Issue 1452]: https://github.com/android/ndk/issues/1452 [Issue 1536]: https://github.com/android/ndk/issues/1536 [Polly]: https://polly.llvm.org/ --- .../guides/building-apps/build-properties.md | 8 +- .../installers/create-installers.targets | 48 +- .../xaprepare/Application/BuildInfo.cs | 5 +- .../xaprepare/Application/MonoJitRuntime.cs | 2 +- .../xaprepare/Application/Utilities.cs | 23 + .../ConfigAndData/BuildAndroidPlatforms.cs | 4 +- .../xaprepare/ConfigAndData/Configurables.cs | 4 +- .../Dependencies/AndroidToolchain.cs | 2 +- .../xaprepare/Steps/Step_Android_SDK_NDK.cs | 24 +- external/xamarin-android-tools | 2 +- .../Tasks/GetAotArguments.cs | 18 +- .../Tasks/ResolveSdksTask.cs | 15 +- .../Tasks/NdkUtilTests.cs | 1 + .../Utilities/BaseTest.cs | 15 + .../BuildReleaseArm64SimpleLegacy.apkdesc | 16 +- .../BuildReleaseArm64XFormsLegacy.apkdesc | 12 +- .../Utilities/NdkTools/NdkTools.cs | 15 +- .../Utilities/NdkTools/WithClang.cs | 6 +- .../Utilities/NdkTools/WithClangNoBinutils.cs | 20 +- src/monodroid/CMakeLists.txt | 1 - ...ormance_Integration-Signed-Release.apkdesc | 2104 ++++++++--------- 21 files changed, 1201 insertions(+), 1144 deletions(-) diff --git a/Documentation/guides/building-apps/build-properties.md b/Documentation/guides/building-apps/build-properties.md index 06e038b28df..a542aa71057 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/external/xamarin-android-tools b/external/xamarin-android-tools index efc9b67ee05..9b658b29bd4 160000 --- a/external/xamarin-android-tools +++ b/external/xamarin-android-tools @@ -1 +1 @@ -Subproject commit efc9b67ee05babdae512f8ab6d1599827b756e09 +Subproject commit 9b658b29bd41157151f5515619d0d90dc062563d 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