)]}'
{
  "log": [
    {
      "commit": "a9743826bd5959d94935c311dd5e49f0e97ec158",
      "tree": "f5c7f02df469c088c9f7eda8105f61b70004c335",
      "parents": [
        "71be70507de9cb619b644e55eda1cc181e3f7e90"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Dec 18 17:20:41 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Dec 18 17:25:27 2017 -0800"
      },
      "message": "IDMAP: Warn when RROs overlay non-overlayable resources\n\nFirst pass at getting overlays to respect which resources should be\noverlaid. First step is to call it out but not enforce.\n\nBug: 64980941\nTest: manual (inspect the warnings at boot)\nChange-Id: I40baee1110d4bc1e54e7f2f9d3b73ffabb067f90\n"
    },
    {
      "commit": "71be70507de9cb619b644e55eda1cc181e3f7e90",
      "tree": "1ad3c588be3dd06b39b1ba5c3229f80ca08d62bd",
      "parents": [
        "6bb6fad16d93a5859d47dcf962337c2719e585dd"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Dec 12 16:48:07 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Dec 18 14:16:02 2017 -0800"
      },
      "message": "AAPT2: Propagate SPEC_OVERLAYABLE flag to final APK\n\nResources can be marked as overlayable, which means they can\nbe overlaid by runtime resource overlays.\n\nThis change propagates this state to the final resource table that\nis installed on device.\n\nFuture work:\n- Have the idmap tool respect the overlayable state and ignore\n  entries that overlay anything else.\n\nBug: 64980941\nTest: make aapt2_tests\nChange-Id: Id45b1e141a281be2ee32a4ac3096fcf1114d523b\n"
    },
    {
      "commit": "498f6053dad29d715dd532f5272df12dabccf8c8",
      "tree": "b22dbd7d8e182fce137291b348645c7f9195255b",
      "parents": [
        "36f46a87317be9c568649c423011b37e18698013"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Nov 29 13:24:29 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Dec 05 00:29:38 2017 +0000"
      },
      "message": "libandroidfw: Remove pre-verification\n\nThis added more up-front cost to loading an APK and didn\u0027t provide\na significant benefit to resource retrieval.\n\nTest: make libandroidfw_tests\nChange-Id: Idbf993abc433fa8c8950d106c66469b310b66f7f\n"
    },
    {
      "commit": "73f6f9daf6bb38e49747bd103c97617b3dccddc4",
      "tree": "72f38ddce7edf87b25022d8f0b6afcd7716d8ef4",
      "parents": [
        "bd03daf5a44818d9fb7e51ebf532c53b9e2e0697"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Nov 14 10:18:05 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Nov 29 22:19:13 2017 +0000"
      },
      "message": "libandroidfw: Add SparseEntry support for LoadedArsc\n\ngo/o-restable-sparse-entries\n\nTest: make libandroidfw_tests\nChange-Id: Ib1a7d1fc69008390eee53a1de04356dc50e05b45\n"
    },
    {
      "commit": "1c855a0bc88281873b047391de93d0a2b4dbd454",
      "tree": "807e95f64d46feeb41d618029c1f25c0c33d9b8f",
      "parents": [
        "d12e276f6ae35a1e889c6d4de97688903c49001b"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Nov 29 09:59:37 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Nov 29 10:20:26 2017 -0800"
      },
      "message": "libandroidfw: Do not clear last resource id in ResolveReference\n\nIf the value passed to AssetManager::ResolveReference is not a\nreference, the caller may be expecting for the last reference to\nnot be cleared, as a more appropriate value should most likely be\nretained.\n\nThis was causing an issue when a caller was manually resolving\nreferences and expecting the last resource ID resolved to be propagated\nacross calls to ResolveReference.\n\nTest: make libandroidfw_tests\nChange-Id: I5b7f586e2cd541059023eaa9ba23e324a21a9a1e\n"
    },
    {
      "commit": "dbf16295fe3db728fe3a26d5902dc882e01dce74",
      "tree": "6d2755aa60ca99bf067934877b6b95b8c0ea107a",
      "parents": [
        "31342ca615dadfe50d6fed062afaae5769d9ffa0",
        "441500b23ffc4f15d1e2e58da55b37efe9d2ffe1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 27 22:26:26 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 27 22:26:26 2017 +0000"
      },
      "message": "Merge \"libandroidfw: Support loading ApkAssets from a file descriptor\""
    },
    {
      "commit": "1704e3cf0c445512f0a9644485dd3449e874556b",
      "tree": "4387666a4cf8c8d869735576f2bcf872e945c749",
      "parents": [
        "9352e47db471dcbe659e6396797f09cebd455728"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Oct 31 19:55:42 2017 +0000"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Nov 21 10:17:14 2017 -0800"
      },
      "message": "The pm command is no more.\n\nIt is now just a shell of itself. :)\n\nAlso brings in a few fixes to never try to open files from the system\nprocess.\n\nTest: manual\nChange-Id: Ia8187196af597046fd2e7092dbf19ce1dc1ea457\n"
    },
    {
      "commit": "441500b23ffc4f15d1e2e58da55b37efe9d2ffe1",
      "tree": "c493f3356b8dd8aff45b6017a3d88602260ff5b2",
      "parents": [
        "7246736167b6347ae86e311ff0ecd039a3d8b700"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 13 17:52:25 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 13 17:53:45 2017 -0800"
      },
      "message": "libandroidfw: Support loading ApkAssets from a file descriptor\n\nTest: make aapt2_tests\nChange-Id: I041f9e9e3d3f6a10684cbd8baa49f4dda7d6dc40\n"
    },
    {
      "commit": "917bdb1b8fbb7df6f60ee5ff03c94af1c0827964",
      "tree": "3f2d1dedbb607a624458996c14ce03a5ff477db6",
      "parents": [
        "b01aaa015a90f0e72e26e4a53b12223d6b25bf44",
        "3d35a0ea307693a97583a61973e729a5e7db2687"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 10 19:00:10 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 10 19:00:10 2017 +0000"
      },
      "message": "Merge \"Check for null-terminator in ResStringPool::string8At\""
    },
    {
      "commit": "3d35a0ea307693a97583a61973e729a5e7db2687",
      "tree": "69d65ac6b326a42843338700f87111a80998842a",
      "parents": [
        "2dd3953ae00068a71da9f0a0d4e2fb9d8517424c"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 09 17:12:17 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 09 17:13:40 2017 -0800"
      },
      "message": "Check for null-terminator in ResStringPool::string8At\n\nAll other stringAt methods check for null termination. Be consistent\nso that upper levels don\u0027t end up with huge corrupt strings.\n\nBug: 62537081\nTest: none\nChange-Id: I17bdfb0c1e34507b66c6cad651bbdb12c5d4c417\n"
    },
    {
      "commit": "02828740da7481a48e7872b22213047025894525",
      "tree": "c5860f9ad3460b56ed451146adb626902c36d60c",
      "parents": [
        "d37f28b8ca8dd4b9290e6451fddbc9d7a254fcb8"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Tue Nov 07 13:26:27 2017 -0800"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Tue Nov 07 14:07:17 2017 -0800"
      },
      "message": "Disable sanitizer entirely in ResourceTypes.cpp\n\nThe unsigned integer overflow sanitizer catches an overflow on\nRes_GETPACKAGE usages. This is used in a number of places in\nResourceTypes.cpp in a number of large functions. For now, lets disable\nthe sanitizer in this source file.\n\nTest: Compiles and device boots without runtime errors.\nBug: 30969751\nChange-Id: Id9e0776ef819c895a3194a32da5c85459f1af431\n"
    },
    {
      "commit": "9ba4101878c5326996d02d88697051acff8cefb9",
      "tree": "b45383793ecf902ca8dafd9777d2738a9d66e610",
      "parents": [
        "d906cc0901685d59345b207b96fc6e940bfba4f5",
        "599fed4bfc394aa5f5735a06ccd2415e1ab4706f"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Fri Nov 03 21:28:55 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 03 21:28:55 2017 +0000"
      },
      "message": "Merge \"Fix libandroidfw in integer sanitized builds.\""
    },
    {
      "commit": "599fed4bfc394aa5f5735a06ccd2415e1ab4706f",
      "tree": "922e1dcd418f183d689a1c5785727c680b59af2e",
      "parents": [
        "1e189360cbb0bbed740f0949f904d64e4ed13fd2"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Nov 01 11:05:45 2017 -0700"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Fri Nov 03 10:02:54 2017 -0700"
      },
      "message": "Fix libandroidfw in integer sanitized builds.\n\nRefactors compare functions to avoid unsigned integer overflows in\nResourceTypes.cpp which were causing errors on integer sanitized builds.\n\nBug: 30969751\nTest: Compiled and booted an integer sanitized build.\n\nChange-Id: I0190aca2cee0689f7f5d142097917afbeae7dda9\n"
    },
    {
      "commit": "4c7db0543e062a5fb98c2e104379554a52fd7342",
      "tree": "e85604407cf4aed1f41410e493ab601e26cdf250",
      "parents": [
        "416a66cd6ca58c583f5e8e2c713821a6a509729f",
        "498c409dec36a197b1afea1db4c74bd427f25c01"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Nov 03 10:32:30 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Nov 03 10:32:30 2017 +0000"
      },
      "message": "Merge \"ZipUtils: Rewrite in terms of zip_archive::Inflate.\" am: f941215d56 am: 1bed4d4880\nam: 498c409dec\n\nChange-Id: I3c0f754ee0fdea0373293f06081b4a3230b87e09\n"
    },
    {
      "commit": "a07e12251d5b246d2d7188df998a6f0487b09ed1",
      "tree": "a8893da58c8725d48067e59b10705d0cd1aee40e",
      "parents": [
        "80c3c7093040a6c66a2fa7c634451694d2bb5ee8"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Oct 30 12:57:24 2017 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Nov 02 12:01:17 2017 +0000"
      },
      "message": "ZipUtils: Rewrite in terms of zip_archive::Inflate.\n\nRemoves duplicated zlib related code.\n\nBug: 35246701\nTest: make\nTest: run cts-dev -m CtsContentTestCases -t android.content.res.cts\nChange-Id: Ie93cab4eb442b02ee171203a043ef02edbc35f2b\n"
    },
    {
      "commit": "ad5570f58d40b7997afeba337f83dda4ae9a5476",
      "tree": "ca1554d5bbe6466c6b0f3d0383c73bbed6515b78",
      "parents": [
        "81c671da60a1d27407846039308642e71ab16c13",
        "ca3872ce36c94090ae18519dc7fe0cf39d834c4a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Oct 31 19:55:42 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 31 19:55:42 2017 +0000"
      },
      "message": "Merge \"Fully implement \"install\" and \"install-write\" in PackageManagerShellCommand.\""
    },
    {
      "commit": "bb9965612c0f5f5739645e209f3294ac6ee19168",
      "tree": "d82ea106aee861443eadada67b7ddb859ea7a5c2",
      "parents": [
        "ad5379bd308adc0b1e765faa5425c4dfd749f9f9",
        "e7bc60a954cfed8b4377a9f9b8601208781d5393"
      ],
      "author": {
        "name": "Roozbeh Pournader",
        "email": "roozbeh@google.com",
        "time": "Tue Oct 31 18:28:32 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 31 18:28:32 2017 +0000"
      },
      "message": "Merge \"Parse BCP 47 locale names with Unicode extensions\""
    },
    {
      "commit": "ca3872ce36c94090ae18519dc7fe0cf39d834c4a",
      "tree": "26361b8a308121902da16e035851489e11af38c9",
      "parents": [
        "362e983accb269b07a95ef563fe37ed325145035"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Oct 30 14:19:32 2017 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Oct 31 10:54:31 2017 -0700"
      },
      "message": "Fully implement \"install\" and \"install-write\" in PackageManagerShellCommand.\n\nWe can use the new mechanism to ask the calling shell to open\na file in order to implement the rest of these commands, allowing\nyou to give the path to an apk to install.  That API is thus\nextended to allow you to open readable files, not just opening\nfile for writing.\n\nDoing this however means we no longer can pass a file path to\nAssetManager for the apk to parse, we only have an already open\nfd for that.  Extending AssetManager to allow adding apks from\nfds is not that hard, however, since the underlying zip library\nalready supports this.\n\nThis main thing this changes is in AssetManager.cpp where we\nretrieve the open zip file for a particular apk that has been\nadded.  This used to look up the zip file by path every time\nit was needed, but that won\u0027t work anymore now that we can have\nthings added by fd.  Instead, we keep track of each opened zip\nin the AssetManager, so we can just directly retrieve it from\nthe asset_path representing the item that was added.  As a\nside-effect, this means for normal paths we no longer need to\nlook up by name, but just have the opened zip file directly\naccessible.  (This is probably good, but it does mean that we\nno longer run the logic of seeing if the zip file\u0027s timestamp\nhas changed and re-opening it if it has.  We probably shouldn\u0027t\nbe relying on that for an active AssetManager anyway, and maybe\nit is even good that we don\u0027t allow the zip file to change\nunder it?)\n\nA follow-up change will finally remove the Pm.java implementation\nand turn the pm \"command\" into a simple shell script that runs\ncmd package.\n\nTest: manual\n\nChange-Id: Ie103e3bdaa5b706796cc329254f2638151a3924f\n"
    },
    {
      "commit": "e7bc60a954cfed8b4377a9f9b8601208781d5393",
      "tree": "7fbc5173f367d79ee6e6099164e8c956a6d0c38d",
      "parents": [
        "4749fdcf04b13eba24a7034f95dac50ca18bc0dd"
      ],
      "author": {
        "name": "Igor Viarheichyk",
        "email": "viarheichyk@google.com",
        "time": "Fri Oct 20 15:09:13 2017 -0700"
      },
      "committer": {
        "name": "Igor Viarheichyk",
        "email": "viarheichyk@google.com",
        "time": "Thu Oct 26 18:04:43 2017 -0700"
      },
      "message": "Parse BCP 47 locale names with Unicode extensions\n\nLocale parser is modified to handle BCP 47 locale extensions and\nrecognize numbering system specifications. This fixes incorrect\ninterpretation of an extension key as a region code.\n\nNumbering system specification is stored in the configuration data,\nhowever it\u0027s not used for best configuration selection yet.\n\nBug: 67508876\nTest: build and run libandroidfw_tests\n\nChange-Id: If4072b9f39e80f60d4567841afe9ce7a92979574\n"
    },
    {
      "commit": "1a1e9c272459f05c846a03fc15989ff7e492517e",
      "tree": "9d5f5c28c08de8be785e66d849975959982d778f",
      "parents": [
        "30080e2f282f40222bd9cc617e0c11d63c82f829"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 13 15:45:34 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Oct 17 16:03:30 2017 -0700"
      },
      "message": "AssetManager2: Run ApkAssets that have failed verification\n\nApkAssets who have failed verification should still run for\ncompatibility. Not all resources are accessed, and therefore\nerrors in the APK are not necessarily fatal. However, this means\nwe must do bounds checks when retrieving resources, which is\nslower.\n\nTest: make libandroidfw_tests \u0026\u0026 $ANDROID_BUILD_TOP/out/host/\u003chost\u003e/nativetest64/libandroidfw_tests/libandroidfw_tests\nTest: make libandroidfw_benchmarks \u0026\u0026 adb sync system \u0026\u0026 adb sync data \u0026\u0026 /data/benchmarktest64/libandroidfw_benchmarks/libandroidfw_benchmarks\nChange-Id: I4cc926c064bca0491785d82cdac0419d74d7d9b0\n"
    },
    {
      "commit": "30080e2f282f40222bd9cc617e0c11d63c82f829",
      "tree": "d7cd37fc9a3dbd3369e53db221623f3fdf8b0c4d",
      "parents": [
        "8a0f0ed4d84573a2f9eec0753404b5cf44f51827"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Oct 16 16:18:09 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Oct 17 11:37:49 2017 -0700"
      },
      "message": "AssetManager2: Improve Theme performance\n\nThis change brings Theme ApplyStyle down to 2x the original performance\nand Theme attribute retrieval to less than the original performance.\nYay!\n\nBenchmarks ran on marlin-eng\n----------------------------------------------------------------------\nBenchmark                               Time           CPU Iterations\n----------------------------------------------------------------------\nBM_ThemeApplyStyleFramework          8540 ns       8500 ns      82105\nBM_ThemeApplyStyleFrameworkOld       5280 ns       5258 ns     148849\nBM_ThemeGetAttribute                    8 ns          8 ns   88388549\nBM_ThemeGetAttributeOld                11 ns         11 ns   63394463\n\nApplyStyle still takes some time, and the weird thing is that if I\nswitch the data structure of ThemeType to use an\nstd::vector\u003cThemeEntry\u003e, the performance becomes better than the\noriginal implementation! The issue is that std::vector\u003cT\u003e takes up 24\nbytes, which would make Themes take up 8 more bytes per ThemeType, which\nis unacceptable. Still trying to isolate where the performance gain is\ncoming from.\n\nTest: make libandroidfw_tests \u0026\u0026 $ANDROID_BUILD_TOP/out/host/\u003chost\u003e/nativetest64/libandroidfw_tests/libandroidfw_tests\nTest: make libandroidfw_benchmarks \u0026\u0026 adb sync system \u0026\u0026 adb sync data \u0026\u0026 adb shell /data/benchmarktest64/libandroidfw_benchmarks/libandroidfw_benchmarks\nChange-Id: I0e7a756afd44b6aac1521e69c2b907258c262d3e\n"
    },
    {
      "commit": "d480f7ba8c0ded581686596bf45c3c6d5255e5a1",
      "tree": "49f2fafdb2540dd9b1d52f1be0ac40150de486b3",
      "parents": [
        "970bd8d2835b05237c4561bd6c12329e26f136b3"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Oct 11 10:36:44 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 13 10:23:35 2017 -0700"
      },
      "message": "AssetManager2: Provide a method for iterating over packages\n\nTest: none\nChange-Id: Ia6c335db1ed7d09cd444d387a29f18dc342a697f\n"
    },
    {
      "commit": "970bd8d2835b05237c4561bd6c12329e26f136b3",
      "tree": "76004870f6957072dd24267a7a00d9ae6b237aba",
      "parents": [
        "fcf52c6f5e2276c9cf2ca245757a2f0f4b1d7e4e"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Sep 25 13:21:55 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 13 10:23:34 2017 -0700"
      },
      "message": "AssetManager2: Implement IDMAP support\n\nThis enables RRO (runtime resource overlays) with AssetManager2\n\nTest: make libandroidfw_tests\nTest: out/host/\u003cplatform\u003e/nativetest64/libandroidfw_tests/libandroidfw_tests --testdata\u003dframeworks/base/libs/androidfw/tests/data\nChange-Id: Id8079104faefbfaa3f4017d8f7ee1a8968f151a2\n"
    },
    {
      "commit": "873ef0e2302a1581dbcb83b49cefc95dcc41f5a0",
      "tree": "ef00b0878f81644c2cbb37d7f4e5b5a2fc0a5c0c",
      "parents": [
        "df043ee75cffd64017fd5a571b1e79ee763ea62e"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Oct 11 16:50:37 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Oct 12 16:02:00 2017 -0700"
      },
      "message": "libandroidfw_tests: package test data correctly\n\n- Convert to use soong, which allows bundling test data with benchmarks.\n- Also separate libandroidfw_benchmarks so that it doesn\u0027t depend\non gtest.\n\nTest: manual\nChange-Id: I45bd222fafa87172c77b7f5bb2a7a89ddca72361\n"
    },
    {
      "commit": "67d7c5ae5a045dbf4a27012e34d3d642822d5000",
      "tree": "5f929e99f7f65f65f52a96ebd39ff76170ad9ec0",
      "parents": [
        "f143ca9f16d6d1ef03b03463e48f3dbbfee68332",
        "79cd199b21f3cff0abdf7137cf1a2c0cac9f89a0"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Fri Sep 29 10:10:38 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 29 10:10:38 2017 +0000"
      },
      "message": "Merge \"Rename libz-host -\u003e libz\" am: 3e47510e0e am: 7190974801 am: 77a00d2b67\nam: 79cd199b21\n\nChange-Id: If8f2a330b042d383960fcde3779d697063fa632e\n"
    },
    {
      "commit": "a2902e38a4fbd943801ca56663a4661dd6bc7be8",
      "tree": "b8f08710cd78da78e243412e5358040782ab113d",
      "parents": [
        "f4ec2ab706a7a8741923f074c6f79192d5a93dfd"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Sep 27 16:20:31 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Sep 27 16:20:31 2017 -0700"
      },
      "message": "Rename libz-host -\u003e libz\n\nTest: m host\nChange-Id: I2806dde519602bc31b622ae3b3f55ab8b1287744\n"
    },
    {
      "commit": "03ebac8c68f9925592a172fcfd11d56f48cadaeb",
      "tree": "65f977d44096c415c580614dd43a158d3b96aa23",
      "parents": [
        "6833a07a078af8eeb868aee269bbb1860c01f244"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Sep 25 13:10:14 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Sep 25 18:24:41 2017 -0700"
      },
      "message": "A few fixes to AssetManager2 for compat\n\nTheme copying should behave the way it did with the old AssetManager\n(copy only the framework attributes when copying from a Theme object\nfrom a different AssetManager).\n\nCleanup the dependencies on libziparchive in ApkAssets.\n\nTest: make libandroidfw_tests\nTest: out/host/\u003cplatform\u003e/nativetests64/libandroidfw_tests/libandroidfw_tests --testdata\u003dframeworks/base/libs/androidfw/tests/data\nChange-Id: I973f7e6eb14ce311306e2ec66a623a4790c8d233\n"
    },
    {
      "commit": "fa6058118e5fca1150fbe259cba89ebae64cdcd1",
      "tree": "ecda4fbaaefaac37a1030b360766980ac03bf2e3",
      "parents": [
        "a90205492ff2eb1b20dfdc9fb114efdd78d387d1"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jun 29 17:53:36 2017 -0700"
      },
      "committer": {
        "name": "Dmitry Shmidt",
        "email": "dimitrysh@google.com",
        "time": "Mon Sep 11 13:05:38 2017 -0700"
      },
      "message": "AAPT2: Fix processing of quotes in XML\n\nWhen processing attributes in XML, quotes can\u0027t be used to mark a\nsection as whitespace preserving, so the assumption should be that the\nentire string is whitespace preserving, which makes quote characters\nliterals.\n\nBug: 62840718\nBug: 62840406\nTest: make aapt2_tests\nChange-Id: I4afff02148b5b8e78833abf1f323c2f5325d6155\n"
    },
    {
      "commit": "92c2fc4fb701751a184f57bb1208ddab7973900e",
      "tree": "0120126d656e0b225f4e17f2e534cefbebd98301",
      "parents": [
        "d18a1ccaa275dab7e0a5b09375710100da9825ff",
        "9964aa9160a5d08b0c126d6607ca757b133f17f9"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Sep 06 22:23:30 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Sep 06 22:23:30 2017 +0000"
      },
      "message": "Merge \"Merge \"idmap: include idmap version in check for stale file\" am: 609887a980 am: a15992086c am: d7f3a7b095\" into oc-mr1-dev-plus-aosp\nam: 9964aa9160\n\nChange-Id: Ibeb55f3d4b7c10b1d192bbea06ce293509e695bb\n"
    },
    {
      "commit": "a15992086c63c38cb61ed23af8c5507d413c4776",
      "tree": "19aa70fd16a3ab14e59a4cd07cdf0cb019e8923c",
      "parents": [
        "4f4218a3bedc4599ede5ae94250cc727897ca7fd",
        "609887a9800073897ac962fb9627bd425b96b7b3"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Sep 06 20:36:28 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Sep 06 20:36:28 2017 +0000"
      },
      "message": "Merge \"idmap: include idmap version in check for stale file\"\nam: 609887a980\n\nChange-Id: I4779cd92041fe33a95c0034c539c48989ca8e6df\n"
    },
    {
      "commit": "42ebcb80b50834a1ce4755cd4ca86918c96ca3c6",
      "tree": "dff489d46fca4223ab022fbe5fb2a08d17290150",
      "parents": [
        "ea2a1b9b2761bff09921c9c9a5eb04c17cc314b4"
      ],
      "author": {
        "name": "Mårten Kongstad",
        "email": "marten.kongstad@sony.com",
        "time": "Tue Mar 28 15:30:21 2017 +0200"
      },
      "committer": {
        "name": "Mårten Kongstad",
        "email": "marten.kongstad@sony.com",
        "time": "Mon Sep 04 13:16:16 2017 +0200"
      },
      "message": "idmap: include idmap version in check for stale file\n\nTeach is_idmap_stale_fd to include the idmap version in the list of\ncriteria used to determine if an idmap file is already up to date.\n\nChange-Id: I3e4e2aa502fe76a034c3977bdb055a1df7e665be\n"
    },
    {
      "commit": "74468583b32bf45aadcbc2aecb4831ea0a02f62c",
      "tree": "ff227f653549669bfc38fd23b11981e0ddd242c9",
      "parents": [
        "cea12d8d4da70fa4dff71a8a4ae1e01cba3670cf",
        "16cfd497f51de88847f1a565198fd19b26cf30ca"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jul 27 20:04:15 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 27 20:04:15 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fix processing of quotes in XML\" into oc-dr1-dev\nam: 16cfd497f5\n\nChange-Id: Ibe24c4b8750d02774456d6c2d638655ece4c7ffd\n"
    },
    {
      "commit": "09b119fb7d0494e9afd2bf2ec774532fcafe754e",
      "tree": "06908db0ed58bce146052866dbb8d2693368e28d",
      "parents": [
        "6a65b75e479a9de3d6d8a066eeb4d1715b18c03b"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Jul 25 15:00:04 2017 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Wed Jul 26 17:39:32 2017 -0700"
      },
      "message": "AssetManager2: Fix a memory leak\n\nCaught by the static analyzer:\n\nframeworks/base/libs/androidfw/AssetManager2.cpp:580:9: warning:\nPotential leak of memory pointed to by \u0027new_bag\u0027\n[clang-analyzer-unix.Malloc]\n\nBug: 27101951\nTest: mma. Memory leak warning is gone.\nChange-Id: I532585d4dd376cec1abf4358f26d23f5ae3231cf\n"
    },
    {
      "commit": "c89568848886d952dfc0fefc020c3e5486ddf716",
      "tree": "572b0c51df7dde08b781d62d043ccb809f9a2b38",
      "parents": [
        "d11e14b42812734068d11fbb11be6c3567072ceb"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jun 29 17:53:36 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jul 26 20:41:34 2017 +0000"
      },
      "message": "AAPT2: Fix processing of quotes in XML\n\nWhen processing attributes in XML, quotes can\u0027t be used to mark a\nsection as whitespace preserving, so the assumption should be that the\nentire string is whitespace preserving, which makes quote characters\nliterals.\n\nBug: 62840718\nBug: 62840406\nTest: make aapt2_tests\nChange-Id: I4afff02148b5b8e78833abf1f323c2f5325d6155\n"
    },
    {
      "commit": "bb94f32a0042c8e2ab3d6e0de1b693713d2a6eab",
      "tree": "db48ae6d8e3dd04f28fa5b17ff1c0efcf1cd36a6",
      "parents": [
        "f7f48b17cbdfffa130cdb8991a9c2b09f7659664"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jul 12 07:41:55 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jul 12 07:42:01 2017 -0700"
      },
      "message": "Revert \"AAPT2: Auto-version adaptive-icon XML\"\n\nThis reverts commit 5b7337f77cf036dda2c7218ccf22dedc774dcf76.\n\nBug: 63579299\nTest: none\nChange-Id: Ib617c4edfc16eeae3507b59b2debeae4f8bbf9a5\n"
    },
    {
      "commit": "fba0cf2950a91726e475fb180090cc25bcb11a7a",
      "tree": "222ec9ccc4e1710e5a269edd2fffce60ca1692d7",
      "parents": [
        "66ea8400383d5737b996a136f3aead0965f7be3d"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jun 29 17:53:36 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jul 07 13:23:55 2017 -0700"
      },
      "message": "AAPT2: Fix processing of quotes in XML\n\nWhen processing attributes in XML, quotes can\u0027t be used to mark a\nsection as whitespace preserving, so the assumption should be that the\nentire string is whitespace preserving, which makes quote characters\nliterals.\n\nBug: 62840718\nBug: 62840406\nTest: make aapt2_tests\nChange-Id: I4afff02148b5b8e78833abf1f323c2f5325d6155\n"
    },
    {
      "commit": "5b7337f77cf036dda2c7218ccf22dedc774dcf76",
      "tree": "b7aab8df43eeff70759f84e45da95b507edfddcc",
      "parents": [
        "8276d0e1527ad08aae3ec39529b10477358a1dae"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jun 26 14:57:22 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jun 28 11:20:17 2017 -0700"
      },
      "message": "AAPT2: Auto-version adaptive-icon XML\n\nAuto version adaptive-icon XML to v26.\n\nThis change makes the logic for generating versioned resources\nsimpler by changing the comparison function of ResTable_config\nto evaluate the sdkVersion property last, making configurations\nthat differ only in sdkVersion next to each other in a sorted vector.\n\nBug: 62316340\nTest: manual (verified output of tools/aapt2/integration-tests/AppOne)\nChange-Id: I977d45821722a65d2135efb4693304eacc565c9a\n"
    },
    {
      "commit": "516bd5f8622c24d774b72ed3825cdc860cd045d2",
      "tree": "5e4b603791607600f24e2e6d4f641ecc4a1e4989",
      "parents": [
        "4e9f527d1783363fddef60b1be570940bae11794",
        "ff2e03cfcef1e51826f41f513d4aa1d93edd8ec8"
      ],
      "author": {
        "name": "Sean Lu",
        "email": "sean_lu@htc.com",
        "time": "Mon Jun 26 22:59:35 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jun 26 22:59:35 2017 +0000"
      },
      "message": "Merge \"[Resources] house keeping in TypeList\"\nam: ff2e03cfce\n\nChange-Id: I22b0a87776d794f23f70f2f9d8d885761c0b8d14\n"
    },
    {
      "commit": "83df8423e97498b95368534e4c99f66006d2d06e",
      "tree": "c503ea00e8c2bd12e0817d4203426413ba2842f4",
      "parents": [
        "91464bfe6809bf506fada1ec3822d0f9d69b5bef"
      ],
      "author": {
        "name": "Sean Lu",
        "email": "sean_lu@htc.com",
        "time": "Mon Jun 26 18:19:28 2017 +0800"
      },
      "committer": {
        "name": "Sean Lu",
        "email": "sean_lu@htc.com",
        "time": "Mon Jun 26 18:25:37 2017 +0800"
      },
      "message": "[Resources] house keeping in TypeList\n\nSymptom: Type was freed but still may be access\nRoot Cause: TypeList not cleared\nSolution: clear the TypeList\nProject: AOSP\nNote: None\nTest: Yes\n\nChange-Id: I00225165a30d15a299b7a483ea393b4447d2a3fc\n"
    },
    {
      "commit": "34a0cdb98eb5561774ea4e7b3b602aad80c4a3cc",
      "tree": "adece5dc12a5ed961ead639525c7c1134ad56829",
      "parents": [
        "245281c056a5b880486671157b48d6c4e5815ce1"
      ],
      "author": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Thu Jun 08 15:40:38 2017 -0700"
      },
      "committer": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Thu Jun 08 17:22:43 2017 -0700"
      },
      "message": "Properly run window animations at vsync-sf (1/2)\n\n- Add new Choreographer instance that runs on vsync-sf\n- Use this new Choreographer for WindowAnimator, and remove all\nthe hacks around it\n\nTest: Open apps and close apps, notice no stutter\nTest: Screen zoom animations\nTest: go/wm-smoke\nBug: 36631902\nChange-Id: I988ae25645effc3ac20efa7cb9b68f23444da0d0\n"
    },
    {
      "commit": "19af4cc375fc407c9c232f13094f1f068f0a7602",
      "tree": "24be60d344e8c6f4d946f9e43cdc24235929064e",
      "parents": [
        "120d7b219db6a16a67889dd0bf86ccb608825257",
        "fa2fc0b263d2eaa3be5eaa5191ffe293abc81489"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 12 00:22:40 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 12 00:22:44 2017 +0000"
      },
      "message": "Merge \"AAPT: Include empty locale in getLocales\" into oc-dev"
    },
    {
      "commit": "fa2fc0b263d2eaa3be5eaa5191ffe293abc81489",
      "tree": "06d0b10479702aa4b8d68dd45705d44b64cc6911",
      "parents": [
        "33532e020873e580c421342e38b2352b836d30d4"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu May 11 12:15:26 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu May 11 12:26:52 2017 -0700"
      },
      "message": "AAPT: Include empty locale in getLocales\n\nAAPT dump badging relies on the empty locale being\npresent when there are no locales.\n\nBug: 38192121\nTest: manual\nChange-Id: I2f5c431d4fd07c525a2318e7b93be0e93c32448f\n"
    },
    {
      "commit": "32e7501a27f0f19bccdf9e91f9b87869c093f695",
      "tree": "50496484fd5cc1b79d7cf633db311eebbf37f3a6",
      "parents": [
        "f93dc8b6504200d0b6d502d924a70a743f9b1411"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue May 09 15:25:37 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu May 11 11:28:29 2017 -0700"
      },
      "message": "Fix support for @empty in style resolution\n\nIf @empty is encountered in XML, do not fallback\nto searching through the theme.\n\nBug: 36891052\nTest: make aapt2_tests\nTest: bit CtsContentTestCases:android.content.res.cts.TypedArrayTest\nChange-Id: Ie3bf7b70af9c7913513a1092afd95d26bec5e635\n"
    },
    {
      "commit": "4ca56978a9aea3f021a54ed9265de10811984d94",
      "tree": "1634b01c81b725ff3d286b7a8bf6cd16682cf7eb",
      "parents": [
        "9e55fcbdc254da098bb792f460296ff0649c3b00"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Apr 26 21:49:53 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Apr 26 21:55:31 2017 -0700"
      },
      "message": "AAPT2: Add workaround for non-standard package IDs\n\nThe dynamic ref table used to map build-time IDs to runtime IDs\nis mainly used for shared resource libraries and has a few built-in\nmappings (app 0x7f and framework 0x01).\n\nUsing a non-standard package ID like 0x80 causes a failure in package ID\nlookup. The solution is to ship the dynamic_ref_table with an identity mapping\nwith any resource table that uses a non-standard package ID.\n\nAdds some tests to ensure this works correctly.\n\nBug: 37498913\nTest: make libandroidfw_tests\nTest: make aapt2_tests\nChange-Id: Ic3f67942384d34e7fdcbc94ded360e940e3ebc8a\n"
    },
    {
      "commit": "33af6c730f9f7fc51f04516c7a22cac82cb9823e",
      "tree": "94f834ef6df06b8b534cb3a053de308f74793a09",
      "parents": [
        "c463bed8dbfbb5bbac791299e8997282685e64d2"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Mar 29 13:00:35 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Mar 29 20:11:04 2017 +0000"
      },
      "message": "AAPT2: Parse an ID encoded as a map\n\nID types should not be encoded as a map. AAPT and AAPT2 emit\nIDs as boolean types.\n\nSome apps exist that for some reason have their ID types encoded\nas empty maps. This is the case only for the auto generated IDs\nfrom enum values in \u003cattr\u003e tags.\n\nAllow IDs as maps and ignore their content when processing an APK\nfor optimizing.\n\nAlso fixes an issue with expected size of the ResTable_package struct.\n\nBug: 35861796\nTest: tested against the APK in b/35861796\nChange-Id: I29a19cd9777bb10bed6766cd42e35e50e098797b\n"
    },
    {
      "commit": "cc5a731fd725a4687625c93cf8490b63ce99884f",
      "tree": "ec19afff7b21bc39f932ae59a6c494c5b66e8c62",
      "parents": [
        "ad63bafad002ea9b88091a9760a4760fb53943d7"
      ],
      "author": {
        "name": "Jason Monk",
        "email": "jmonk@google.com",
        "time": "Thu Mar 23 11:13:22 2017 -0400"
      },
      "committer": {
        "name": "Jason Monk",
        "email": "jmonk@google.com",
        "time": "Thu Mar 23 11:25:59 2017 -0400"
      },
      "message": "Remove \"Allow persistent changes to the vendor overlay theme\"\n\nThis reverts commit 2dc804be11444565e3d1d151c2a693db3ade94c0.\nIt also removes the related calls from UiModeManager.\n\nFixes: 32721178\nTest: make \u0026 flash\nChange-Id: Id371bccec611155cc6910e46b3277c3d27fc1c79\n"
    },
    {
      "commit": "442c8226aafdad13d535cb831639253603caa796",
      "tree": "926d42d081cdc2a9eb40fe19b56b62c57265f9d7",
      "parents": [
        "86e4497982e5f4d356e12b2ecf4e454fba7272c7",
        "2b53748a2139ff069fd6cff16e145fc784fdc5b3"
      ],
      "author": {
        "name": "Yunlian Jiang",
        "email": "yunlian@google.com",
        "time": "Wed Mar 22 00:36:30 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Mar 22 00:36:30 2017 +0000"
      },
      "message": "Merge \"Fix warning: Potential leak of memory pointed to by \u0027set\u0027\" am: 58ba53bd53 am: 0889a8a070\nam: 2b53748a21\n\nChange-Id: Icec70d3e3efef0eea9c117911821dfd05bcb2ced\n"
    },
    {
      "commit": "0889a8a070a3efca70b0284b8df7145e82c7cc4f",
      "tree": "2b95cec99ac0dc2704af1723fc3e3f16848d9855",
      "parents": [
        "4ff81206e05880943dc34af4b4e23f644f06bde3",
        "58ba53bd53d08c8d23f8fa338aa4c4bb6bc86c91"
      ],
      "author": {
        "name": "Yunlian Jiang",
        "email": "yunlian@google.com",
        "time": "Wed Mar 22 00:21:57 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Mar 22 00:21:57 2017 +0000"
      },
      "message": "Merge \"Fix warning: Potential leak of memory pointed to by \u0027set\u0027\"\nam: 58ba53bd53\n\nChange-Id: I7186dc35fb7f4a3c226e35447ce9c748164e7bf8\n"
    },
    {
      "commit": "58ba53bd53d08c8d23f8fa338aa4c4bb6bc86c91",
      "tree": "a117080b7ca7f2c58ac5a4e6f6d666099d87aa7e",
      "parents": [
        "c6c19bd6c0f52c90a4571590f28b246d4258076f",
        "a7645bd9478afa463e9708fbc0b91ec51b3f4bf3"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 22 00:17:32 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 22 00:17:33 2017 +0000"
      },
      "message": "Merge \"Fix warning: Potential leak of memory pointed to by \u0027set\u0027\""
    },
    {
      "commit": "ed69ce84bdfa5ba82008a9b66485ef71c953657a",
      "tree": "a255aa92ea253c3cc2ec575279d4e28adfca8c2a",
      "parents": [
        "5c690d55dd2d0286db1ba3331a64769c07636ff8"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Mar 20 10:55:01 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Mar 20 14:51:13 2017 -0700"
      },
      "message": "libandroidfw: Fix mass logspam of ResourceTypes warnings\n\nAn overlay was incorrectly leaking its own resources into the\nframework resource package, which caused warnings for every app\nthat tried to access framework resources (all of them).\n\nThis change skips including any resources that are not overlaying\nanything (not present in IDMAP).\n\nBug: 36256974\nTest: make libandroidfw_tests\nChange-Id: I8c710af6849bb848938825aacca02799ee96c003\n"
    },
    {
      "commit": "0e25d9ae776053d9186200f2f698faea45313cb6",
      "tree": "30083398e936182005dd624b1ea0171b18840dc1",
      "parents": [
        "b0c47ef8779e445865e63355ab66265461e1f2a3"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 10 15:14:27 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 16 15:45:16 2017 -0700"
      },
      "message": "libandroidfw: Search all packages for an identifier\n\nIn order to allow multiple packages with the same package name, but\ndifferent package ID, we need to keep searching packages until the\nresource is found.\n\nBug: 30999713\nTest: make libandroidfw_tests\nChange-Id: If4540e12731ca18a18e9e550a9bf248606a586c5\n"
    },
    {
      "commit": "f4f093c52c295c97f14eb6b84e45af326c01d7de",
      "tree": "c8537f54f75057ebf3bb566e3150b61e6681886c",
      "parents": [
        "6587430d6f942ae9f6d66aabfd3748f6dd50be86",
        "7de2f9c73fbe93bfb7dff3c046cf7a3137599f6c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 08 00:42:57 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 08 00:43:00 2017 +0000"
      },
      "message": "Merge \"Reinstate codes to enable RRO on system server\""
    },
    {
      "commit": "136fd0764faf7a588b4a1b479d7a8cc6fe18fcc6",
      "tree": "91f7316861e5d879a627bd00578170791889c528",
      "parents": [
        "485c0feea53199b1d43db8782073044c846424c4"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 03 13:50:21 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 03 14:01:09 2017 -0800"
      },
      "message": "AAPT2: Fix parsing ResTable_type\n\nResTable_type\u0027s size changes due to it containing\nResTable_config. Make sure we check for the minimum size\nrequired to read it.\n\nBug: 35861796\nTest: Manual (don\u0027t have an integration test harness setup yet)\nChange-Id: Ifb0cd1d732625f59835c8ed0449adb78129636de\n"
    },
    {
      "commit": "7de2f9c73fbe93bfb7dff3c046cf7a3137599f6c",
      "tree": "d1db83724b9bc9f6e3dd82856d71675f65ed4a39",
      "parents": [
        "cb0629eaa1a63684b1e6dbb366d42e80a26a5da9"
      ],
      "author": {
        "name": "Jaekyun Seok",
        "email": "jaekyun@google.com",
        "time": "Thu Mar 02 12:45:10 2017 +0900"
      },
      "committer": {
        "name": "Jaekyun Seok",
        "email": "jaekyun@google.com",
        "time": "Fri Mar 03 07:23:23 2017 +0900"
      },
      "message": "Reinstate codes to enable RRO on system server\n\nTest: building succeeded and tested with sailfish\nBug: 35742444\nChange-Id: I99d0f1d097525d3eb46255d6cf823f6ae2a02385\n"
    },
    {
      "commit": "2e0d0f311100d8e0bb40d7d60b8498237f011f0c",
      "tree": "00377afd35d28d384d4ad735b250051481debe31",
      "parents": [
        "8716ef94194ad715ef596de4a38abb5b2a5c8186"
      ],
      "author": {
        "name": "Mårten Kongstad",
        "email": "marten.kongstad@sonymobile.com",
        "time": "Thu Jun 02 09:35:31 2016 +0200"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Feb 23 14:01:38 2017 -0800"
      },
      "message": "OMS: integrate OverlayManagerService into framework\n\nHand over ownership of overlays to OverlayManagerService.\n\nChanges to a package\u0027s overlays are propagated using the activity life\ncycle. Affected activities will be recreated as needed. This provides a\nwell-defined point to modify an application\u0027s assets while the\napplication is paused.\n\nConsolidate how overlays targeting the system and overlays targeting\nregular applications are handled. Previously, system overlays were\nhandled as a special case. Now, everything is handled identically. As a\nside effect, the call to idmap --scan during Zygote boot has become\nobsolete and is removed.\n\nInformation on what overlays to use is recorded in\nApplicationInfo.resourceDirs. The PackageManagerService is responsible\nfor the creation of ApplicationInfo objects. The OverlayManagerService\nis responsible for informing the PackageManagerService in advance about\nwhat resourceDirs to use.\n\nWhen launching an application, the ApplicationInfo is already populated\nwith up-to-date information about overlays.\n\nWhen enabling or disabling an overlay for a running application, the\nOverlayManagerService first notifies the PackageManagerService about the\nupdated resourceDirs. It then tells the ActivityManagerService to push\nthe new ApplicationInfo object to the application\u0027s ActivityThread.\nFinally the application requests its ResourcesManager to create new\nResourcesImpl objects based on the updated paths.\n\nChange-Id: Ib8afa05ccab4e2db558f89ce4423983c086bb61a\nCo-authored-by: Martin Wallgren \u003cmartin.wallgren@sonymobile.com\u003e\nSigned-off-by: Zoran Jovanovic \u003czoran.jovanovic@sonymobile.com\u003e\nBug: 31052947\nTest: run tests from \u0027OMS: tests for OverlayManagerService\u0027\n"
    },
    {
      "commit": "df0824ad4cd31a3e96653fe82ce969b08cd00be2",
      "tree": "12d8acb544a545a2bf061640de58d4ebfb6f3bad",
      "parents": [
        "6dd3529aa6ba6feaaaedfec3327846cdac0854e8",
        "95459806920dec34abb3214ab6e1a9b9213a2a61"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Thu Feb 23 07:36:12 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 23 07:36:16 2017 +0000"
      },
      "message": "Merge \"Revert \"OMS: integrate OverlayManagerService into framework\"\""
    },
    {
      "commit": "95459806920dec34abb3214ab6e1a9b9213a2a61",
      "tree": "1e4d0a136606788c633f5b823daca0caa4334499",
      "parents": [
        "21a3d1ad686dee97b9cf0ed80389ee2ab0d48013"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Thu Feb 23 07:35:39 2017 +0000"
      },
      "committer": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Thu Feb 23 07:35:39 2017 +0000"
      },
      "message": "Revert \"OMS: integrate OverlayManagerService into framework\"\n\nBug: 31052947\nBug: 35697944\n\nThis reverts commit 21a3d1ad686dee97b9cf0ed80389ee2ab0d48013.\n\nChange-Id: I2d86931020301524c26cf8c8e80d557c97fdd6c3\n"
    },
    {
      "commit": "0f09817859b19054aee3feded1dbf9757a5ec131",
      "tree": "c58d8246d55ef36eedcf1be7c75c7fb039c53782",
      "parents": [
        "a49777092042b1b36712d174bbb469f9fb396e26",
        "21a3d1ad686dee97b9cf0ed80389ee2ab0d48013"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 23 03:58:57 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 23 03:59:01 2017 +0000"
      },
      "message": "Merge \"OMS: integrate OverlayManagerService into framework\""
    },
    {
      "commit": "21a3d1ad686dee97b9cf0ed80389ee2ab0d48013",
      "tree": "79a415bcc73f60cda6dbac4ca414b22741c47266",
      "parents": [
        "f9bd2944694539f1dce74d420156cc50bbb4af14"
      ],
      "author": {
        "name": "Mårten Kongstad",
        "email": "marten.kongstad@sonymobile.com",
        "time": "Thu Jun 02 09:35:31 2016 +0200"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 21 14:29:43 2017 -0800"
      },
      "message": "OMS: integrate OverlayManagerService into framework\n\nHand over ownership of overlays to OverlayManagerService.\n\nChanges to a package\u0027s overlays are propagated using the activity life\ncycle. Affected activities will be recreated as needed. This provides a\nwell-defined point to modify an application\u0027s assets while the\napplication is paused.\n\nConsolidate how overlays targeting the system and overlays targeting\nregular applications are handled. Previously, system overlays were\nhandled as a special case. Now, everything is handled identically. As a\nside effect, the call to idmap --scan during Zygote boot has become\nobsolete and is removed.\n\nInformation on what overlays to use is recorded in\nApplicationInfo.resourceDirs. The PackageManagerService is responsible\nfor the creation of ApplicationInfo objects. The OverlayManagerService\nis responsible for informing the PackageManagerService in advance about\nwhat resourceDirs to use.\n\nWhen launching an application, the ApplicationInfo is already populated\nwith up-to-date information about overlays.\n\nWhen enabling or disabling an overlay for a running application, the\nOverlayManagerService first notifies the PackageManagerService about the\nupdated resourceDirs. It then tells the ActivityManagerService to push\nthe new ApplicationInfo object to the application\u0027s ActivityThread.\nFinally the application requests its ResourcesManager to create new\nResourcesImpl objects based on the updated paths.\n\nCo-authored-by: Martin Wallgren \u003cmartin.wallgren@sonymobile.com\u003e\nSigned-off-by: Zoran Jovanovic \u003czoran.jovanovic@sonymobile.com\u003e\nBug: 31052947\nTest: run tests from \u0027OMS: tests for OverlayManagerService\u0027\nChange-Id: Idc96dae6fc075d5373aa055bbf50e919136d7353\n"
    },
    {
      "commit": "21edf1976cabe05b419839785e3fc37e992c4e81",
      "tree": "8adcbf94ff8cd20f65cc7d7c93a1f83d145cc7d8",
      "parents": [
        "160bf4cbac1d4c8d8c22b6dbcd8c2421d61541b0",
        "45e2e95c2ffeb2d978e2cce80b729ef6ada3b8d2"
      ],
      "author": {
        "name": "Fyodor Kupolov",
        "email": "fkupolov@google.com",
        "time": "Tue Feb 21 22:29:32 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 21 22:29:35 2017 +0000"
      },
      "message": "Merge \"Check bounds in offsetToPtr\""
    },
    {
      "commit": "edb88a2b94093ddaeb11c3ea4b8e989c6822bff1",
      "tree": "3a00e476978c414b92cadd7c48e2ece1fdafcf89",
      "parents": [
        "18c527b96d94c31d789ec137cb12f6e13cd20916",
        "c8f71aa67ea599cb80205496cb67e9e7a121299c"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Sat Feb 18 00:39:13 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 18 00:39:18 2017 +0000"
      },
      "message": "Merge \"Add ResTable_sparseTypeEntry support\""
    },
    {
      "commit": "45e2e95c2ffeb2d978e2cce80b729ef6ada3b8d2",
      "tree": "992c98155bec887d70df51eb7b90a35a1fe564a9",
      "parents": [
        "3d52f79be4dba94f046709fabc1bfb911a670709"
      ],
      "author": {
        "name": "Fyodor Kupolov",
        "email": "fkupolov@google.com",
        "time": "Mon Feb 13 18:35:12 2017 -0800"
      },
      "committer": {
        "name": "Fyodor Kupolov",
        "email": "fkupolov@google.com",
        "time": "Thu Feb 16 09:50:00 2017 -0800"
      },
      "message": "Check bounds in offsetToPtr\n\nCheck whether specified offset belongs to mData.\nAlso added a default argument bufferSize to check the end offset.\n\nSize of the ashmem descriptor can be modified between\nashmem_get_size_region call and mmap. createFromParcel method was updated\nto check ashmem size again immediately after memory is mapped.\n\nTest: manual - using the test app from the bug\nBug: 34128677\nChange-Id: I3ecd1616a870ce20941ce9b20a1843d2b4295750\n"
    },
    {
      "commit": "c8f71aa67ea599cb80205496cb67e9e7a121299c",
      "tree": "2966aa97b09f04f9b7379fd93a7fc3ea1ae9009f",
      "parents": [
        "c535d122c6a58a152ff2581f936070c2695c45ba"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 08 07:03:50 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 15 12:40:02 2017 -0800"
      },
      "message": "Add ResTable_sparseTypeEntry support\n\nBenchmarks on bullhead-userdebug show that there is a negligent\nperformance impact when using sparse entries on a 30% loaded\nsparse type of 1000 resources.\n\nBenchmark                                             Time           CPU Iterations\n-----------------------------------------------------------------------------------\nBM_SparseEntryGetResourceSparseLarge                255 ns        254 ns    2751408\nBM_SparseEntryGetResourceNotSparseLarge             254 ns        254 ns    2756534\n\nBug: 27381711\nTest: make libandroidfw_tests aapt2_tests\nChange-Id: I051ea22f2f6b2bc3696e446adc9e2a34be18009f\n"
    },
    {
      "commit": "d1ecd7af687bcad0f87c37fe33515ff6c5ea0f1d",
      "tree": "63822987507c52532481ca86333751e4fb329953",
      "parents": [
        "c535d122c6a58a152ff2581f936070c2695c45ba"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 23 12:58:11 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 15 10:50:23 2017 -0800"
      },
      "message": "AssetManager2: Various fixes\n\n- Use FileMaps to open Assets (prevents closing of ApkAssets underlying\nzip)\n- Implement OpenDir and List methods\n- Fix issue where DynamicRefTable wasn\u0027t properly constructed\n\nTest: make libandroidfw_tests\nChange-Id: Ib21a84e1114d028120744aa3bc1c6eb9d9399fa8\n"
    },
    {
      "commit": "024d22fdb76a75f72ac1a421c4dd184bbfe2ba12",
      "tree": "074240054a9d37547ab9ddd3cac73a05e08b3f0e",
      "parents": [
        "34895c404b0153f021094d149cf36918edbd4552",
        "7542162cb1b1fd2ce8a26dd7f3fedc8de8160d38"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 09 16:17:15 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 09 16:17:18 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fix pseudolocalization to respect \u003cxliff:g\u003e\""
    },
    {
      "commit": "7542162cb1b1fd2ce8a26dd7f3fedc8de8160d38",
      "tree": "0358684e3551d67eb93cb80ae81ef391ba1a9091",
      "parents": [
        "c270de85cc0c398d9ce165592908d2740219a708"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jan 06 15:20:04 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 08 06:23:45 2017 -0800"
      },
      "message": "AAPT2: Fix pseudolocalization to respect \u003cxliff:g\u003e\n\nThe XLIFF \u0027g\u0027 tag specifies content that should NOT be translated.\nAAPT2\u0027s pseudolocalization process should respect it.\n\nBug:34064599\nTest: make libandroidfw_tests\nChange-Id: Ice437d7f0ff246730ee04896fd035e2d846148fb\n"
    },
    {
      "commit": "929d6517dfd338f0d481dbe6587643d5aef27ec6",
      "tree": "b80a93b93946bd4e982b9f4abd97a4c3aa43feb3",
      "parents": [
        "c270de85cc0c398d9ce165592908d2740219a708"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 16 19:11:19 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 08 06:04:52 2017 -0800"
      },
      "message": "AssetManager2: Add GetResourceId\n\nAdd ability to lookup a resource by name.\n\nTest: make libandroidfw_tests\nChange-Id: I262ba5ce4c9892458226fbdb44cf21f9877fb92d\n"
    },
    {
      "commit": "0c40524953f3d36a880f91183302a2ea5c722930",
      "tree": "eb7a15ddd974e1263864902f9f3dd019a47343fc",
      "parents": [
        "a9285db08883dbbe7b5eb9276cb52b7e01b42aa3"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jan 13 20:47:26 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 31 16:20:29 2017 -0800"
      },
      "message": "AssetManager2: Add other support methods\n\n- Add GetResourceConfigurations()\n- Add GetResourceLocales()\n- Add ResolveReference()\n- Add stub for GetResourceId()\n- Change LoadedArsc and ApkAssets factory method to return const\n\nTest: make libandroidfw_tests\nChange-Id: Ia797dc9381a523b1a3e7029048a413e544730379\n"
    },
    {
      "commit": "c6aada9c5789b2777b19c522d3cd5052bbe784a4",
      "tree": "e78d92b927ba7fb951c0898fe28957a19671a684",
      "parents": [
        "90572a4ab8ac393c57e896be3c608e634866ed38"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jan 13 15:34:14 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jan 27 16:52:53 2017 -0800"
      },
      "message": "LoadedArsc: Support feature splits.\n\nTest: make libandroidfw_tests\nChange-Id: I278273e688da597f4af86dd55f87750501ef8154\n"
    },
    {
      "commit": "90572a4ab8ac393c57e896be3c608e634866ed38",
      "tree": "524319d2edfd555f3b637bd332f1a494bf4c1114",
      "parents": [
        "904aca762c7e1c1ac5c005134ca802dba0ceed5b",
        "da431a22da38f9c4085b5d71ed9a9c6122c6a5a6"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jan 27 22:30:22 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 27 22:30:24 2017 +0000"
      },
      "message": "Merge \"libandroidfw: Add new support for shared libraries\""
    },
    {
      "commit": "6bb13da2789b2485a628e4fc077524b430661c82",
      "tree": "9e4b3765df56ebc451b3e2a77f007b6f5a055811",
      "parents": [
        "16382634fcc1c850b7c3b8f9646ac122bea818a1"
      ],
      "author": {
        "name": "Mårten Kongstad",
        "email": "marten.kongstad@sonymobile.com",
        "time": "Thu Jun 02 09:34:36 2016 +0200"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 24 20:26:51 2017 -0800"
      },
      "message": "Fix memory leak during idmap creation\n\nPlug a memory leak in AssetManager::createIdmap.\n\nBug: 31052947\nTest: use Valgrind and dummy native app\nChange-Id: I83af3a40516ed2d50d5a7c8ee175ed960fde9933\n"
    },
    {
      "commit": "4832745b84d6a358582f2264d22acacf25e01b07",
      "tree": "cde7e923e06892dfa7c9b1a10a10e8da91e007f1",
      "parents": [
        "a393ff7dc7e7e7002a400d37868e0d6c14507b43"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 23 17:03:35 2017 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 24 15:55:09 2017 -0800"
      },
      "message": "Add color mode to activity/window\n\nThe color mode lets an application request a wide color gamut for\na specific window. This will also be used in the future to request\nHDR. The color mode is currently either default (sRGB) or an undefined\nwide gamut color space chosen by the platform. These attributes could\nlater be used to choose a specific color space if we deem this important\nor useful.\n\nThis change also renames the various \"colorimetry\" attributes and\nconstants to \"color mode\" for consistency. These symbols were\nadded in O and can be safely renamed.\n\nTest: CtsColorModeTestCases\nBug: 32984164\nChange-Id: I4d4691dd12dbe3f3aa6a5cf893cff39aa16c739e\n"
    },
    {
      "commit": "c9ba55902123be5abcf2dcda5af9995be0b8d3d8",
      "tree": "953bf264c1f748816ad8ebc4898f580d163ce959",
      "parents": [
        "a2b1774d758b58fc5977f631eff76fa21d303906"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 18 16:34:42 2017 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 19 18:44:00 2017 -0800"
      },
      "message": "Add wide color gamut and HDR resource qualifiers\n\nBug: 32984164\nTest: Config_test, AaptConfig_test and aapt2_tests\nChange-Id: Ie9c82bfe2d36b1d6180ee223250ab5bb2ce90dd4\n"
    },
    {
      "commit": "1f9f11007db09bbbc156965e77b10de82a32a544",
      "tree": "e715a9edb691da38726c2c5487625bd35b05ec94",
      "parents": [
        "12375e9e0d14868cf63c0d6584c7a7d9440c30c4",
        "d5083f6f6b9bc76bbe64052bcec639eee752a321"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 19 23:40:02 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 23:40:06 2017 +0000"
      },
      "message": "Merge \"Move StringPiece to libandroidfw\""
    },
    {
      "commit": "2d00c0952eba704f2226cf3d264f708c72a2746b",
      "tree": "9a76a384322308f8bf8f28c84ac7e68e20e041be",
      "parents": [
        "f07d408798bf383991a5a994313c12151456dfa3",
        "9bddb4841371de1d83affeddef12b5bca3e69647"
      ],
      "author": {
        "name": "Roozbeh Pournader",
        "email": "roozbeh@google.com",
        "time": "Wed Jan 18 17:03:32 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 17:03:35 2017 +0000"
      },
      "message": "Merge \"Update locale data from in-tree ICU\""
    },
    {
      "commit": "d5083f6f6b9bc76bbe64052bcec639eee752a321",
      "tree": "29b5dfb74c7e9b12164ced408315b0ad8d5cf527",
      "parents": [
        "04e7b6c6de620406348142ba9dd65bad094e264b"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 16 15:07:21 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 17 18:55:51 2017 -0800"
      },
      "message": "Move StringPiece to libandroidfw\n\nlibandroidfw needs to make use of StringPiece, so\nmove it to libandroidfw and update all code referencing\nStringPiece in aapt2.\n\nTest: make libandroidfw_tests libaapt2_tests\nChange-Id: I68d7f0fc7c651b048d9d1f5e7971f10ef5349fa1\n"
    },
    {
      "commit": "fdaa9c58c9c1961862561b260164d380e3b17363",
      "tree": "6e6c8cf3c94ae5e2cb422672bbd2b5ecaa41a588",
      "parents": [
        "8bd15d1df27f5bd6790955af0db47a78d3ca93ba",
        "7ad1110ecd6a840fcd2895c62668828a1ca029c6"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 17 23:58:32 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 23:58:36 2017 +0000"
      },
      "message": "Merge \"New implementation of AssetManager/ResTable\""
    },
    {
      "commit": "9bddb4841371de1d83affeddef12b5bca3e69647",
      "tree": "f5df5991e8191929e4b52a19654dc2d23b735c4a",
      "parents": [
        "383679bc1b6fe33d80dcb9578f7b62f1e914a3ee"
      ],
      "author": {
        "name": "Roozbeh Pournader",
        "email": "roozbeh@google.com",
        "time": "Fri Jan 13 17:37:04 2017 -0800"
      },
      "committer": {
        "name": "Roozbeh Pournader",
        "email": "roozbeh@google.com",
        "time": "Fri Jan 13 17:37:04 2017 -0800"
      },
      "message": "Update locale data from in-tree ICU\n\nAlso add back script information for Yiddish old code (ji) that was\nremoved in ICU.\n\nBug: 26756576\nTest: none\nChange-Id: Ia785f86bf0407aeed6134ef9d44e504494256da2\n"
    },
    {
      "commit": "4115c6431321542de07ecbc45ac7352956e364b7",
      "tree": "c34328cb1f00ffe439d351d23ef70b9da98c50c6",
      "parents": [
        "1bc9d241f66abe7e61b8d7cf7964bbd2e13e2761",
        "cf246af30d007050f8b16bbbae6fbdf8d0559cca"
      ],
      "author": {
        "name": "Roozbeh Pournader",
        "email": "roozbeh@google.com",
        "time": "Sat Jan 14 01:10:25 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Jan 14 01:10:25 2017 +0000"
      },
      "message": "Treat Latin American locales specially\nam: cf246af30d\n\nChange-Id: I98ff3b1774e6cc3511fcd296d9cec5ccfce03c40\n"
    },
    {
      "commit": "9013325c3a6f34f6a44c1b5f20a6981e37089afb",
      "tree": "4d4118745b578e7279626aea103e1e73619fd7e5",
      "parents": [
        "e446c98bd1b79bcf1fb21cf59a8ec594c5fd5c23",
        "1a70573a683cd930b21c8e3f17cd4a9f37e5dfd2"
      ],
      "author": {
        "name": "Zak Cohen",
        "email": "zakcohen@google.com",
        "time": "Fri Jan 13 23:14:57 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 13 23:15:00 2017 +0000"
      },
      "message": "Merge changes from topic \u0027vrmode\u0027\n\n* changes:\n  Set ui mode in UiModeManagerService to vrheadset when VR mode is enabled.\n  Introduce new UI_MODE_TYPE_VR_HEADSET and qualifier.\n"
    },
    {
      "commit": "cf246af30d007050f8b16bbbae6fbdf8d0559cca",
      "tree": "57b8756537cb6f80af07c44e04602975511dff8c",
      "parents": [
        "5ee87b5b6a5e4ec1ba0272b50e3dfeef8a8382ab"
      ],
      "author": {
        "name": "Roozbeh Pournader",
        "email": "roozbeh@google.com",
        "time": "Tue Jan 10 15:24:32 2017 -0800"
      },
      "committer": {
        "name": "Roozbeh Pournader",
        "email": "roozbeh@google.com",
        "time": "Fri Jan 13 01:54:01 2017 +0000"
      },
      "message": "Treat Latin American locales specially\n\nDue to legacy reasons, Android translations of European Spanish were\nkept under \u0027es\u0027, while Latin American Spanish translations were kept\nunder \u0027es-US\u0027. The combination of this, and the new locale\npreference rules in Nougat, resulted in \u0027es\u0027 winning over \u0027es-US\u0027 for\nall Latin American locales, since \u0027es\u0027 was a direct ancestor, while\n\u0027es-US\u0027 was just a fallback.\n\nThe changes in Nougat had assumed that app developers would put Latin\nAmerican Spanish translations under \u0027es-419\u0027, but that could create a\nbackward-compatibility problem under older Android versions that did\nnot support three-digit region codes properly.\n\nThis CL keeps the Nougat logic and its locale parent tree, but\nspecial-cases es-US and es-MX to be treated as equivalents of es-419\nin cases where they are present and es-419 is not.\n\nBug: 31545805\nBug: 34126460\nTest: unit tests are included\nChange-Id: Iab26f41294587ee044685a5a6560520c7cbb06f7\n(cherry picked from commit a192a8ced65ceea8bfe44f0eac6a394cbf80d936)\n"
    },
    {
      "commit": "383ac409df65269d5fff247a86fa6ac0d90d2863",
      "tree": "8cd07920150caea3095bbc17830a20f08fd245e0",
      "parents": [
        "423f949594386aeb0a38b5d79a6b71af63c3a83b",
        "a192a8ced65ceea8bfe44f0eac6a394cbf80d936"
      ],
      "author": {
        "name": "Roozbeh Pournader",
        "email": "roozbeh@google.com",
        "time": "Fri Jan 13 01:53:11 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 13 01:53:15 2017 +0000"
      },
      "message": "Merge \"Treat Latin American locales specially\""
    },
    {
      "commit": "6f773a0d8717162f81ff21d943baaa539a2d6c7e",
      "tree": "ea99b80bd35011ad16e6c8380e4200fcdf7ee6bc",
      "parents": [
        "4391fae30e29371673e3de947f344f9b1073dc12"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Sep 28 16:15:30 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Jan 12 20:29:11 2017 +0000"
      },
      "message": "Replace cutils/log.h and android/log.h with log/log.h\n\nTest: compile\nBug: 34250038\nChange-Id: I42185a879beaa9bb244f53a968800392b854ac45\n"
    },
    {
      "commit": "da431a22da38f9c4085b5d71ed9a9c6122c6a5a6",
      "tree": "7fc684c1ec3c653ff98bdc8eff50addc081a02e1",
      "parents": [
        "7ad1110ecd6a840fcd2895c62668828a1ca029c6"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Dec 29 16:08:16 2016 -0500"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jan 11 17:20:36 2017 -0800"
      },
      "message": "libandroidfw: Add new support for shared libraries\n\nThis adds support for shared resource libraries in the new\nResTable/AssetManager implementation.\n\nThe dynamic package map encoded in resources.arsc is parsed\nand stored with LoadedArsc, and combined to form a resolved table\nin AssetManager2.\n\nBenchmarks show that this implementation is an order of magnitude\nfaster on angler-userdebug (make libandroidfw_benchmarks).\n\nTest: libandroidfw_tests\nChange-Id: I57c80248728b63b162bf8269ac9495b53c3e7fa0\n"
    },
    {
      "commit": "a192a8ced65ceea8bfe44f0eac6a394cbf80d936",
      "tree": "e8188ef2b11a50e0052cb7af40749fadad32dcea",
      "parents": [
        "51d34bf06aa67ab5b29c5541e777505ad37907d0"
      ],
      "author": {
        "name": "Roozbeh Pournader",
        "email": "roozbeh@google.com",
        "time": "Tue Jan 10 15:24:32 2017 -0800"
      },
      "committer": {
        "name": "Roozbeh Pournader",
        "email": "roozbeh@google.com",
        "time": "Wed Jan 11 15:52:08 2017 -0800"
      },
      "message": "Treat Latin American locales specially\n\nDue to legacy reasons, Android translations of European Spanish were\nkept under \u0027es\u0027, while Latin American Spanish translations were kept\nunder \u0027es-US\u0027. The combination of this, and the new locale\npreference rules in Nougat, resulted in \u0027es\u0027 winning over \u0027es-US\u0027 for\nall Latin American locales, since \u0027es\u0027 was a direct ancestor, while\n\u0027es-US\u0027 was just a fallback.\n\nThe changes in Nougat had assumed that app developers would put Latin\nAmerican Spanish translations under \u0027es-419\u0027, but that could create a\nbackward-compatibility problem under older Android versions that did\nnot support three-digit region codes properly.\n\nThis CL keeps the Nougat logic and its locale parent tree, but\nspecial-cases es-US and es-MX to be treated as equivalents of es-419\nin cases where they are present and es-419 is not.\n\nBug: 31545805\nBug: 34126460\nTest: unit tests are included\nChange-Id: Iab26f41294587ee044685a5a6560520c7cbb06f7\n"
    },
    {
      "commit": "7ad1110ecd6a840fcd2895c62668828a1ca029c6",
      "tree": "f9f11b0849333b1bbcb37b76170787414c92ddbc",
      "parents": [
        "e2489c67e1f17938556a29197eeff9221caddd35"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 28 16:39:15 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jan 11 13:30:57 2017 -0800"
      },
      "message": "New implementation of AssetManager/ResTable\n\nThe multiwindow model and Resources-per-activity\nmodel that came in N puts greater demands on AssetManagers.\nThey are created whenever window dimensions change, which\ncan be frequently. There is a need to be able to cheaply\ncreate a new AssetManager for each Activity, which shares\na lot of underlying state.\n\nIn order to make the creation of AssetManagers cheap,\nwe need a new implementation of the native AssetManager\nand ResTable to support immutable representations of\nAPKs. This new data structure/class is ApkAssets.\n\nApkAssets have the same functionality of an AssetManager, except\nthat they operate on a single APK, and they do not do any caching.\nOnce loaded, they are immutable.\n\nApkAssets will be exposed as a Java object, with its implementation in\nnative code. The existing Java StringBlock will be owned by ApkAssets,\nwhich means that Strings can be shared across AssetManagers.\n\nApkAssets can be cached by the ResourcesManager. Creating an AssetManager\nrequires only a list of ApkAssets and a configuration.\n\nAssetManager2 (named with the suffix \u00272\u0027 for now while transitioning\nto the new implementation) caches bags that are accessed.\n\nSince ApkAssets are expected to be kept around longer, they do more validation\nof the resource table, which cause slower load times. Measured on an angler-userdebug,\nloading the framework assets takes 11ms with ApkAssets, and 2ms with the old\nAssetManager implementation.\n\nThe tradeoff is that there does not need to be any security checks once an ApkAssets\nis loaded, and regular resource retrieval is faster. Measured on an angler-userdebug,\naccessing resource (android:string/ok) with many locales takes 18us with AssetManager2,\nand 19us with AssetManager (this is per resource, so these add up).\n\nTest: make libandroidfw_tests\nChange-Id: Id0e57ee828f17008891fe3741935a9be8830b01d\n"
    },
    {
      "commit": "1a6acdbb86c3e72bdb0a4dcab3bda58cbc4ea34c",
      "tree": "1b243f434a14a25dc0eb39097293c3f27b74a54a",
      "parents": [
        "3c6f28aa5968b1edb823495efa15e7358de5261e"
      ],
      "author": {
        "name": "Zak Cohen",
        "email": "zakcohen@google.com",
        "time": "Mon Dec 12 15:21:21 2016 -0800"
      },
      "committer": {
        "name": "Zak Cohen",
        "email": "zakcohen@google.com",
        "time": "Wed Jan 11 11:44:47 2017 -0800"
      },
      "message": "Introduce new UI_MODE_TYPE_VR_HEADSET and qualifier.\n\nBug: 30989383\nTest: Unit test for aapt2\nChange-Id: I66dc65af6327b94fed74538bee08cada0b8be4fa\n"
    },
    {
      "commit": "db15537e6e0d35c7ed3b1bef45e421760be70683",
      "tree": "a37853e5f3889f478cbcd204b46d1c8c640215f2",
      "parents": [
        "505d8262ab8702fea19c926bdff4d66bbbaa766a",
        "082a1721b5165420e11319b98eefaa35d0feb844"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Jan 11 08:30:03 2017 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Jan 11 08:30:17 2017 -0800"
      },
      "message": "resolve merge conflicts of 082a1721b516 to master\n\nTest: compile\nBug: 26552300\nBug: 31289077\nChange-Id: I17f178f425975c1c0dbd48091d25b101956d505e\n"
    },
    {
      "commit": "ef8ccc8510d2c66c4807f15962c3d53235af5fc5",
      "tree": "eeed237443ea2350067ec9501fde2d07c65b2f39",
      "parents": [
        "d544a4c682232f5bd3ae5d6eb5a11c978ddcf6aa",
        "6143cbf1e5ab5e879044748c497e05b36ad4c36a"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Jan 11 15:40:24 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 11 15:40:24 2017 +0000"
      },
      "message": "Merge \"Replace cutils/log.h and log/logger.h with log/log.h\" am: e7fcbcb991\nam: 6143cbf1e5\n\nChange-Id: Id192d8dd973fe9e70acab72bae9856bc8a62ac75\n"
    },
    {
      "commit": "52eb4e01a49fe2e94555c000de38bbcbbb13401b",
      "tree": "a8bcb3cefc94c7366632782f10bfe03880bf189c",
      "parents": [
        "ccda81e58f8456a19b02573d6787f11729904a7b"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Sep 28 16:15:30 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Jan 09 14:31:34 2017 -0800"
      },
      "message": "Replace cutils/log.h and log/logger.h with log/log.h\n\nTest: compile\nBug: 26552300\nBug: 31289077\nChange-Id: I578b15b48f0fc2807a92abbc69a377c3d2191496\n"
    },
    {
      "commit": "06d3e8fec7e2b29f99d755bee849023d88957953",
      "tree": "328055c7a9632e9660e836d4dfd0cfcc0450700e",
      "parents": [
        "0a454c39cb5bc03cd646546aa3b8baaed1962178"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jan 05 17:03:55 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jan 06 16:51:48 2017 -0800"
      },
      "message": "libandroidfw: Revert null check in ApplyStyle\n\nThe out parameter `out_indices` is expected to be non-null\nand so the extra null check adds a cost to performance\nand opens the door to misusing the API by not supplying\n`out_indices`.\n\nTest: make libandroidfw_tests\nChange-Id: Ie66fd837c5e24ec2838156e7b67f54c15cd27933\n"
    },
    {
      "commit": "a7645bd9478afa463e9708fbc0b91ec51b3f4bf3",
      "tree": "c4c940e6d0ceb8054899abc5e2b4ef4c334380f0",
      "parents": [
        "fbeacb02c0fe331242dd1815a28e2b2f1d5a42c6"
      ],
      "author": {
        "name": "Yunlian Jiang",
        "email": "yunlian@google.com",
        "time": "Tue Dec 13 19:42:30 2016 -0800"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Dec 13 19:42:30 2016 -0800"
      },
      "message": "Fix warning: Potential leak of memory pointed to by \u0027set\u0027\n\nBug: None\nTest: The warning is gone.\nChange-Id: Iacd0b53411ad07c1f45eb5b995138ac30ab51c76\n"
    },
    {
      "commit": "351471f928022fb22a1b19f9e5e647a7901152fd",
      "tree": "890dadccf3947fe8cffba1315a3a1704c4eae143",
      "parents": [
        "d202a96073440c7d815a2de9f5136e0ef1e7e0e1"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Dec 12 14:08:13 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Dec 12 14:10:46 2016 -0800"
      },
      "message": "libandroidfw: Make tests less flaky\n\nChanging any of the test APKs could change resource IDs.\nThe resource IDs are all made public and assigned an ID\nto avoid this issue.\nTest: make libandroidfw_tests\n\nChange-Id: Idd17c25f4ac86a0ad5b2b8da6f968e5d9b2346c1\n"
    },
    {
      "commit": "4c67a475a334e4f65238d439a3339195e03c03be",
      "tree": "a853680b90b834cb0a81be09f77be8d0ca8a06da",
      "parents": [
        "7dbbf956f73012ad0ea50bba37a21555cccfc726"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 10 16:43:59 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Dec 05 19:03:47 2016 -0800"
      },
      "message": "Make tests use APKs instead of exploded APKs\n\nTests would expect parts of the APK to be unzipped and\nmaintained. Instead, we now decompress the required files\nfrom the test APKs on test setup. This simplifies\ntest maintenance substantially.\n\nTest: make libandroidfw_tests \u0026\u0026 libandroidfw_tests --testdata\u003dframeworks/base/libs/androidfw/tests/data\nChange-Id: I3d2100af22df913e02401dedcf9842cdb32b2a3b\n"
    },
    {
      "commit": "434e16c7bc4a3253af173d4545ac5f00a84240f0",
      "tree": "4ae028514a74a2cb5be0480c6a76bf756b679281",
      "parents": [
        "35b99da33a34620283423ec84023359867b69645",
        "9625912b7f0abd8fe74e15b58f4c70d89d48872a"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sat Dec 03 04:22:44 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Dec 03 04:22:44 2016 +0000"
      },
      "message": "Merge \"Convert libandroidfw to Android.bp\" am: 46ec8dba83\nam: 9625912b7f\n\nChange-Id: I1f52bfd7e0dc8b5a543b41f8c4a3b7b2a35355c9\n"
    },
    {
      "commit": "9625912b7f0abd8fe74e15b58f4c70d89d48872a",
      "tree": "2bc52286afe678105f756d36d4ae4a5e9cdedbb4",
      "parents": [
        "e8c0e1098ec3aaac9e179eeafe0434ad33f4fb0a",
        "46ec8dba83a1d0e2c2d1587daea13f5bce9bd237"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sat Dec 03 04:14:58 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Dec 03 04:14:58 2016 +0000"
      },
      "message": "Merge \"Convert libandroidfw to Android.bp\"\nam: 46ec8dba83\n\nChange-Id: I32a737c491eeb95ad080adacd47602ee814ba0cb\n"
    },
    {
      "commit": "f32adf447511d54c2aa0948d3c1ef44d461538ac",
      "tree": "20cff4b57e17bea6cf131cb3fa630e7320b300a0",
      "parents": [
        "0730df7369147a5f21ef95eef347361d9ad308b3"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Nov 23 10:39:40 2016 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Dec 02 12:49:20 2016 -0800"
      },
      "message": "Clean up ApplyStyle JNI\n\nBug: 32573798\n\nMark input uint32_t[] as const. Use Read-only JNI\narray access for input as it\u0027s faster than critical access.\n\nUse non-movable arrays for TypedArray so that the address can\nbe resolved and stored, avoiding the need to do JNI array\naccess for the output.\n\nIndicies is always non-null, so remove the optional checks.\n\nEliminate unused return value.\n\nBenchmark results:\ntwelveKeyInflate 4963us -\u003e 4713us\nsimpleViewInflate 73us -\u003e 60us\n\nTest: Device boots, benchmarks show faster\n\nChange-Id: Ic3bde5aee31407d8903913f97f2218daf074499a\n"
    },
    {
      "commit": "ae21f6f5b02db9dbe32e6a0898cca3e16e05b429",
      "tree": "7affc4379417d1ee635616141e943abb4b818f67",
      "parents": [
        "652521ae7bc0e79d19e233b3bd43851641f81408",
        "5705ad69db0e4301bb3ae0b722049879536c857d"
      ],
      "author": {
        "name": "Jaekyun Seok",
        "email": "jaekyun@google.com",
        "time": "Fri Dec 02 19:43:36 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Dec 02 19:43:36 2016 +0000"
      },
      "message": "Merge \"Remove static link in Android framework under /frameworks/base.\" am: c60963e451\nam: 5705ad69db\n\nChange-Id: I3f2c38332115a7b52b893629f2a5007d75c2831d\n"
    },
    {
      "commit": "5705ad69db0e4301bb3ae0b722049879536c857d",
      "tree": "befae393ee119f54a898d19f836194663cb60528",
      "parents": [
        "bbcd9d26b13117c867cd6be6812f7f330c1e8554",
        "c60963e451ebfaf99bafef7c3a0fe3439d38a2a4"
      ],
      "author": {
        "name": "Jaekyun Seok",
        "email": "jaekyun@google.com",
        "time": "Fri Dec 02 19:35:03 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Dec 02 19:35:03 2016 +0000"
      },
      "message": "Merge \"Remove static link in Android framework under /frameworks/base.\"\nam: c60963e451\n\nChange-Id: I0bbb3cf9a66752f6ee8218a4ac5545091130bbed\n"
    },
    {
      "commit": "ce2221e0ff5eeee38a65059a8f1e9ed1ab23cfb9",
      "tree": "a8511e6c643ac4bdac2e55d899e535fc88229d53",
      "parents": [
        "c60963e451ebfaf99bafef7c3a0fe3439d38a2a4"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Dec 01 15:55:00 2016 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Dec 02 11:23:12 2016 -0800"
      },
      "message": "Convert libandroidfw to Android.bp\n\nSee build/soong/README.md for more information.\n\nTest: libandroidfw_tests\nMerged-In: I4e575d62f724d5ffe43f12ff5642fb6799f7819e\nChange-Id: I4e575d62f724d5ffe43f12ff5642fb6799f7819e\n(cherry picked from commit 4f8d9e69eb63878a99abedfdc7b92c6284f30605)\n"
    }
  ],
  "next": "4f8d9e69eb63878a99abedfdc7b92c6284f30605"
}
