From dee7a42f8b8ea7ba3a39b830447c5d1ba1bf3fe9 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Fri, 31 Jul 2026 11:42:50 -0500 Subject: [PATCH] [ILLink] trim unused Java-callable members (#12270) Context: https://github.com/dotnet/android/issues/12270 `MarkJavaObjects` preserves the members of every `IJavaObject` implementer that lives outside the framework assemblies, because Java can call them without any managed code referencing them. The check for "is this method called from Java?" was: type.Methods.Where (m => m.Overrides != null) `MethodDefinition.Overrides` is a Cecil collection that is created lazily, so it is never `null`. Every method of every user type that implemented `IJavaObject` was therefore preserved, whether or not Java could ever call it. That kept unreachable code alive, and everything it transitively referenced along with it. Preserve the members Java can actually reach instead: * Instance constructors, which Java Callable Wrappers mirror one for one, and which Android uses to instantiate types such as `Activity` and `Service`. * Methods that reuse a base slot (a C# `override`). * Methods with `Overrides` entries (an explicit interface implementation). Narrowing the check uncovered a second bug that it had been hiding. `PreserveInterfaceMethods` preserves the `Get*Handler` connector methods on `*Invoker` types, which are only ever named from the `__md_methods` string in a Java Callable Wrapper and so are invisible to the trimmer. It compared the type name from the `[Register]` connector string, such as: Test.Bindings.ICursorInvoker, Xamarin.Android.FixJavaAbstractMethod-Binding against a name built from `AssemblyDefinition.FullName`: Test.Bindings.ICursorInvoker, Xamarin.Android.FixJavaAbstractMethod-Binding, Version=1.0.0.0, Culture=neutral `TypeNameWithoutKey` only stripped `, PublicKeyToken=`, leaving the version and culture behind, so the two strings never matched and no connector method was ever preserved by this code path. The over-preservation above happened to keep them alive anyway. Compare the type name and the simple assembly name instead. Without this, `mono.android.Runtime.register()` cannot resolve the connector methods while a Java Callable Wrapper's static initializer runs, and the class fails to load: Java.Lang.ClassNotFoundException : crc64453db656d8e4bba7.MyClrCursor at Java.Interop.JniEnvironment.Types.TryLoadClassWithFallback(...) at Java.Lang.Object..ctor() For a .NET MAUI app built for `arm64-v8a`: | File | Before | After | Delta | | ----------------------- | -------: | -------: | -------: | | `libassembly-store.so` | 11898152 | 11217032 | -681120 | | `libxamarin-app.so` | 156192 | 119656 | -36536 | | Package size | 20935595 | 20270669 | -664926 | With `$(AndroidLinkTool)=r8` also enabled, `classes.dex` shrinks from 3397644 to 3240220 (-157424), for a total package size of 18116115 (-718174), because fewer preserved managed methods means fewer Java Callable Wrapper members for r8 to keep. Also parameterizes the `BuildReleaseArm64` size test for `$(AndroidLinkTool)=r8`, so both trimming and the r8 output are tracked. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: f66baade-81ba-4731-9031-670fd7d2bc87 --- .../project-docs/ApkSizeRegressionChecks.md | 9 +- .../MarkJavaObjects.cs | 39 +- .../Xamarin.Android.Build.Tests/BuildTest2.cs | 21 +- .../Tasks/LinkerTests.cs | 76 + ...eleaseArm64SimpleDotNet.CoreCLR.R8.apkdesc | 63 + ...ldReleaseArm64SimpleDotNet.CoreCLR.apkdesc | 20 +- ...eleaseArm64XFormsDotNet.CoreCLR.R8.apkdesc | 2235 +++++++++++++++++ ...ldReleaseArm64XFormsDotNet.CoreCLR.apkdesc | 12 +- 8 files changed, 2443 insertions(+), 32 deletions(-) create mode 100644 src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.CoreCLR.R8.apkdesc create mode 100644 src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.CoreCLR.R8.apkdesc diff --git a/Documentation/project-docs/ApkSizeRegressionChecks.md b/Documentation/project-docs/ApkSizeRegressionChecks.md index 103daeb4b7c..8e9b4417234 100644 --- a/Documentation/project-docs/ApkSizeRegressionChecks.md +++ b/Documentation/project-docs/ApkSizeRegressionChecks.md @@ -23,7 +23,8 @@ and some files are built with different optimizations. The `BuildReleaseArm64` test is used to collect apk size data. The test builds a simple .NET for Android app and a simple .NET MAUI -app, for each supported runtime, so this gets us several variations +app, for each supported runtime, with and without Java code shrinking +(`$(AndroidLinkTool)=r8`), so this gets us several variations to check. The reference files are located @@ -33,12 +34,18 @@ current sizes. These files can be used as a new reference. They are named like this: .../Base/BuildReleaseArm64SimpleDotNet.CoreCLR.apkdesc + .../Base/BuildReleaseArm64SimpleDotNet.CoreCLR.R8.apkdesc .../Base/BuildReleaseArm64SimpleDotNet.MonoVM.apkdesc .../Base/BuildReleaseArm64SimpleDotNet.NativeAOT.apkdesc .../Base/BuildReleaseArm64XFormsDotNet.CoreCLR.apkdesc + .../Base/BuildReleaseArm64XFormsDotNet.CoreCLR.R8.apkdesc .../Base/BuildReleaseArm64XFormsDotNet.MonoVM.apkdesc .../Base/BuildReleaseArm64XFormsDotNet.NativeAOT.apkdesc +The `.R8` files cover the `$(AndroidLinkTool)=r8` configuration. +NativeAOT enables `r8` by default, so it has no separate `.R8` +reference. + The new reference files can be obtained from the test results archive - artifact of the given CI build (preferred method). Or they can be obtained from local build using diff --git a/src/Microsoft.Android.Sdk.ILLink/MarkJavaObjects.cs b/src/Microsoft.Android.Sdk.ILLink/MarkJavaObjects.cs index 55bc6530e61..955d891e471 100644 --- a/src/Microsoft.Android.Sdk.ILLink/MarkJavaObjects.cs +++ b/src/Microsoft.Android.Sdk.ILLink/MarkJavaObjects.cs @@ -6,6 +6,7 @@ using Mono.Linker.Steps; using Java.Interop.Tools.Cecil; using Xamarin.Android.Tasks; +using TypeName = System.Reflection.Metadata.TypeName; namespace MonoDroid.Tuner { @@ -92,11 +93,25 @@ public void ProcessType (TypeDefinition type) // because it won't be referenced anywhere, but it will // be called from Java if (IsUserType (type) && type.HasMethods) { - foreach (var method in type.Methods.Where (m => m.Overrides != null)) + foreach (var method in type.Methods.Where (IsJavaCallable)) PreserveMethod (type, method); } } + static bool IsJavaCallable (MethodDefinition method) + { + // Java Callable Wrappers mirror every instance constructor. + if (method.IsConstructor) + return !method.IsStatic; + + if (!method.IsVirtual) + return false; + + // `!IsNewSlot` is a C# `override`, and `Overrides` entries are an + // explicit interface implementation. + return !method.IsNewSlot || method.HasOverrides; + } + void PreserveJavaObjectImplementation (TypeDefinition type) { PreserveIntPtrConstructor (type); @@ -193,22 +208,22 @@ void PreserveMethod (TypeDefinition type, MethodDefinition method) Annotations.AddPreservedMethod (type, method); } - string TypeNameWithoutKey (string name) + // `name` is a `[Register]` connector type such as "Foo.IBarInvoker, MyBinding", + // which omits the assembly version, culture, and public key token. + static bool CheckInvokerType (string invokerName, string invokerAssembly, string name) { - var idx = name.IndexOf (", PublicKeyToken=", StringComparison.Ordinal); - if (idx > 0) - name = name.Substring (0, idx); + if (!TypeName.TryParse (name.AsSpan (), out var parsed)) + return false; - return name; - } - - bool CheckInvokerType (TypeDefinition type, string name) - { - return TypeNameWithoutKey (name) == TypeNameWithoutKey ($"{ type.FullName}, { type.Module.Assembly.FullName}"); + return parsed.FullName == invokerName && + parsed.AssemblyName?.Name == invokerAssembly; } void PreserveInterfaceMethods (TypeDefinition type, TypeDefinition invoker) { + var invokerName = invoker.FullName; + var invokerAssembly = invoker.Module.Assembly.Name.Name; + foreach (var m in type.Methods.Where (m => !m.IsConstructor)) { string methodAndType; if (!m.TryGetRegisterMember (out methodAndType)) @@ -218,7 +233,7 @@ void PreserveInterfaceMethods (TypeDefinition type, TypeDefinition invoker) continue; var values = methodAndType.Split (new char [] { ':' }, 2); - if (!CheckInvokerType (invoker, values [1])) + if (!CheckInvokerType (invokerName, invokerAssembly, values [1])) continue; foreach (var invokerMethod in invoker.Methods.Where (m => !m.IsConstructor)) { diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest2.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest2.cs index 1cafcd4cc26..ed0514c5c28 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest2.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest2.cs @@ -163,7 +163,7 @@ public static string GetLinkedPath (ProjectBuilder builder, bool isRelease, stri } [Test] - public void BuildReleaseArm64 ([Values] bool forms, [Values (AndroidRuntime.CoreCLR, AndroidRuntime.NativeAOT)] AndroidRuntime runtime) + public void BuildReleaseArm64 ([Values] bool forms, [Values (AndroidRuntime.CoreCLR, AndroidRuntime.NativeAOT)] AndroidRuntime runtime, [Values] bool r8) { const bool isRelease = true; if (IgnoreUnsupportedConfiguration (runtime, release: isRelease)) { @@ -174,6 +174,13 @@ public void BuildReleaseArm64 ([Values] bool forms, [Values (AndroidRuntime.Core return; } + // NativeAOT already defaults to $(AndroidLinkTool)=r8, so the r8 dimension only adds + // a new configuration for the runtimes that default to no Java code shrinking. + if (r8 && runtime == AndroidRuntime.NativeAOT) { + Assert.Ignore ("NativeAOT enables r8 by default; covered by the non-r8 test case."); + return; + } + var proj = forms ? new XamarinFormsAndroidApplicationProject () : new XamarinAndroidApplicationProject (); @@ -183,8 +190,11 @@ public void BuildReleaseArm64 ([Values] bool forms, [Values (AndroidRuntime.Core proj.SetRuntimeIdentifiers (new[] { "arm64-v8a" }); proj.SetProperty ("LinkerDumpDependencies", "True"); proj.SetProperty ("AndroidUseAssemblyStore", "False"); + if (r8) { + proj.SetProperty ("AndroidLinkTool", "r8"); + } - var flavor = (forms ? "XForms" : "Simple") + "DotNet" + "." + runtime.ToString (); + var flavor = (forms ? "XForms" : "Simple") + "DotNet" + "." + runtime.ToString () + (r8 ? ".R8" : ""); var apkDescFilename = $"BuildReleaseArm64{flavor}.apkdesc"; var apkDescReference = "reference.apkdesc"; byte [] apkDescData = XamarinAndroidCommonProject.GetResourceContents ($"Xamarin.ProjectTools.Resources.Base.{apkDescFilename}"); @@ -278,7 +288,12 @@ static string GetApkDescDiff (string referencePath, string currentPath) static Dictionary ReadApkDescEntries (string path) { var result = new Dictionary (StringComparer.Ordinal); - using var doc = JsonDocument.Parse (File.ReadAllText (path)); + var text = File.ReadAllText (path); + if (text.IsNullOrWhiteSpace ()) { + // A brand new flavor has no embedded reference yet, so the reference file is empty. + return result; + } + using var doc = JsonDocument.Parse (text); if (doc.RootElement.TryGetProperty ("Entries", out var entries)) { foreach (var entry in entries.EnumerateObject ()) { if (entry.Value.TryGetProperty ("Size", out var size)) { diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/LinkerTests.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/LinkerTests.cs index bde17a65eca..93ce973c01d 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/LinkerTests.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/LinkerTests.cs @@ -742,6 +742,82 @@ void Assert64Bit(string rid, bool expected64) } } + [Test] + public void TrimUnusedJavaCallableMethods () + { + const AndroidRuntime runtime = AndroidRuntime.CoreCLR; + if (IgnoreUnsupportedConfiguration (runtime, release: true)) { + return; + } + + var path = Path.Combine (Root, "temp", TestName); + var lib = new XamarinAndroidLibraryProject { IsRelease = true, ProjectName = "Lib1" }; + lib.SetRuntime (runtime); + lib.SetProperty ("IsTrimmable", "true"); + lib.Sources.Add (new BuildItem.Source ("Library1.cs") { + TextContent = () => """ + namespace Lib1; + + public class Library1 : Com.Example.Androidlib.MyRunner { + public static Library1 Create () => new Library1 (); + + // Overrides an abstract Java method, so it is only ever invoked from Java. + public override void Run () => Console.WriteLine ("Run"); + + // Not an override, and unreachable from managed code. + public void UnusedMethod () => Console.WriteLine ("UnusedMethod"); + } + + // Android instantiates this through its Java Callable Wrapper, so the + // default constructor is never referenced from managed code. + [Android.App.Service] + public class Service1 : Android.App.Service { + public override Android.OS.IBinder? OnBind (Android.Content.Intent? intent) => null; + } + """, + }); + lib.Sources.Add (new BuildItem ("AndroidJavaSource", "MyRunner.java") { + Encoding = new UTF8Encoding (encoderShouldEmitUTF8Identifier: false), + TextContent = () => """ + package com.example.androidlib; + + public abstract class MyRunner { + public abstract void run(); + } + """, + }); + + var proj = new XamarinAndroidApplicationProject { IsRelease = true, ProjectName = "App1" }; + proj.SetRuntime (runtime); + proj.SetRuntimeIdentifiers (["arm64-v8a"]); + proj.References.Add (new BuildItem.ProjectReference (Path.Combine ("..", "Lib1", "Lib1.csproj"), "Lib1")); + proj.MainActivity = proj.DefaultMainActivity.Replace ( + "base.OnCreate (bundle);", + "base.OnCreate (bundle);\n" + + "Console.WriteLine (Lib1.Library1.Create ());"); + + using var lb = CreateDllBuilder (Path.Combine (path, "Lib1")); + using var b = CreateApkBuilder (Path.Combine (path, "App1")); + Assert.IsTrue (lb.Build (lib), "library build should have succeeded."); + Assert.IsTrue (b.Build (proj), "app build should have succeeded."); + + var linked = Path.Combine (Root, b.ProjectDirectory, proj.IntermediateOutputPath, "android-arm64", "linked", $"{lib.ProjectName}.dll"); + FileAssert.Exists (linked); + + using var assembly = AssemblyDefinition.ReadAssembly (linked); + var type = assembly.MainModule.FindType ("Lib1.Library1"); + Assert.IsNotNull (type, "Lib1.Library1 should not have been linked out."); + Assert.IsNotNull (type.Methods.FirstOrDefault (m => m.Name == "Run"), + "Run() overrides a Java method and must be preserved, because it is only called from Java."); + Assert.IsNull (type.Methods.FirstOrDefault (m => m.Name == "UnusedMethod"), + "UnusedMethod() is not callable from Java and is unused, so it should have been trimmed."); + + var service = assembly.MainModule.FindType ("Lib1.Service1"); + Assert.IsNotNull (service, "Lib1.Service1 should not have been linked out."); + Assert.IsNotNull (service.Methods.FirstOrDefault (m => m.IsConstructor && !m.IsStatic && !m.HasParameters), + "Service1's default constructor must be preserved, because Android instantiates it from Java."); + } + [Test] public void WarnWithReferenceToPreserveAttribute ([Values (AndroidRuntime.CoreCLR, AndroidRuntime.NativeAOT)] AndroidRuntime runtime) { diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.CoreCLR.R8.apkdesc b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.CoreCLR.R8.apkdesc new file mode 100644 index 00000000000..5c8616be3e4 --- /dev/null +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.CoreCLR.R8.apkdesc @@ -0,0 +1,63 @@ +{ + "Comment": null, + "Entries": { + "AndroidManifest.xml": { + "Size": 3036 + }, + "classes.dex": { + "Size": 400952 + }, + "lib/arm64-v8a/libassembly-store.so": { + "Size": 2831944 + }, + "lib/arm64-v8a/libclrjit.so": { + "Size": 2761136 + }, + "lib/arm64-v8a/libcoreclr.so": { + "Size": 4839560 + }, + "lib/arm64-v8a/libmonodroid.so": { + "Size": 1184912 + }, + "lib/arm64-v8a/libSystem.Globalization.Native.so": { + "Size": 72432 + }, + "lib/arm64-v8a/libSystem.IO.Compression.Native.so": { + "Size": 1258776 + }, + "lib/arm64-v8a/libSystem.Native.so": { + "Size": 99776 + }, + "lib/arm64-v8a/libSystem.Security.Cryptography.Native.Android.so": { + "Size": 169768 + }, + "lib/arm64-v8a/libxamarin-app.so": { + "Size": 20312 + }, + "res/drawable-hdpi-v4/icon.png": { + "Size": 2178 + }, + "res/drawable-mdpi-v4/icon.png": { + "Size": 1490 + }, + "res/drawable-xhdpi-v4/icon.png": { + "Size": 3098 + }, + "res/drawable-xxhdpi-v4/icon.png": { + "Size": 4674 + }, + "res/drawable-xxxhdpi-v4/icon.png": { + "Size": 6832 + }, + "res/layout/main.xml": { + "Size": 544 + }, + "res/xml/splits0.xml": { + "Size": 120 + }, + "resources.arsc": { + "Size": 1904 + } + }, + "PackageSize": 7321019 +} \ No newline at end of file diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.CoreCLR.apkdesc b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.CoreCLR.apkdesc index 41826764b6d..2da133e74d8 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.CoreCLR.apkdesc +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.CoreCLR.apkdesc @@ -5,34 +5,34 @@ "Size": 3036 }, "classes.dex": { - "Size": 402852 + "Size": 403380 }, "lib/arm64-v8a/libassembly-store.so": { - "Size": 2819672 + "Size": 2831944 }, "lib/arm64-v8a/libclrjit.so": { - "Size": 2757816 + "Size": 2761136 }, "lib/arm64-v8a/libcoreclr.so": { - "Size": 4837240 + "Size": 4839560 }, "lib/arm64-v8a/libmonodroid.so": { - "Size": 1209880 + "Size": 1184912 }, "lib/arm64-v8a/libSystem.Globalization.Native.so": { - "Size": 72112 + "Size": 72432 }, "lib/arm64-v8a/libSystem.IO.Compression.Native.so": { "Size": 1258776 }, "lib/arm64-v8a/libSystem.Native.so": { - "Size": 99664 + "Size": 99776 }, "lib/arm64-v8a/libSystem.Security.Cryptography.Native.Android.so": { - "Size": 163936 + "Size": 169768 }, "lib/arm64-v8a/libxamarin-app.so": { - "Size": 20288 + "Size": 20312 }, "res/drawable-hdpi-v4/icon.png": { "Size": 2178 @@ -59,5 +59,5 @@ "Size": 1904 } }, - "PackageSize": 7312827 + "PackageSize": 7321019 } \ No newline at end of file diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.CoreCLR.R8.apkdesc b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.CoreCLR.R8.apkdesc new file mode 100644 index 00000000000..8453587c3ba --- /dev/null +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.CoreCLR.R8.apkdesc @@ -0,0 +1,2235 @@ +{ + "Comment": null, + "Entries": { + "AndroidManifest.xml": { + "Size": 6652 + }, + "classes.dex": { + "Size": 3240220 + }, + "kotlin/annotation/annotation.kotlin_builtins": { + "Size": 928 + }, + "kotlin/collections/collections.kotlin_builtins": { + "Size": 3685 + }, + "kotlin/coroutines/coroutines.kotlin_builtins": { + "Size": 200 + }, + "kotlin/internal/internal.kotlin_builtins": { + "Size": 646 + }, + "kotlin/kotlin.kotlin_builtins": { + "Size": 18640 + }, + "kotlin/ranges/ranges.kotlin_builtins": { + "Size": 3399 + }, + "kotlin/reflect/reflect.kotlin_builtins": { + "Size": 2396 + }, + "lib/arm64-v8a/libassembly-store.so": { + "Size": 11217040 + }, + "lib/arm64-v8a/libclrjit.so": { + "Size": 2761136 + }, + "lib/arm64-v8a/libcoreclr.so": { + "Size": 4839560 + }, + "lib/arm64-v8a/libmonodroid.so": { + "Size": 1184912 + }, + "lib/arm64-v8a/libSystem.Globalization.Native.so": { + "Size": 72432 + }, + "lib/arm64-v8a/libSystem.IO.Compression.Native.so": { + "Size": 1258776 + }, + "lib/arm64-v8a/libSystem.Native.so": { + "Size": 99776 + }, + "lib/arm64-v8a/libSystem.Security.Cryptography.Native.Android.so": { + "Size": 169768 + }, + "lib/arm64-v8a/libxamarin-app.so": { + "Size": 119656 + }, + "META-INF/androidx.activity_activity.version": { + "Size": 6 + }, + "META-INF/androidx.annotation_annotation-experimental.version": { + "Size": 6 + }, + "META-INF/androidx.appcompat_appcompat-resources.version": { + "Size": 6 + }, + "META-INF/androidx.appcompat_appcompat.version": { + "Size": 6 + }, + "META-INF/androidx.arch.core_core-runtime.version": { + "Size": 67 + }, + "META-INF/androidx.asynclayoutinflater_asynclayoutinflater.version": { + "Size": 6 + }, + "META-INF/androidx.browser_browser.version": { + "Size": 60 + }, + "META-INF/androidx.cardview_cardview.version": { + "Size": 6 + }, + "META-INF/androidx.coordinatorlayout_coordinatorlayout.version": { + "Size": 6 + }, + "META-INF/androidx.core_core-ktx.version": { + "Size": 6 + }, + "META-INF/androidx.core_core.version": { + "Size": 7 + }, + "META-INF/androidx.cursoradapter_cursoradapter.version": { + "Size": 6 + }, + "META-INF/androidx.customview_customview.version": { + "Size": 6 + }, + "META-INF/androidx.documentfile_documentfile.version": { + "Size": 6 + }, + "META-INF/androidx.drawerlayout_drawerlayout.version": { + "Size": 6 + }, + "META-INF/androidx.dynamicanimation_dynamicanimation.version": { + "Size": 6 + }, + "META-INF/androidx.emoji2_emoji2-views-helper.version": { + "Size": 6 + }, + "META-INF/androidx.emoji2_emoji2.version": { + "Size": 6 + }, + "META-INF/androidx.fragment_fragment.version": { + "Size": 6 + }, + "META-INF/androidx.interpolator_interpolator.version": { + "Size": 6 + }, + "META-INF/androidx.legacy_legacy-support-core-ui.version": { + "Size": 6 + }, + "META-INF/androidx.legacy_legacy-support-core-utils.version": { + "Size": 6 + }, + "META-INF/androidx.legacy_legacy-support-v4.version": { + "Size": 6 + }, + "META-INF/androidx.lifecycle_lifecycle-livedata-core.version": { + "Size": 6 + }, + "META-INF/androidx.lifecycle_lifecycle-livedata.version": { + "Size": 6 + }, + "META-INF/androidx.lifecycle_lifecycle-process.version": { + "Size": 6 + }, + "META-INF/androidx.lifecycle_lifecycle-runtime.version": { + "Size": 72 + }, + "META-INF/androidx.lifecycle_lifecycle-viewmodel-savedstate.version": { + "Size": 6 + }, + "META-INF/androidx.lifecycle_lifecycle-viewmodel.version": { + "Size": 6 + }, + "META-INF/androidx.loader_loader.version": { + "Size": 6 + }, + "META-INF/androidx.localbroadcastmanager_localbroadcastmanager.version": { + "Size": 6 + }, + "META-INF/androidx.media_media.version": { + "Size": 6 + }, + "META-INF/androidx.navigation_navigation-common.version": { + "Size": 6 + }, + "META-INF/androidx.navigation_navigation-runtime.version": { + "Size": 6 + }, + "META-INF/androidx.navigation_navigation-ui.version": { + "Size": 6 + }, + "META-INF/androidx.preference_preference.version": { + "Size": 6 + }, + "META-INF/androidx.print_print.version": { + "Size": 6 + }, + "META-INF/androidx.profileinstaller_profileinstaller.version": { + "Size": 6 + }, + "META-INF/androidx.recyclerview_recyclerview.version": { + "Size": 6 + }, + "META-INF/androidx.savedstate_savedstate.version": { + "Size": 6 + }, + "META-INF/androidx.slidingpanelayout_slidingpanelayout.version": { + "Size": 6 + }, + "META-INF/androidx.startup_startup-runtime.version": { + "Size": 6 + }, + "META-INF/androidx.swiperefreshlayout_swiperefreshlayout.version": { + "Size": 6 + }, + "META-INF/androidx.tracing_tracing.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/androidx.viewpager2_viewpager2.version": { + "Size": 6 + }, + "META-INF/com.android.tools/proguard/coroutines.pro": { + "Size": 1345 + }, + "META-INF/com.android.tools/r8-from-1.6.0/coroutines.pro": { + "Size": 899 + }, + "META-INF/com.android.tools/r8-upto-3.0.0/coroutines.pro": { + "Size": 558 + }, + "META-INF/com.android.tools/r8/coroutines.pro": { + "Size": 1190 + }, + "META-INF/com.google.android.material_material.version": { + "Size": 6 + }, + "META-INF/kotlin-project-structure-metadata.json": { + "Size": 552 + }, + "META-INF/kotlinx_coroutines_android.version": { + "Size": 5 + }, + "META-INF/kotlinx_coroutines_core.version": { + "Size": 5 + }, + "META-INF/maven/com.google.guava/listenablefuture/pom.properties": { + "Size": 96 + }, + "META-INF/maven/com.google.guava/listenablefuture/pom.xml": { + "Size": 2226 + }, + "META-INF/proguard/androidx-annotations.pro": { + "Size": 433 + }, + "META-INF/proguard/coroutines.pro": { + "Size": 1363 + }, + "META-INF/services/kotlinx.coroutines.CoroutineExceptionHandler": { + "Size": 54 + }, + "META-INF/services/kotlinx.coroutines.internal.MainDispatcherFactory": { + "Size": 52 + }, + "res/anim-v21/design_bottom_sheet_slide_in.xml": { + "Size": 616 + }, + "res/anim-v21/design_bottom_sheet_slide_out.xml": { + "Size": 616 + }, + "res/anim-v21/fragment_fast_out_extra_slow_in.xml": { + "Size": 364 + }, + "res/anim-v21/mtrl_bottom_sheet_slide_in.xml": { + "Size": 616 + }, + "res/anim-v21/mtrl_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_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/anim/mtrl_card_lowers_interpolator.xml": { + "Size": 400 + }, + "res/anim/nav_default_enter_anim.xml": { + "Size": 460 + }, + "res/anim/nav_default_exit_anim.xml": { + "Size": 460 + }, + "res/anim/nav_default_pop_enter_anim.xml": { + "Size": 460 + }, + "res/anim/nav_default_pop_exit_anim.xml": { + "Size": 460 + }, + "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/fragment_close_enter.xml": { + "Size": 1128 + }, + "res/animator/fragment_close_exit.xml": { + "Size": 1128 + }, + "res/animator/fragment_fade_enter.xml": { + "Size": 452 + }, + "res/animator/fragment_fade_exit.xml": { + "Size": 452 + }, + "res/animator/fragment_open_enter.xml": { + "Size": 1128 + }, + "res/animator/fragment_open_exit.xml": { + "Size": 1128 + }, + "res/animator/linear_indeterminate_line1_head_interpolator.xml": { + "Size": 400 + }, + "res/animator/linear_indeterminate_line1_tail_interpolator.xml": { + "Size": 400 + }, + "res/animator/linear_indeterminate_line2_head_interpolator.xml": { + "Size": 400 + }, + "res/animator/linear_indeterminate_line2_tail_interpolator.xml": { + "Size": 400 + }, + "res/animator/mtrl_btn_state_list_anim.xml": { + "Size": 2664 + }, + "res/animator/mtrl_btn_unelevated_state_list_anim.xml": { + "Size": 120 + }, + "res/animator/mtrl_card_state_list_anim.xml": { + "Size": 1208 + }, + "res/animator/mtrl_chip_state_list_anim.xml": { + "Size": 1072 + }, + "res/animator/mtrl_extended_fab_change_size_collapse_motion_spec.xml": { + "Size": 1116 + }, + "res/animator/mtrl_extended_fab_change_size_expand_motion_spec.xml": { + "Size": 1116 + }, + "res/animator/mtrl_extended_fab_hide_motion_spec.xml": { + "Size": 608 + }, + "res/animator/mtrl_extended_fab_show_motion_spec.xml": { + "Size": 820 + }, + "res/animator/mtrl_extended_fab_state_list_animator.xml": { + "Size": 2724 + }, + "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/animator/nav_default_enter_anim.xml": { + "Size": 452 + }, + "res/animator/nav_default_exit_anim.xml": { + "Size": 452 + }, + "res/animator/nav_default_pop_enter_anim.xml": { + "Size": 452 + }, + "res/animator/nav_default_pop_exit_anim.xml": { + "Size": 452 + }, + "res/color-night-v8/material_timepicker_button_stroke.xml": { + "Size": 376 + }, + "res/color-night-v8/material_timepicker_clockface.xml": { + "Size": 376 + }, + "res/color-night-v8/material_timepicker_modebutton_tint.xml": { + "Size": 340 + }, + "res/color-v23/abc_btn_colored_borderless_text_material.xml": { + "Size": 500 + }, + "res/color-v23/abc_btn_colored_text_material.xml": { + "Size": 500 + }, + "res/color-v23/abc_color_highlight_material.xml": { + "Size": 544 + }, + "res/color-v23/abc_tint_btn_checkable.xml": { + "Size": 624 + }, + "res/color-v23/abc_tint_default.xml": { + "Size": 1120 + }, + "res/color-v23/abc_tint_edittext.xml": { + "Size": 668 + }, + "res/color-v23/abc_tint_seek_thumb.xml": { + "Size": 500 + }, + "res/color-v23/abc_tint_spinner.xml": { + "Size": 668 + }, + "res/color-v23/abc_tint_switch_track.xml": { + "Size": 664 + }, + "res/color/abc_background_cache_hint_selector_material_dark.xml": { + "Size": 468 + }, + "res/color/abc_background_cache_hint_selector_material_light.xml": { + "Size": 468 + }, + "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/color/abc_primary_text_disable_only_material_light.xml": { + "Size": 464 + }, + "res/color/abc_primary_text_material_dark.xml": { + "Size": 464 + }, + "res/color/abc_primary_text_material_light.xml": { + "Size": 464 + }, + "res/color/abc_search_url_text.xml": { + "Size": 588 + }, + "res/color/abc_secondary_text_material_dark.xml": { + "Size": 464 + }, + "res/color/abc_secondary_text_material_light.xml": { + "Size": 464 + }, + "res/color/checkbox_themeable_attribute_color.xml": { + "Size": 464 + }, + "res/color/design_box_stroke_color.xml": { + "Size": 712 + }, + "res/color/design_error.xml": { + "Size": 464 + }, + "res/color/design_icon_tint.xml": { + "Size": 376 + }, + "res/color/material_cursor_color.xml": { + "Size": 340 + }, + "res/color/material_on_background_disabled.xml": { + "Size": 376 + }, + "res/color/material_on_background_emphasis_high_type.xml": { + "Size": 376 + }, + "res/color/material_on_background_emphasis_medium.xml": { + "Size": 376 + }, + "res/color/material_on_primary_disabled.xml": { + "Size": 376 + }, + "res/color/material_on_primary_emphasis_high_type.xml": { + "Size": 376 + }, + "res/color/material_on_primary_emphasis_medium.xml": { + "Size": 376 + }, + "res/color/material_on_surface_disabled.xml": { + "Size": 376 + }, + "res/color/material_on_surface_emphasis_high_type.xml": { + "Size": 376 + }, + "res/color/material_on_surface_emphasis_medium.xml": { + "Size": 376 + }, + "res/color/material_on_surface_stroke.xml": { + "Size": 376 + }, + "res/color/material_slider_active_tick_marks_color.xml": { + "Size": 520 + }, + "res/color/material_slider_active_track_color.xml": { + "Size": 500 + }, + "res/color/material_slider_halo_color.xml": { + "Size": 500 + }, + "res/color/material_slider_inactive_tick_marks_color.xml": { + "Size": 520 + }, + "res/color/material_slider_inactive_track_color.xml": { + "Size": 520 + }, + "res/color/material_slider_thumb_color.xml": { + "Size": 500 + }, + "res/color/material_timepicker_button_background.xml": { + "Size": 500 + }, + "res/color/material_timepicker_button_stroke.xml": { + "Size": 376 + }, + "res/color/material_timepicker_clock_text_color.xml": { + "Size": 464 + }, + "res/color/material_timepicker_clockface.xml": { + "Size": 376 + }, + "res/color/material_timepicker_modebutton_tint.xml": { + "Size": 376 + }, + "res/color/mtrl_btn_bg_color_selector.xml": { + "Size": 500 + }, + "res/color/mtrl_btn_ripple_color.xml": { + "Size": 948 + }, + "res/color/mtrl_btn_stroke_color_selector.xml": { + "Size": 520 + }, + "res/color/mtrl_btn_text_btn_bg_color_selector.xml": { + "Size": 520 + }, + "res/color/mtrl_btn_text_btn_ripple_color.xml": { + "Size": 948 + }, + "res/color/mtrl_btn_text_color_selector.xml": { + "Size": 500 + }, + "res/color/mtrl_calendar_item_stroke_color.xml": { + "Size": 808 + }, + "res/color/mtrl_calendar_selected_range.xml": { + "Size": 376 + }, + "res/color/mtrl_card_view_foreground.xml": { + "Size": 788 + }, + "res/color/mtrl_card_view_ripple.xml": { + "Size": 768 + }, + "res/color/mtrl_chip_background_color.xml": { + "Size": 848 + }, + "res/color/mtrl_chip_close_icon_tint.xml": { + "Size": 1092 + }, + "res/color/mtrl_chip_surface_color.xml": { + "Size": 340 + }, + "res/color/mtrl_chip_text_color.xml": { + "Size": 520 + }, + "res/color/mtrl_choice_chip_background_color.xml": { + "Size": 848 + }, + "res/color/mtrl_choice_chip_ripple_color.xml": { + "Size": 948 + }, + "res/color/mtrl_choice_chip_text_color.xml": { + "Size": 808 + }, + "res/color/mtrl_error.xml": { + "Size": 464 + }, + "res/color/mtrl_fab_bg_color_selector.xml": { + "Size": 500 + }, + "res/color/mtrl_fab_icon_text_color_selector.xml": { + "Size": 500 + }, + "res/color/mtrl_fab_ripple_color.xml": { + "Size": 948 + }, + "res/color/mtrl_filled_background_color.xml": { + "Size": 808 + }, + "res/color/mtrl_filled_icon_tint.xml": { + "Size": 644 + }, + "res/color/mtrl_filled_stroke_color.xml": { + "Size": 788 + }, + "res/color/mtrl_indicator_text_color.xml": { + "Size": 520 + }, + "res/color/mtrl_navigation_bar_colored_item_tint.xml": { + "Size": 520 + }, + "res/color/mtrl_navigation_bar_colored_ripple_color.xml": { + "Size": 948 + }, + "res/color/mtrl_navigation_bar_item_tint.xml": { + "Size": 520 + }, + "res/color/mtrl_navigation_bar_ripple_color.xml": { + "Size": 1672 + }, + "res/color/mtrl_navigation_item_background_color.xml": { + "Size": 644 + }, + "res/color/mtrl_navigation_item_icon_tint.xml": { + "Size": 624 + }, + "res/color/mtrl_navigation_item_text_color.xml": { + "Size": 624 + }, + "res/color/mtrl_on_primary_text_btn_text_color_selector.xml": { + "Size": 500 + }, + "res/color/mtrl_on_surface_ripple_color.xml": { + "Size": 808 + }, + "res/color/mtrl_outlined_icon_tint.xml": { + "Size": 644 + }, + "res/color/mtrl_outlined_stroke_color.xml": { + "Size": 788 + }, + "res/color/mtrl_popupmenu_overlay_color.xml": { + "Size": 376 + }, + "res/color/mtrl_tabs_colored_ripple_color.xml": { + "Size": 948 + }, + "res/color/mtrl_tabs_icon_color_selector_colored.xml": { + "Size": 500 + }, + "res/color/mtrl_tabs_icon_color_selector.xml": { + "Size": 500 + }, + "res/color/mtrl_tabs_legacy_text_color_selector.xml": { + "Size": 464 + }, + "res/color/mtrl_tabs_ripple_color.xml": { + "Size": 1672 + }, + "res/color/mtrl_text_btn_text_color_selector.xml": { + "Size": 888 + }, + "res/color/radiobutton_themeable_attribute_color.xml": { + "Size": 464 + }, + "res/color/switch_thumb_material_dark.xml": { + "Size": 464 + }, + "res/color/switch_thumb_material_light.xml": { + "Size": 464 + }, + "res/color/test_mtrl_calendar_day_selected.xml": { + "Size": 340 + }, + "res/color/test_mtrl_calendar_day.xml": { + "Size": 340 + }, + "res/drawable-anydpi-v21/ic_call_answer_low.xml": { + "Size": 1320 + }, + "res/drawable-anydpi-v21/ic_call_answer_video_low.xml": { + "Size": 736 + }, + "res/drawable-anydpi-v21/ic_call_answer_video.xml": { + "Size": 772 + }, + "res/drawable-anydpi-v21/ic_call_answer.xml": { + "Size": 1356 + }, + "res/drawable-anydpi-v21/ic_call_decline_low.xml": { + "Size": 1492 + }, + "res/drawable-anydpi-v21/ic_call_decline.xml": { + "Size": 1528 + }, + "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_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-hdpi-v4/abc_tab_indicator_mtrl_alpha.9.png": { + "Size": 190 + }, + "res/drawable-hdpi-v4/abc_text_select_handle_left_mtrl.png": { + "Size": 278 + }, + "res/drawable-hdpi-v4/abc_text_select_handle_middle_mtrl.png": { + "Size": 396 + }, + "res/drawable-hdpi-v4/abc_text_select_handle_right_mtrl.png": { + "Size": 262 + }, + "res/drawable-hdpi-v4/abc_textfield_activated_mtrl_alpha.9.png": { + "Size": 186 + }, + "res/drawable-hdpi-v4/abc_textfield_default_mtrl_alpha.9.png": { + "Size": 192 + }, + "res/drawable-hdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png": { + "Size": 178 + }, + "res/drawable-hdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png": { + "Size": 178 + }, + "res/drawable-hdpi-v4/ic_call_answer_low.png": { + "Size": 472 + }, + "res/drawable-hdpi-v4/ic_call_answer_video_low.png": { + "Size": 254 + }, + "res/drawable-hdpi-v4/ic_call_answer_video.png": { + "Size": 254 + }, + "res/drawable-hdpi-v4/ic_call_answer.png": { + "Size": 472 + }, + "res/drawable-hdpi-v4/ic_call_decline_low.png": { + "Size": 375 + }, + "res/drawable-hdpi-v4/ic_call_decline.png": { + "Size": 375 + }, + "res/drawable-hdpi-v4/icon.png": { + "Size": 2178 + }, + "res/drawable-hdpi-v4/notification_bg_low_normal.9.png": { + "Size": 212 + }, + "res/drawable-hdpi-v4/notification_bg_low_pressed.9.png": { + "Size": 225 + }, + "res/drawable-hdpi-v4/notification_bg_normal_pressed.9.png": { + "Size": 225 + }, + "res/drawable-hdpi-v4/notification_bg_normal.9.png": { + "Size": 212 + }, + "res/drawable-hdpi-v4/notify_panel_notification_icon_bg.png": { + "Size": 107 + }, + "res/drawable-ldpi-v4/ic_call_answer_low.png": { + "Size": 270 + }, + "res/drawable-ldpi-v4/ic_call_answer_video_low.png": { + "Size": 199 + }, + "res/drawable-ldpi-v4/ic_call_answer_video.png": { + "Size": 199 + }, + "res/drawable-ldpi-v4/ic_call_answer.png": { + "Size": 270 + }, + "res/drawable-ldpi-v4/ic_call_decline_low.png": { + "Size": 201 + }, + "res/drawable-ldpi-v4/ic_call_decline.png": { + "Size": 201 + }, + "res/drawable-ldrtl-hdpi-v17/abc_spinner_mtrl_am_alpha.9.png": { + "Size": 345 + }, + "res/drawable-ldrtl-mdpi-v17/abc_spinner_mtrl_am_alpha.9.png": { + "Size": 318 + }, + "res/drawable-ldrtl-xhdpi-v17/abc_spinner_mtrl_am_alpha.9.png": { + "Size": 417 + }, + "res/drawable-ldrtl-xxhdpi-v17/abc_spinner_mtrl_am_alpha.9.png": { + "Size": 525 + }, + "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 + }, + "res/drawable-mdpi-v4/abc_btn_check_to_on_mtrl_000.png": { + "Size": 214 + }, + "res/drawable-mdpi-v4/abc_btn_check_to_on_mtrl_015.png": { + "Size": 321 + }, + "res/drawable-mdpi-v4/abc_btn_radio_to_on_mtrl_000.png": { + "Size": 324 + }, + "res/drawable-mdpi-v4/abc_btn_radio_to_on_mtrl_015.png": { + "Size": 356 + }, + "res/drawable-mdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png": { + "Size": 754 + }, + "res/drawable-mdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png": { + "Size": 825 + }, + "res/drawable-mdpi-v4/abc_cab_background_top_mtrl_alpha.9.png": { + "Size": 216 + }, + "res/drawable-mdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png": { + "Size": 173 + }, + "res/drawable-mdpi-v4/abc_list_divider_mtrl_alpha.9.png": { + "Size": 167 + }, + "res/drawable-mdpi-v4/abc_list_focused_holo.9.png": { + "Size": 222 + }, + "res/drawable-mdpi-v4/abc_list_longpressed_holo.9.png": { + "Size": 211 + }, + "res/drawable-mdpi-v4/abc_list_pressed_holo_dark.9.png": { + "Size": 207 + }, + "res/drawable-mdpi-v4/abc_list_pressed_holo_light.9.png": { + "Size": 207 + }, + "res/drawable-mdpi-v4/abc_list_selector_disabled_holo_dark.9.png": { + "Size": 217 + }, + "res/drawable-mdpi-v4/abc_list_selector_disabled_holo_light.9.png": { + "Size": 217 + }, + "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.png": { + "Size": 203 + }, + "res/drawable-mdpi-v4/abc_text_select_handle_middle_mtrl.png": { + "Size": 310 + }, + "res/drawable-mdpi-v4/abc_text_select_handle_right_mtrl.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/ic_call_answer_low.png": { + "Size": 317 + }, + "res/drawable-mdpi-v4/ic_call_answer_video_low.png": { + "Size": 206 + }, + "res/drawable-mdpi-v4/ic_call_answer_video.png": { + "Size": 206 + }, + "res/drawable-mdpi-v4/ic_call_answer.png": { + "Size": 317 + }, + "res/drawable-mdpi-v4/ic_call_decline_low.png": { + "Size": 264 + }, + "res/drawable-mdpi-v4/ic_call_decline.png": { + "Size": 264 + }, + "res/drawable-mdpi-v4/icon.png": { + "Size": 1490 + }, + "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_pressed.9.png": { + "Size": 223 + }, + "res/drawable-mdpi-v4/notification_bg_normal.9.png": { + "Size": 215 + }, + "res/drawable-mdpi-v4/notify_panel_notification_icon_bg.png": { + "Size": 98 + }, + "res/drawable-v21/abc_action_bar_item_background_material.xml": { + "Size": 264 + }, + "res/drawable-v21/abc_btn_colored_material.xml": { + "Size": 1716 + }, + "res/drawable-v21/abc_dialog_material_background.xml": { + "Size": 716 + }, + "res/drawable-v21/abc_edit_text_material.xml": { + "Size": 1172 + }, + "res/drawable-v21/abc_list_divider_material.xml": { + "Size": 516 + }, + "res/drawable-v21/ic_arrow_down_24dp.xml": { + "Size": 644 + }, + "res/drawable-v21/material_cursor_drawable.xml": { + "Size": 588 + }, + "res/drawable-v21/mtrl_navigation_bar_item_background.xml": { + "Size": 264 + }, + "res/drawable-v21/notification_action_background.xml": { + "Size": 1180 + }, + "res/drawable-v21/preference_list_divider_material.xml": { + "Size": 516 + }, + "res/drawable-v23/abc_control_background_material.xml": { + "Size": 304 + }, + "res/drawable-v23/mtrl_popupmenu_background_dark.xml": { + "Size": 1228 + }, + "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 + }, + "res/drawable-xhdpi-v4/abc_btn_check_to_on_mtrl_000.png": { + "Size": 281 + }, + "res/drawable-xhdpi-v4/abc_btn_check_to_on_mtrl_015.png": { + "Size": 432 + }, + "res/drawable-xhdpi-v4/abc_btn_radio_to_on_mtrl_000.png": { + "Size": 651 + }, + "res/drawable-xhdpi-v4/abc_btn_radio_to_on_mtrl_015.png": { + "Size": 785 + }, + "res/drawable-xhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png": { + "Size": 1526 + }, + "res/drawable-xhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png": { + "Size": 1731 + }, + "res/drawable-xhdpi-v4/abc_cab_background_top_mtrl_alpha.9.png": { + "Size": 229 + }, + "res/drawable-xhdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png": { + "Size": 228 + }, + "res/drawable-xhdpi-v4/abc_list_divider_mtrl_alpha.9.png": { + "Size": 167 + }, + "res/drawable-xhdpi-v4/abc_list_focused_holo.9.png": { + "Size": 244 + }, + "res/drawable-xhdpi-v4/abc_list_longpressed_holo.9.png": { + "Size": 214 + }, + "res/drawable-xhdpi-v4/abc_list_pressed_holo_dark.9.png": { + "Size": 209 + }, + "res/drawable-xhdpi-v4/abc_list_pressed_holo_light.9.png": { + "Size": 209 + }, + "res/drawable-xhdpi-v4/abc_list_selector_disabled_holo_dark.9.png": { + "Size": 236 + }, + "res/drawable-xhdpi-v4/abc_list_selector_disabled_holo_light.9.png": { + "Size": 235 + }, + "res/drawable-xhdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png": { + "Size": 966 + }, + "res/drawable-xhdpi-v4/abc_popup_background_mtrl_mult.9.png": { + "Size": 1544 + }, + "res/drawable-xhdpi-v4/abc_scrubber_control_off_mtrl_alpha.png": { + "Size": 267 + }, + "res/drawable-xhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png": { + "Size": 267 + }, + "res/drawable-xhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png": { + "Size": 391 + }, + "res/drawable-xhdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png": { + "Size": 208 + }, + "res/drawable-xhdpi-v4/abc_scrubber_track_mtrl_alpha.9.png": { + "Size": 198 + }, + "res/drawable-xhdpi-v4/abc_spinner_mtrl_am_alpha.9.png": { + "Size": 448 + }, + "res/drawable-xhdpi-v4/abc_switch_track_mtrl_alpha.9.png": { + "Size": 618 + }, + "res/drawable-xhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png": { + "Size": 194 + }, + "res/drawable-xhdpi-v4/abc_text_select_handle_left_mtrl.png": { + "Size": 335 + }, + "res/drawable-xhdpi-v4/abc_text_select_handle_middle_mtrl.png": { + "Size": 585 + }, + "res/drawable-xhdpi-v4/abc_text_select_handle_right_mtrl.png": { + "Size": 318 + }, + "res/drawable-xhdpi-v4/abc_textfield_activated_mtrl_alpha.9.png": { + "Size": 189 + }, + "res/drawable-xhdpi-v4/abc_textfield_default_mtrl_alpha.9.png": { + "Size": 187 + }, + "res/drawable-xhdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png": { + "Size": 184 + }, + "res/drawable-xhdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png": { + "Size": 182 + }, + "res/drawable-xhdpi-v4/ic_call_answer_low.png": { + "Size": 623 + }, + "res/drawable-xhdpi-v4/ic_call_answer_video_low.png": { + "Size": 290 + }, + "res/drawable-xhdpi-v4/ic_call_answer_video.png": { + "Size": 290 + }, + "res/drawable-xhdpi-v4/ic_call_answer.png": { + "Size": 623 + }, + "res/drawable-xhdpi-v4/ic_call_decline_low.png": { + "Size": 452 + }, + "res/drawable-xhdpi-v4/ic_call_decline.png": { + "Size": 452 + }, + "res/drawable-xhdpi-v4/icon.png": { + "Size": 3098 + }, + "res/drawable-xhdpi-v4/notification_bg_low_normal.9.png": { + "Size": 221 + }, + "res/drawable-xhdpi-v4/notification_bg_low_pressed.9.png": { + "Size": 252 + }, + "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-xxhdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png": { + "Size": 286 + }, + "res/drawable-xxhdpi-v4/abc_btn_check_to_on_mtrl_000.png": { + "Size": 307 + }, + "res/drawable-xxhdpi-v4/abc_btn_check_to_on_mtrl_015.png": { + "Size": 593 + }, + "res/drawable-xxhdpi-v4/abc_btn_radio_to_on_mtrl_000.png": { + "Size": 984 + }, + "res/drawable-xxhdpi-v4/abc_btn_radio_to_on_mtrl_015.png": { + "Size": 1208 + }, + "res/drawable-xxhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png": { + "Size": 2463 + }, + "res/drawable-xxhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png": { + "Size": 2834 + }, + "res/drawable-xxhdpi-v4/abc_cab_background_top_mtrl_alpha.9.png": { + "Size": 237 + }, + "res/drawable-xxhdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png": { + "Size": 224 + }, + "res/drawable-xxhdpi-v4/abc_list_divider_mtrl_alpha.9.png": { + "Size": 171 + }, + "res/drawable-xxhdpi-v4/abc_list_focused_holo.9.png": { + "Size": 245 + }, + "res/drawable-xxhdpi-v4/abc_list_longpressed_holo.9.png": { + "Size": 221 + }, + "res/drawable-xxhdpi-v4/abc_list_pressed_holo_dark.9.png": { + "Size": 212 + }, + "res/drawable-xxhdpi-v4/abc_list_pressed_holo_light.9.png": { + "Size": 212 + }, + "res/drawable-xxhdpi-v4/abc_list_selector_disabled_holo_dark.9.png": { + "Size": 260 + }, + "res/drawable-xxhdpi-v4/abc_list_selector_disabled_holo_light.9.png": { + "Size": 258 + }, + "res/drawable-xxhdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png": { + "Size": 1779 + }, + "res/drawable-xxhdpi-v4/abc_popup_background_mtrl_mult.9.png": { + "Size": 2305 + }, + "res/drawable-xxhdpi-v4/abc_scrubber_control_off_mtrl_alpha.png": { + "Size": 322 + }, + "res/drawable-xxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png": { + "Size": 403 + }, + "res/drawable-xxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png": { + "Size": 595 + }, + "res/drawable-xxhdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png": { + "Size": 210 + }, + "res/drawable-xxhdpi-v4/abc_scrubber_track_mtrl_alpha.9.png": { + "Size": 207 + }, + "res/drawable-xxhdpi-v4/abc_spinner_mtrl_am_alpha.9.png": { + "Size": 524 + }, + "res/drawable-xxhdpi-v4/abc_switch_track_mtrl_alpha.9.png": { + "Size": 851 + }, + "res/drawable-xxhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png": { + "Size": 204 + }, + "res/drawable-xxhdpi-v4/abc_text_select_handle_left_mtrl.png": { + "Size": 420 + }, + "res/drawable-xxhdpi-v4/abc_text_select_handle_middle_mtrl.png": { + "Size": 753 + }, + "res/drawable-xxhdpi-v4/abc_text_select_handle_right_mtrl.png": { + "Size": 422 + }, + "res/drawable-xxhdpi-v4/abc_textfield_activated_mtrl_alpha.9.png": { + "Size": 199 + }, + "res/drawable-xxhdpi-v4/abc_textfield_default_mtrl_alpha.9.png": { + "Size": 200 + }, + "res/drawable-xxhdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png": { + "Size": 187 + }, + "res/drawable-xxhdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png": { + "Size": 186 + }, + "res/drawable-xxhdpi-v4/ic_call_answer_low.png": { + "Size": 884 + }, + "res/drawable-xxhdpi-v4/ic_call_answer_video_low.png": { + "Size": 384 + }, + "res/drawable-xxhdpi-v4/ic_call_answer_video.png": { + "Size": 384 + }, + "res/drawable-xxhdpi-v4/ic_call_answer.png": { + "Size": 884 + }, + "res/drawable-xxhdpi-v4/ic_call_decline_low.png": { + "Size": 628 + }, + "res/drawable-xxhdpi-v4/ic_call_decline.png": { + "Size": 628 + }, + "res/drawable-xxhdpi-v4/icon.png": { + "Size": 4674 + }, + "res/drawable-xxxhdpi-v4/abc_btn_check_to_on_mtrl_000.png": { + "Size": 275 + }, + "res/drawable-xxxhdpi-v4/abc_btn_check_to_on_mtrl_015.png": { + "Size": 476 + }, + "res/drawable-xxxhdpi-v4/abc_btn_radio_to_on_mtrl_000.png": { + "Size": 785 + }, + "res/drawable-xxxhdpi-v4/abc_btn_radio_to_on_mtrl_015.png": { + "Size": 946 + }, + "res/drawable-xxxhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png": { + "Size": 2505 + }, + "res/drawable-xxxhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png": { + "Size": 2816 + }, + "res/drawable-xxxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png": { + "Size": 415 + }, + "res/drawable-xxxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png": { + "Size": 631 + }, + "res/drawable-xxxhdpi-v4/abc_spinner_mtrl_am_alpha.9.png": { + "Size": 430 + }, + "res/drawable-xxxhdpi-v4/abc_switch_track_mtrl_alpha.9.png": { + "Size": 813 + }, + "res/drawable-xxxhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png": { + "Size": 202 + }, + "res/drawable-xxxhdpi-v4/abc_text_select_handle_left_mtrl.png": { + "Size": 513 + }, + "res/drawable-xxxhdpi-v4/abc_text_select_handle_right_mtrl.png": { + "Size": 513 + }, + "res/drawable-xxxhdpi-v4/ic_call_answer_low.png": { + "Size": 1171 + }, + "res/drawable-xxxhdpi-v4/ic_call_answer_video_low.png": { + "Size": 465 + }, + "res/drawable-xxxhdpi-v4/ic_call_answer_video.png": { + "Size": 465 + }, + "res/drawable-xxxhdpi-v4/ic_call_answer.png": { + "Size": 1171 + }, + "res/drawable-xxxhdpi-v4/ic_call_decline_low.png": { + "Size": 823 + }, + "res/drawable-xxxhdpi-v4/ic_call_decline.png": { + "Size": 823 + }, + "res/drawable-xxxhdpi-v4/icon.png": { + "Size": 6832 + }, + "res/drawable/$avd_hide_password__0.xml": { + "Size": 1176 + }, + "res/drawable/$avd_hide_password__1.xml": { + "Size": 592 + }, + "res/drawable/$avd_hide_password__2.xml": { + "Size": 556 + }, + "res/drawable/$avd_show_password__0.xml": { + "Size": 1136 + }, + "res/drawable/$avd_show_password__1.xml": { + "Size": 592 + }, + "res/drawable/$avd_show_password__2.xml": { + "Size": 556 + }, + "res/drawable/abc_btn_borderless_material.xml": { + "Size": 588 + }, + "res/drawable/abc_btn_check_material_anim.xml": { + "Size": 816 + }, + "res/drawable/abc_btn_check_material.xml": { + "Size": 464 + }, + "res/drawable/abc_btn_default_mtrl_shape.xml": { + "Size": 932 + }, + "res/drawable/abc_btn_radio_material_anim.xml": { + "Size": 816 + }, + "res/drawable/abc_btn_radio_material.xml": { + "Size": 464 + }, + "res/drawable/abc_cab_background_internal_bg.xml": { + "Size": 372 + }, + "res/drawable/abc_cab_background_top_material.xml": { + "Size": 336 + }, + "res/drawable/abc_ic_ab_back_material.xml": { + "Size": 692 + }, + "res/drawable/abc_ic_arrow_drop_right_black_24dp.xml": { + "Size": 1000 + }, + "res/drawable/abc_ic_clear_material.xml": { + "Size": 684 + }, + "res/drawable/abc_ic_go_search_api_material.xml": { + "Size": 640 + }, + "res/drawable/abc_ic_menu_copy_mtrl_am_alpha.xml": { + "Size": 756 + }, + "res/drawable/abc_ic_menu_cut_mtrl_alpha.xml": { + "Size": 1096 + }, + "res/drawable/abc_ic_menu_overflow_material.xml": { + "Size": 792 + }, + "res/drawable/abc_ic_menu_paste_mtrl_am_alpha.xml": { + "Size": 796 + }, + "res/drawable/abc_ic_menu_selectall_mtrl_alpha.xml": { + "Size": 920 + }, + "res/drawable/abc_ic_menu_share_mtrl_alpha.xml": { + "Size": 980 + }, + "res/drawable/abc_ic_search_api_material.xml": { + "Size": 812 + }, + "res/drawable/abc_ic_voice_search_api_material.xml": { + "Size": 828 + }, + "res/drawable/abc_item_background_holo_dark.xml": { + "Size": 1012 + }, + "res/drawable/abc_item_background_holo_light.xml": { + "Size": 1012 + }, + "res/drawable/abc_list_selector_background_transition_holo_dark.xml": { + "Size": 424 + }, + "res/drawable/abc_list_selector_background_transition_holo_light.xml": { + "Size": 424 + }, + "res/drawable/abc_list_selector_holo_dark.xml": { + "Size": 1064 + }, + "res/drawable/abc_list_selector_holo_light.xml": { + "Size": 1064 + }, + "res/drawable/abc_ratingbar_indicator_material.xml": { + "Size": 124 + }, + "res/drawable/abc_ratingbar_material.xml": { + "Size": 124 + }, + "res/drawable/abc_ratingbar_small_material.xml": { + "Size": 124 + }, + "res/drawable/abc_seekbar_thumb_material.xml": { + "Size": 1100 + }, + "res/drawable/abc_seekbar_tick_mark_material.xml": { + "Size": 516 + }, + "res/drawable/abc_seekbar_track_material.xml": { + "Size": 1408 + }, + "res/drawable/abc_spinner_textfield_background_material.xml": { + "Size": 1160 + }, + "res/drawable/abc_star_black_48dp.xml": { + "Size": 640 + }, + "res/drawable/abc_star_half_black_48dp.xml": { + "Size": 600 + }, + "res/drawable/abc_switch_thumb_material.xml": { + "Size": 464 + }, + "res/drawable/abc_tab_indicator_material.xml": { + "Size": 468 + }, + "res/drawable/abc_text_cursor_material.xml": { + "Size": 516 + }, + "res/drawable/abc_textfield_search_material.xml": { + "Size": 756 + }, + "res/drawable/abc_vector_test.xml": { + "Size": 612 + }, + "res/drawable/avd_hide_password.xml": { + "Size": 660 + }, + "res/drawable/avd_show_password.xml": { + "Size": 660 + }, + "res/drawable/btn_checkbox_checked_mtrl.xml": { + "Size": 2688 + }, + "res/drawable/btn_checkbox_checked_to_unchecked_mtrl_animation.xml": { + "Size": 688 + }, + "res/drawable/btn_checkbox_unchecked_mtrl.xml": { + "Size": 2660 + }, + "res/drawable/btn_checkbox_unchecked_to_checked_mtrl_animation.xml": { + "Size": 688 + }, + "res/drawable/btn_radio_off_mtrl.xml": { + "Size": 1728 + }, + "res/drawable/btn_radio_off_to_on_mtrl_animation.xml": { + "Size": 680 + }, + "res/drawable/btn_radio_on_mtrl.xml": { + "Size": 1656 + }, + "res/drawable/btn_radio_on_to_off_mtrl_animation.xml": { + "Size": 680 + }, + "res/drawable/design_fab_background.xml": { + "Size": 372 + }, + "res/drawable/design_ic_visibility_off.xml": { + "Size": 1144 + }, + "res/drawable/design_ic_visibility.xml": { + "Size": 540 + }, + "res/drawable/design_password_eye.xml": { + "Size": 816 + }, + "res/drawable/design_snackbar_background.xml": { + "Size": 484 + }, + "res/drawable/ic_clock_black_24dp.xml": { + "Size": 752 + }, + "res/drawable/ic_keyboard_black_24dp.xml": { + "Size": 852 + }, + "res/drawable/ic_mtrl_checked_circle.xml": { + "Size": 672 + }, + "res/drawable/ic_mtrl_chip_checked_black.xml": { + "Size": 600 + }, + "res/drawable/ic_mtrl_chip_checked_circle.xml": { + "Size": 940 + }, + "res/drawable/ic_mtrl_chip_close_circle.xml": { + "Size": 808 + }, + "res/drawable/material_ic_calendar_black_24dp.xml": { + "Size": 696 + }, + "res/drawable/material_ic_clear_black_24dp.xml": { + "Size": 752 + }, + "res/drawable/material_ic_edit_black_24dp.xml": { + "Size": 716 + }, + "res/drawable/material_ic_keyboard_arrow_left_black_24dp.xml": { + "Size": 712 + }, + "res/drawable/material_ic_keyboard_arrow_right_black_24dp.xml": { + "Size": 700 + }, + "res/drawable/material_ic_menu_arrow_down_black_24dp.xml": { + "Size": 648 + }, + "res/drawable/material_ic_menu_arrow_up_black_24dp.xml": { + "Size": 648 + }, + "res/drawable/mtrl_dialog_background.xml": { + "Size": 716 + }, + "res/drawable/mtrl_dropdown_arrow.xml": { + "Size": 464 + }, + "res/drawable/mtrl_ic_arrow_drop_down.xml": { + "Size": 564 + }, + "res/drawable/mtrl_ic_arrow_drop_up.xml": { + "Size": 564 + }, + "res/drawable/mtrl_ic_cancel.xml": { + "Size": 724 + }, + "res/drawable/mtrl_ic_error.xml": { + "Size": 644 + }, + "res/drawable/mtrl_popupmenu_background.xml": { + "Size": 740 + }, + "res/drawable/mtrl_tabs_default_indicator.xml": { + "Size": 628 + }, + "res/drawable/navigation_empty_icon.xml": { + "Size": 516 + }, + "res/drawable/notification_bg_low.xml": { + "Size": 532 + }, + "res/drawable/notification_bg.xml": { + "Size": 532 + }, + "res/drawable/notification_icon_background.xml": { + "Size": 372 + }, + "res/drawable/notification_tile_bg.xml": { + "Size": 304 + }, + "res/drawable/test_custom_background.xml": { + "Size": 336 + }, + "res/drawable/test_level_drawable.xml": { + "Size": 448 + }, + "res/drawable/tooltip_frame_dark.xml": { + "Size": 484 + }, + "res/drawable/tooltip_frame_light.xml": { + "Size": 484 + }, + "res/interpolator-v21/mtrl_fast_out_linear_in.xml": { + "Size": 400 + }, + "res/interpolator-v21/mtrl_fast_out_slow_in.xml": { + "Size": 400 + }, + "res/interpolator-v21/mtrl_linear_out_slow_in.xml": { + "Size": 400 + }, + "res/interpolator/btn_checkbox_checked_mtrl_animation_interpolator_0.xml": { + "Size": 316 + }, + "res/interpolator/btn_checkbox_checked_mtrl_animation_interpolator_1.xml": { + "Size": 328 + }, + "res/interpolator/btn_checkbox_unchecked_mtrl_animation_interpolator_0.xml": { + "Size": 316 + }, + "res/interpolator/btn_checkbox_unchecked_mtrl_animation_interpolator_1.xml": { + "Size": 328 + }, + "res/interpolator/btn_radio_to_off_mtrl_animation_interpolator_0.xml": { + "Size": 320 + }, + "res/interpolator/btn_radio_to_on_mtrl_animation_interpolator_0.xml": { + "Size": 320 + }, + "res/interpolator/fast_out_slow_in.xml": { + "Size": 400 + }, + "res/interpolator/mtrl_linear.xml": { + "Size": 132 + }, + "res/layout-land/material_clock_period_toggle_land.xml": { + "Size": 1276 + }, + "res/layout-land/material_timepicker.xml": { + "Size": 1884 + }, + "res/layout-land/mtrl_picker_header_dialog.xml": { + "Size": 1440 + }, + "res/layout-ldrtl-v17/material_textinput_timepicker.xml": { + "Size": 1140 + }, + "res/layout-sw600dp-v13/design_layout_snackbar.xml": { + "Size": 528 + }, + "res/layout-sw600dp-v13/mtrl_layout_snackbar.xml": { + "Size": 492 + }, + "res/layout-v21/notification_action_tombstone.xml": { + "Size": 1228 + }, + "res/layout-v21/notification_action.xml": { + "Size": 1052 + }, + "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 + }, + "res/layout-v26/mtrl_calendar_month.xml": { + "Size": 744 + }, + "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/abc_action_bar_title_item.xml": { + "Size": 872 + }, + "res/layout/abc_action_bar_up_container.xml": { + "Size": 440 + }, + "res/layout/abc_action_menu_item_layout.xml": { + "Size": 768 + }, + "res/layout/abc_action_menu_layout.xml": { + "Size": 576 + }, + "res/layout/abc_action_mode_bar.xml": { + "Size": 464 + }, + "res/layout/abc_action_mode_close_item_material.xml": { + "Size": 840 + }, + "res/layout/abc_activity_chooser_view_list_item.xml": { + "Size": 1304 + }, + "res/layout/abc_activity_chooser_view.xml": { + "Size": 1684 + }, + "res/layout/abc_alert_dialog_button_bar_material.xml": { + "Size": 1584 + }, + "res/layout/abc_alert_dialog_material.xml": { + "Size": 2648 + }, + "res/layout/abc_alert_dialog_title_material.xml": { + "Size": 1560 + }, + "res/layout/abc_cascading_menu_item_layout.xml": { + "Size": 1868 + }, + "res/layout/abc_dialog_title_material.xml": { + "Size": 1116 + }, + "res/layout/abc_expanded_menu_layout.xml": { + "Size": 388 + }, + "res/layout/abc_list_menu_item_checkbox.xml": { + "Size": 528 + }, + "res/layout/abc_list_menu_item_icon.xml": { + "Size": 780 + }, + "res/layout/abc_list_menu_item_layout.xml": { + "Size": 1396 + }, + "res/layout/abc_list_menu_item_radio.xml": { + "Size": 532 + }, + "res/layout/abc_popup_menu_header_item_layout.xml": { + "Size": 848 + }, + "res/layout/abc_popup_menu_item_layout.xml": { + "Size": 2072 + }, + "res/layout/abc_screen_content_include.xml": { + "Size": 548 + }, + "res/layout/abc_screen_simple_overlay_action_mode.xml": { + "Size": 792 + }, + "res/layout/abc_screen_simple.xml": { + "Size": 832 + }, + "res/layout/abc_screen_toolbar.xml": { + "Size": 1504 + }, + "res/layout/abc_search_dropdown_item_icons_2line.xml": { + "Size": 1916 + }, + "res/layout/abc_search_view.xml": { + "Size": 3472 + }, + "res/layout/abc_select_dialog_material.xml": { + "Size": 1020 + }, + "res/layout/abc_tooltip.xml": { + "Size": 1056 + }, + "res/layout/bottomtablayout.xml": { + "Size": 832 + }, + "res/layout/browser_actions_context_menu_page.xml": { + "Size": 1660 + }, + "res/layout/browser_actions_context_menu_row.xml": { + "Size": 1212 + }, + "res/layout/custom_dialog.xml": { + "Size": 612 + }, + "res/layout/design_bottom_navigation_item.xml": { + "Size": 1528 + }, + "res/layout/design_bottom_sheet_dialog.xml": { + "Size": 1224 + }, + "res/layout/design_layout_snackbar_include.xml": { + "Size": 1444 + }, + "res/layout/design_layout_snackbar.xml": { + "Size": 528 + }, + "res/layout/design_layout_tab_icon.xml": { + "Size": 408 + }, + "res/layout/design_layout_tab_text.xml": { + "Size": 436 + }, + "res/layout/design_menu_item_action_area.xml": { + "Size": 320 + }, + "res/layout/design_navigation_item_header.xml": { + "Size": 440 + }, + "res/layout/design_navigation_item_separator.xml": { + "Size": 472 + }, + "res/layout/design_navigation_item_subheader.xml": { + "Size": 564 + }, + "res/layout/design_navigation_item.xml": { + "Size": 576 + }, + "res/layout/design_navigation_menu_item.xml": { + "Size": 856 + }, + "res/layout/design_navigation_menu.xml": { + "Size": 528 + }, + "res/layout/design_text_input_end_icon.xml": { + "Size": 616 + }, + "res/layout/design_text_input_start_icon.xml": { + "Size": 612 + }, + "res/layout/expand_button.xml": { + "Size": 1720 + }, + "res/layout/fallbacktabbardonotuse.xml": { + "Size": 692 + }, + "res/layout/fallbacktoolbardonotuse.xml": { + "Size": 496 + }, + "res/layout/flyoutcontent.xml": { + "Size": 776 + }, + "res/layout/image_frame.xml": { + "Size": 1088 + }, + "res/layout/main.xml": { + "Size": 544 + }, + "res/layout/material_chip_input_combo.xml": { + "Size": 372 + }, + "res/layout/material_clock_display_divider.xml": { + "Size": 752 + }, + "res/layout/material_clock_display.xml": { + "Size": 1172 + }, + "res/layout/material_clock_period_toggle.xml": { + "Size": 1504 + }, + "res/layout/material_clockface_textview.xml": { + "Size": 476 + }, + "res/layout/material_clockface_view.xml": { + "Size": 1012 + }, + "res/layout/material_radial_view_group.xml": { + "Size": 768 + }, + "res/layout/material_textinput_timepicker.xml": { + "Size": 1092 + }, + "res/layout/material_time_chip.xml": { + "Size": 380 + }, + "res/layout/material_time_input.xml": { + "Size": 1208 + }, + "res/layout/material_timepicker_dialog.xml": { + "Size": 3184 + }, + "res/layout/material_timepicker_textinput_display.xml": { + "Size": 684 + }, + "res/layout/material_timepicker.xml": { + "Size": 1136 + }, + "res/layout/mtrl_alert_dialog_actions.xml": { + "Size": 1764 + }, + "res/layout/mtrl_alert_dialog_title.xml": { + "Size": 956 + }, + "res/layout/mtrl_alert_dialog.xml": { + "Size": 2476 + }, + "res/layout/mtrl_alert_select_dialog_item.xml": { + "Size": 588 + }, + "res/layout/mtrl_alert_select_dialog_multichoice.xml": { + "Size": 940 + }, + "res/layout/mtrl_alert_select_dialog_singlechoice.xml": { + "Size": 940 + }, + "res/layout/mtrl_calendar_day_of_week.xml": { + "Size": 400 + }, + "res/layout/mtrl_calendar_day.xml": { + "Size": 352 + }, + "res/layout/mtrl_calendar_days_of_week.xml": { + "Size": 436 + }, + "res/layout/mtrl_calendar_horizontal.xml": { + "Size": 1176 + }, + "res/layout/mtrl_calendar_month_labeled.xml": { + "Size": 728 + }, + "res/layout/mtrl_calendar_month_navigation.xml": { + "Size": 1748 + }, + "res/layout/mtrl_calendar_month.xml": { + "Size": 688 + }, + "res/layout/mtrl_calendar_months.xml": { + "Size": 428 + }, + "res/layout/mtrl_calendar_vertical.xml": { + "Size": 740 + }, + "res/layout/mtrl_calendar_year.xml": { + "Size": 352 + }, + "res/layout/mtrl_layout_snackbar_include.xml": { + "Size": 952 + }, + "res/layout/mtrl_layout_snackbar.xml": { + "Size": 492 + }, + "res/layout/mtrl_navigation_rail_item.xml": { + "Size": 1464 + }, + "res/layout/mtrl_picker_actions.xml": { + "Size": 984 + }, + "res/layout/mtrl_picker_dialog.xml": { + "Size": 1140 + }, + "res/layout/mtrl_picker_fullscreen.xml": { + "Size": 848 + }, + "res/layout/mtrl_picker_header_dialog.xml": { + "Size": 1440 + }, + "res/layout/mtrl_picker_header_fullscreen.xml": { + "Size": 2728 + }, + "res/layout/mtrl_picker_header_selection_text.xml": { + "Size": 712 + }, + "res/layout/mtrl_picker_header_title_text.xml": { + "Size": 624 + }, + "res/layout/mtrl_picker_header_toggle.xml": { + "Size": 576 + }, + "res/layout/mtrl_picker_text_input_date_range.xml": { + "Size": 1460 + }, + "res/layout/mtrl_picker_text_input_date.xml": { + "Size": 984 + }, + "res/layout/notification_media_action.xml": { + "Size": 564 + }, + "res/layout/notification_media_cancel_action.xml": { + "Size": 744 + }, + "res/layout/notification_template_big_media_custom.xml": { + "Size": 3044 + }, + "res/layout/notification_template_big_media_narrow_custom.xml": { + "Size": 3216 + }, + "res/layout/notification_template_big_media_narrow.xml": { + "Size": 1824 + }, + "res/layout/notification_template_big_media.xml": { + "Size": 1696 + }, + "res/layout/notification_template_lines_media.xml": { + "Size": 2872 + }, + "res/layout/notification_template_media_custom.xml": { + "Size": 2756 + }, + "res/layout/notification_template_media.xml": { + "Size": 1292 + }, + "res/layout/notification_template_part_chronometer.xml": { + "Size": 440 + }, + "res/layout/notification_template_part_time.xml": { + "Size": 440 + }, + "res/layout/preference_category_material.xml": { + "Size": 1768 + }, + "res/layout/preference_category.xml": { + "Size": 384 + }, + "res/layout/preference_dialog_edittext.xml": { + "Size": 1272 + }, + "res/layout/preference_dropdown_material.xml": { + "Size": 712 + }, + "res/layout/preference_dropdown.xml": { + "Size": 2544 + }, + "res/layout/preference_information_material.xml": { + "Size": 2056 + }, + "res/layout/preference_information.xml": { + "Size": 1732 + }, + "res/layout/preference_list_fragment.xml": { + "Size": 812 + }, + "res/layout/preference_material.xml": { + "Size": 2052 + }, + "res/layout/preference_recyclerview.xml": { + "Size": 544 + }, + "res/layout/preference_widget_checkbox.xml": { + "Size": 472 + }, + "res/layout/preference_widget_seekbar_material.xml": { + "Size": 3056 + }, + "res/layout/preference_widget_seekbar.xml": { + "Size": 2896 + }, + "res/layout/preference_widget_switch_compat.xml": { + "Size": 504 + }, + "res/layout/preference_widget_switch.xml": { + "Size": 472 + }, + "res/layout/preference.xml": { + "Size": 2352 + }, + "res/layout/rootlayout.xml": { + "Size": 1352 + }, + "res/layout/select_dialog_item_material.xml": { + "Size": 640 + }, + "res/layout/select_dialog_multichoice_material.xml": { + "Size": 864 + }, + "res/layout/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/test_action_chip.xml": { + "Size": 488 + }, + "res/layout/test_chip_zero_corner_radius.xml": { + "Size": 640 + }, + "res/layout/test_design_checkbox.xml": { + "Size": 836 + }, + "res/layout/test_design_radiobutton.xml": { + "Size": 840 + }, + "res/layout/test_navigation_bar_item_layout.xml": { + "Size": 1528 + }, + "res/layout/test_reflow_chipgroup.xml": { + "Size": 1060 + }, + "res/layout/test_toolbar_custom_background.xml": { + "Size": 400 + }, + "res/layout/test_toolbar_elevation.xml": { + "Size": 400 + }, + "res/layout/test_toolbar_surface.xml": { + "Size": 392 + }, + "res/layout/test_toolbar.xml": { + "Size": 360 + }, + "res/layout/text_view_with_line_height_from_appearance.xml": { + "Size": 408 + }, + "res/layout/text_view_with_line_height_from_layout.xml": { + "Size": 552 + }, + "res/layout/text_view_with_line_height_from_style.xml": { + "Size": 396 + }, + "res/layout/text_view_with_theme_line_height.xml": { + "Size": 408 + }, + "res/layout/text_view_without_line_height.xml": { + "Size": 364 + }, + "res/layout/toolbar.xml": { + "Size": 496 + }, + "res/xml/image_share_filepaths.xml": { + "Size": 308 + }, + "res/xml/splits0.xml": { + "Size": 8404 + }, + "res/xml/standalone_badge_gravity_bottom_end.xml": { + "Size": 312 + }, + "res/xml/standalone_badge_gravity_bottom_start.xml": { + "Size": 312 + }, + "res/xml/standalone_badge_gravity_top_start.xml": { + "Size": 312 + }, + "res/xml/standalone_badge_offset.xml": { + "Size": 360 + }, + "res/xml/standalone_badge.xml": { + "Size": 268 + }, + "resources.arsc": { + "Size": 794696 + } + }, + "PackageSize": 18116115 +} \ No newline at end of file diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.CoreCLR.apkdesc b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.CoreCLR.apkdesc index 6ed1a769f26..516fe7a2350 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.CoreCLR.apkdesc +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.CoreCLR.apkdesc @@ -5,10 +5,10 @@ "Size": 6652 }, "classes.dex": { - "Size": 9413840 + "Size": 9412464 }, "classes2.dex": { - "Size": 158304 + "Size": 132684 }, "kotlin/annotation/annotation.kotlin_builtins": { "Size": 928 @@ -32,7 +32,7 @@ "Size": 2396 }, "lib/arm64-v8a/libassembly-store.so": { - "Size": 11900968 + "Size": 11217040 }, "lib/arm64-v8a/libclrjit.so": { "Size": 2761136 @@ -41,7 +41,7 @@ "Size": 4839560 }, "lib/arm64-v8a/libmonodroid.so": { - "Size": 1188568 + "Size": 1184912 }, "lib/arm64-v8a/libSystem.Globalization.Native.so": { "Size": 72432 @@ -56,7 +56,7 @@ "Size": 169768 }, "lib/arm64-v8a/libxamarin-app.so": { - "Size": 156056 + "Size": 119656 }, "META-INF/androidx.activity_activity.version": { "Size": 6 @@ -2234,5 +2234,5 @@ "Size": 794696 } }, - "PackageSize": 20971085 + "PackageSize": 20262477 } \ No newline at end of file