)]}'
{
  "log": [
    {
      "commit": "882f8168b043f667c2523eaaca0d00c9cb7a8f5b",
      "tree": "5258c2acfa6d4347cc2647eef8120010b1a51d41",
      "parents": [
        "51497a94036a52991ea5b36451e763616cfbbcbe",
        "2582465bb437d3700b846fe66416f1c650e9345c"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Oct 18 20:40:50 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 18 20:40:50 2016 +0000"
      },
      "message": "Fix race with Asset destruction and printing allocation stats\nam: 2582465bb4\n\nChange-Id: I1dbb7609fa4d770e513e6f628e4c598600607383\n"
    },
    {
      "commit": "2582465bb437d3700b846fe66416f1c650e9345c",
      "tree": "db0b6e84410b7aef271f72d5b03aa66b61f89cf9",
      "parents": [
        "c81e1f15d28711d69f576d34741ec06faea0c4de"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Oct 17 13:50:56 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Oct 18 01:27:39 2016 +0000"
      },
      "message": "Fix race with Asset destruction and printing allocation stats\n\nA race could occur when printing the list of Asset allocations for\ndebugging purposes.\n\nEach Asset object would insert themselves into a global linked list\non construction and remove themselves on destruction. Iterating the list\nand the insertion/remove operations all acquire a global lock.\n\nThe race occurs after the Asset subclass destructor runs but before the Asset\nbase class destructor runs, which performs the actual removal from the list.\n\nThe vtable of the object being destroyed ends up pointing at the base Asset class\u0027\nvtable, and during the iteration of the global list, a pure virtual method is called\nleading to an abort, since the wrong vtable is dereferenced.\n\nThis change moves the insertion/removal of the Asset object into the global list\nto the concrete class, which adds some maintenance overhead but solves the problem.\n\nBug:31113965\nTest: make libandroidfw_tests\nChange-Id: I1a620897e5e04a8519ee247883bba0719b1fa6f3\n(cherry picked from commit 0358efe4f76f42d9eea91600202a5ab0831d9cef)\n"
    },
    {
      "commit": "1f36a2166b5bfe9afa2a6379573fda58868c6e28",
      "tree": "8edfd6cdef751f389f9cd6a1bb46d4e07717a2f3",
      "parents": [
        "4a6e2466713e50d642b375b621265013d73e5d8e"
      ],
      "author": {
        "name": "Jakub Adamek",
        "email": "jakuba@google.com",
        "time": "Mon Oct 17 14:53:40 2016 +0100"
      },
      "committer": {
        "name": "Jakub Adamek",
        "email": "jakuba@google.com",
        "time": "Mon Oct 17 15:52:48 2016 +0100"
      },
      "message": "Search for RRO both in SKU subdir and in vendor/overlay\n\nCurrently, if the \"ro.boot.vendor.overlay.subdir\" property is set, we\nonly search in the subdir. It seems more powerful to search both in\nthere and in the standard /vendor/overlay directory.\n\nAlso, RRO packages have the \"priority\" attribute in the \u003coverlay\u003e\nattribute in AndroidManifest.xml which serves for disambiguation.\n\nBug: 32202741\nChange-Id: I7acff1b7f0e153830924047349f003295648a53b\n"
    },
    {
      "commit": "c03d9483f0380fb7babfdeb11d6762bc6c8d784c",
      "tree": "1586b9da530a3ae49bfd79e9745f9a1c9b19b483",
      "parents": [
        "c350547dcffec2ca490f881019c08cd4339251dc"
      ],
      "author": {
        "name": "Jakub Adamek",
        "email": "jakuba@google.com",
        "time": "Fri Sep 30 09:19:09 2016 +0100"
      },
      "committer": {
        "name": "Jakub Adamek",
        "email": "jakuba@google.com",
        "time": "Mon Oct 03 10:14:12 2016 +0100"
      },
      "message": "Change name of overlay subdir property to sku.\n\nAlso move the SKU subdirectories directly under /vendor/overlay.\n\nBug: 31692079\nChange-Id: I68c712b13918cc99629534580ee4f77d9e5b3823\n"
    },
    {
      "commit": "1c15c635785c64aee961f895dabd184cc2e9e0b1",
      "tree": "bf3ac913df3dda46004dd124ce976887b2e7aadb",
      "parents": [
        "6d2c9c29dc2bcfbfdaf272cc3082fc7ae6fcda30"
      ],
      "author": {
        "name": "Jakub Adamek",
        "email": "jakuba@google.com",
        "time": "Fri Sep 23 09:07:11 2016 +0100"
      },
      "committer": {
        "name": "Jakub Adamek",
        "email": "jakuba@google.com",
        "time": "Wed Sep 28 10:09:20 2016 +0100"
      },
      "message": "Search for runtime resource overlays in subdir.\n\nSee go/sku-colors. This changes the directory to search for framework\noverlays if the right system property is defined. This allows\nOEMs to specify different resources based on device SKUs.\n\nBug: 31692079\nChange-Id: I9cb121b286b7f52aa26de1757fde1f3110cd47fd\n"
    },
    {
      "commit": "76da37e1cf5c1381d9ccbaca86463fca52bd40f5",
      "tree": "1f81253db8a6e991f23fc30f5b71f88952100565",
      "parents": [
        "df9dee869c9efa18619b28691c88415b4f115df7"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu May 19 18:25:28 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri May 20 15:04:09 2016 -0700"
      },
      "message": "Performance improvements in AssetManager\n\nChange the implementation of getLocales() to iterate the set of\nconfigurations using a templated method, instead of using the result\nof getConfigurations().\n\nAlso remove the check for AndroidManifest.xml when adding an asset path.\nThis is unneccessary.\n\nBug:28625993\nChange-Id: I16de5da598d0c371421d1dc8eee054dce9baf53a\n"
    },
    {
      "commit": "8ac51d14b614ba6a12df2ba90d50a01f50d548aa",
      "tree": "b2afded5a45d6c5d14569b6691354d1613c1eb81",
      "parents": [
        "b42afe9be02b23c50c0479e93df2a853be7c369a"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue May 10 10:01:12 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue May 10 10:45:52 2016 -0700"
      },
      "message": "Resource shared libraries: fix theme references\n\nTheme values that would reference other theme values would not work\nif they were declared in a shared library.\n\nWe now introduce a parallel resource type to TYPE_DYNAMIC_REFERENCE,\nTYPE_DYNAMIC_ATTRIBUTE, which allows us to lookup and resolve\ntheme value references from shared libraries.\n\nBug:28687378\nChange-Id: I4f2364e3e8b567679f90784fcaaea12b6b05e926\n"
    },
    {
      "commit": "7134ce35406f942dd640a95583430b39e770f0da",
      "tree": "8e20bbd6fcb41e4af7bacc93c4dc08f4a3e08cc9",
      "parents": [
        "5bddeaa9bce6325c900eeabaa6a1cdfaf83910c6"
      ],
      "author": {
        "name": "Shammi Khattar",
        "email": "skhattar@codeaurora.org",
        "time": "Wed Apr 06 15:33:03 2016 -0700"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Apr 28 15:07:34 2016 +0000"
      },
      "message": "ZipUtils: Fix wrong timestamps when getEntryInfo\n\n\"tm_mon\" format should align with \"ZipEntry::setModWhen\" in aapt.\n\"tm_isdst\" should be initialized, or it will because random value\nand cause error in function mktime().\n\nBUG:28021145\n\n(cherry picked from commit bb0eb3f4cb33c077b296a18555a9a1a966ff696b)\n\nChange-Id: Ia39cf63fcd4bb39c24af080562960279106f526c\n"
    },
    {
      "commit": "ff5808d223d6359448afc532717b8ccfdc5182d8",
      "tree": "39db02737ed994b392e44838612d7ec610f1edd4",
      "parents": [
        "0dd17c840645e6d1fd67276b45420ca742df6110"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 23 17:49:53 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Mar 09 17:33:14 2016 -0800"
      },
      "message": "AssetManager: Cache a pre-filtered list of configurations\n\nWhen we set the parameters for a ResTable, we can pre-filter which\nresources match and only look at that smaller list when getting entries.\nThis helps A LOT with types that have many configurations, like strings\nand all their various locales.\n\nWe must store the cached entries in a parallel data structure because parts\nof the main Type object are shared with other ResTables, causing data races.\n\nBug:25499111\nChange-Id: I63e37dcbd683fc9f1e7d0f3a6ed4c1c01e0fc575\n"
    },
    {
      "commit": "53185a50d18239088f5a2f3cf9a11a6da7a286fb",
      "tree": "26cc3c3216f092f7e96cb29970a8dd0ec0828ef3",
      "parents": [
        "310355d28e73ff4192e597b99af202a9045fa7e2",
        "fa7d78ae872b8b96ac4a6f945da0627707b00798"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Mar 07 20:22:23 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 07 20:22:24 2016 +0000"
      },
      "message": "Merge \"Revert \"AssetManager: Cache a pre-filtered list of configurations\"\" into nyc-dev"
    },
    {
      "commit": "fa7d78ae872b8b96ac4a6f945da0627707b00798",
      "tree": "6d35b8d1190dc8b8c4c72df05d688a6d7b2946c9",
      "parents": [
        "d4b169173ad7805369204277580d3942cb08174a"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Mar 07 19:39:56 2016 +0000"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Mar 07 19:39:56 2016 +0000"
      },
      "message": "Revert \"AssetManager: Cache a pre-filtered list of configurations\"\n\nThere is a race due to the modification of shared data structures in the framework ResTable.\n\nSee b/27499488\n\nThis reverts commit d4b169173ad7805369204277580d3942cb08174a.\n\nChange-Id: I3f400a2ad3b5ffc652b84dd5fe777f7cf34b5548\n"
    },
    {
      "commit": "7960898f6f886aadda1dd3d7a89106dde9f44217",
      "tree": "a69917218d192b8050ffeb70b39e0cfaee75c32e",
      "parents": [
        "ba5c35b79731e91edc4d452d5e6b49a8b5434a55"
      ],
      "author": {
        "name": "Roozbeh Pournader",
        "email": "roozbeh@google.com",
        "time": "Thu Mar 03 15:06:46 2016 -0800"
      },
      "committer": {
        "name": "Roozbeh Pournader",
        "email": "roozbeh@google.com",
        "time": "Thu Mar 03 15:19:37 2016 -0800"
      },
      "message": "Fix script-related parts of locale resource matching\n\nPreviously, a bit was kept to find if the script of a locale was\nexplicitly \"provided\" in a resource. This was not backward\ncompatible, and failed in some edge cases when the package was\ncreated with older versions of AAPT that did not set the bit.\n\nThe cases would happen when the old resource had an explicit script\nspecified in its locale, but since the \"provided\" bit was not set in\nthe package, we would assume that the script was computed by us.\n\nThis CL replaces the \"provided\" bit with a \"computed\" bit, so the\ndefault value of the bit (set to \"false\" for old packages) would be\ncorrect.\n\nBug: 27156990\nChange-Id: I99e7f1ad8f70c90e25ab3640ed34cc1a6f8d1d64\n"
    },
    {
      "commit": "d4b169173ad7805369204277580d3942cb08174a",
      "tree": "0acb1db94d43505bbb2db989a9d23757b6729976",
      "parents": [
        "ab9a9b09fdd9b8c9f666149f9840a09a97b91885"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 23 17:49:53 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Feb 25 15:29:17 2016 -0800"
      },
      "message": "AssetManager: Cache a pre-filtered list of configurations\n\nWhen we set the parameters for a ResTable, we can pre-filter which\nresources match and only look at that smaller list when getting entries.\nThis helps A LOT with types that have many configurations, like strings\nand all their various locales.\n\nBug:25499111\nChange-Id: Ie6894c44bc67e16a10dbe028c8f3e119e5c29ac7\n"
    },
    {
      "commit": "27953c349fa1c46698f57ae5f26339560c21adac",
      "tree": "e6be55731d70f74688c8ba84c91fd31d7901cc0b",
      "parents": [
        "c92035b1aa2b064d97377795553c11261f7e7cce"
      ],
      "author": {
        "name": "Roozbeh Pournader",
        "email": "roozbeh@google.com",
        "time": "Mon Feb 01 13:49:52 2016 -0800"
      },
      "committer": {
        "name": "Roozbeh Pournader",
        "email": "roozbeh@google.com",
        "time": "Mon Feb 01 14:56:52 2016 -0800"
      },
      "message": "Make default resources a better match for en-US requests\n\nWhen locale fallback landed, resources which specified an \u0027English\u0027\nlocale started to be considered a better match for en-US, even though\ntraditionally, apps tend to ship US English resources under their\ndefault locale.\n\nThis fixes that, and makes en-US requests match default locales.\n\nBug: 26756573\nBug: 26789680\nBug: 26803868\nChange-Id: I460c276bfc6ddba0439dcdf87497a0aece0fa05d\n"
    },
    {
      "commit": "7cdb3e3e2dad1d48d666fe44e37e724341a2c507",
      "tree": "15ebc76a170c7f83032636025da637c71b7fc99c",
      "parents": [
        "ac7c606c90bcf3bfea2b04f518680baf5549b9f5"
      ],
      "author": {
        "name": "Roozbeh Pournader",
        "email": "roozbeh@google.com",
        "time": "Fri Jan 22 14:44:53 2016 -0800"
      },
      "committer": {
        "name": "Roozbeh Pournader",
        "email": "roozbeh@google.com",
        "time": "Fri Jan 22 14:47:09 2016 -0800"
      },
      "message": "Move localeScriptWasProvided to end of ResTable_config\n\nThis is to try and be safer with different versions potentially\ninterpreting the data differently.\n\nChange-Id: I599b6a20d908e8379727a5b06cc6631f1954bcff\n"
    },
    {
      "commit": "6cfa1cc4b0a60dcae6f97efd3efdd6f6033ab3be",
      "tree": "089e92e80acf1d3a987d812dbed2d248a100f080",
      "parents": [
        "17351b673522e52fab0e0ed371fa0f68e3a2879a",
        "3d3fe5026a6a3e951ef56ad16a100b8d5ae84574"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri Jan 22 00:31:40 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 22 00:31:40 2016 +0000"
      },
      "message": "Merge \"Add choreographer API to the NDK.\""
    },
    {
      "commit": "3d3fe5026a6a3e951ef56ad16a100b8d5ae84574",
      "tree": "80cf611c06bd2e4b1ba0965db1bd5b3ccc8bb1e8",
      "parents": [
        "e501c39e2cbfbe4cac473e97f8cae55ace3bb48c"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri Dec 04 17:59:42 2015 +0000"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Thu Jan 21 16:30:33 2016 -0800"
      },
      "message": "Add choreographer API to the NDK.\n\nChange-Id: Icb8cffd3cd3bd06814466be72db3e26f6a62cbc6\n"
    },
    {
      "commit": "b927c559e1ef8530b08712507f320502627db298",
      "tree": "f0d2fd051cb4486239e6f6187e0da53e416fdaeb",
      "parents": [
        "ac3e599069e1b87ea190f008aef60a506c8561c7"
      ],
      "author": {
        "name": "Roozbeh Pournader",
        "email": "roozbeh@google.com",
        "time": "Fri Jan 15 11:23:42 2016 -0800"
      },
      "committer": {
        "name": "Roozbeh Pournader",
        "email": "roozbeh@google.com",
        "time": "Thu Jan 21 13:47:22 2016 -0800"
      },
      "message": "Implement smarter locale resource selection\n\n* Add support for determining script from language and region.\n* Add support for determining special parents of locales.\n* Add support for smart comparison of locales with only a difference\n  in region, using the locale parentage tree.\n* Fix LocaleData.matchScore() to not fallback to old locale matching\n  behavior if we can\u0027t determine a script.\n* Allow four-character variant codes. (Previously, only five- to\n  eight-character variant codes were allowed.)\n\nBug: 7296673\nBug: 26589793\nChange-Id: Ibde0a48c0564ff383b41068095a5cbacfe7b94bc\n"
    },
    {
      "commit": "1c686f2ce6cbfa3fdb598f452aa31d38f3eb2320",
      "tree": "231683457601efdf2050ebc9ae863b99c3f056ed",
      "parents": [
        "c1f9e7c4875e791e108c79382508aab8d171f25f"
      ],
      "author": {
        "name": "Roozbeh Pournader",
        "email": "roozbeh@google.com",
        "time": "Fri Dec 18 14:22:14 2015 -0800"
      },
      "committer": {
        "name": "Roozbeh Pournader",
        "email": "roozbeh@google.com",
        "time": "Mon Jan 04 13:53:54 2016 -0800"
      },
      "message": "Avoid matching system locales in locale negotiation\n\nAlso:\n1. Add AssetManager method for finding non-system locales: This is\nused in per-app locale negotiation. (Normally,\nAssetManager#getLocales() returns both system and non-system\nlocales.)\n\n2. Match pseudolocales correctly in locale negotiation.\n\nBug: 25800576\nBug: 26236938\nChange-Id: I116caf3a91c290deb4ad68b291c65b7035b18dd4\n"
    },
    {
      "commit": "44581ff4db54bbaa30365ed210e67a0369576100",
      "tree": "87865e92a84aa4a88f3c5d82610970113993762c",
      "parents": [
        "718e16ad5779ec509e7bffa12f7c044e2f165aad"
      ],
      "author": {
        "name": "Yin-Chia Yeh",
        "email": "yinchiayeh@google.com",
        "time": "Mon Dec 07 17:15:24 2015 -0800"
      },
      "committer": {
        "name": "Yin-Chia Yeh",
        "email": "yinchiayeh@google.com",
        "time": "Wed Dec 09 11:20:32 2015 -0800"
      },
      "message": "Camera: add RAW_PRIVATE format\n\nAlso add necessary plumbing for RAW_PRIVATE to work for ImageReader.\n\nBug: 25596619\nChange-Id: Ic90f3f44264ac46fae1fafbc27ac64b5319f0970\n"
    },
    {
      "commit": "a6d7e3fb9c9233b9ae46b702d17433854c43d6a0",
      "tree": "3b1a5c2f45dd4e56ac320d28edb61525702fb599",
      "parents": [
        "81d74743107b372424fb8f7439357bdd608f8caf"
      ],
      "author": {
        "name": "Tao Bai",
        "email": "michaelbai@google.com",
        "time": "Tue Sep 01 18:49:54 2015 -0700"
      },
      "committer": {
        "name": "Tao Bai",
        "email": "michaelbai@google.com",
        "time": "Tue Sep 08 18:48:42 2015 -0700"
      },
      "message": "Load app resource as shared library.\n\n- Added aapt command line flag --app-as-shared-lib to build app resources\n  that could be loaded as shared lib at runtime.\n- Added new method AssetManager.addAssetPathAsSharedLibrary() to load an\n  app resource as shared library.\n\nBug 22487604\n\nChange-Id: Ib9b33c35f9c2b7129f3ba205de03d4564623ea39\n"
    },
    {
      "commit": "5fa6c7424a041e78a8d4976ec52ef6f684fa3270",
      "tree": "6cc3ba5f1b04c4704f734ed4efc148b8d58591ed",
      "parents": [
        "44a96f893af4604b6bd29d175e26df470315beed",
        "60a2716f720e843a7de6e7209c2021d95538711e"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Aug 18 09:59:11 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 18 09:59:11 2015 +0000"
      },
      "message": "am 60a2716f: am 3244dc22: am 677cd087: am e9de1b4c: am 9a010d0a: Merge \"Allow debugging only for apps forked from zygote\" into mnc-dev\n\n* commit \u002760a2716f720e843a7de6e7209c2021d95538711e\u0027:\n  Allow debugging only for apps forked from zygote\n"
    },
    {
      "commit": "2349332f9f69189d7889692b9aafd6f80070e352",
      "tree": "393ede4dbdb82f272405d9d641db8e02526b66a2",
      "parents": [
        "0f9f0189822c6bee498b23c93512b6be0e9d1358"
      ],
      "author": {
        "name": "Filip Gruszczynski",
        "email": "gruszczy@google.com",
        "time": "Wed Jul 29 17:02:59 2015 -0700"
      },
      "committer": {
        "name": "Filip Gruszczynski",
        "email": "gruszczy@google.com",
        "time": "Mon Aug 10 13:47:31 2015 -0700"
      },
      "message": "Only relaunch activity on significant size configuration changes.\n\nCurrently if the configuration width/height/smallest width changes, we\nrelaunch the activity or invoke onConfigurationChanged callback. When it\ncomes to size based configuration changes it might not be necessary: if\nthe size change doesn\u0027t pass one of the threshold defined by the\nresources, it means there is no need to relaunch the activity.\n\nIn this CL the ActivityManager will receive the thresholds from the\napplication and use them to decide, whether to relaunch the activity.\nThe application reads the thresholds from the resources, specifically\nfrom resource qualifiers used by the app.\n\nChange-Id: Ie3cf0a172dc1ba0b865cf30c2962e7cfd9ad8436\n"
    },
    {
      "commit": "7a09b8322cab26d6e3da1362d3c74964ae66b5d4",
      "tree": "268e2334d28f33d87c2b4d8492b9e9726094e603",
      "parents": [
        "90b030bae8cc1f13da7948fef4aff1d171a2885a"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Aug 10 18:55:34 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Aug 10 20:39:13 2015 +0200"
      },
      "message": "Allow debugging only for apps forked from zygote\n\nWhen starting the runtime from app_process, we only pass JDWP options\nif starting zygote. It prevents from opening a JDWP connection in\nnon-zygote programs while Android apps (forked from zygote) remain\ndebuggable.\n\nBug: 23050463\nChange-Id: If8ea719063a65db4cdeed69a838b52e87b078b08\n"
    },
    {
      "commit": "34fe3df8519523dbb4bc27010fa57f259d5e868d",
      "tree": "08282d0b6cc64337f57e5d9964bf14d42580fddb",
      "parents": [
        "84a378f256bf7925ceb5d2c039a033d3e59b75df"
      ],
      "author": {
        "name": "Yusuke Sato",
        "email": "yusukes@google.com",
        "time": "Fri Jun 19 17:18:07 2015 -0700"
      },
      "committer": {
        "name": "Yusuke Sato",
        "email": "yusukes@google.com",
        "time": "Mon Jun 22 16:11:32 2015 -0700"
      },
      "message": "Let findSupportedAbi and hasRenderscriptBitcode scan only relevant files\n\nfor better performance. Without the optimization, these two functions\nmay check more than 100k file names in the pre-installed APK files,\nwhich can take a few seconds to finish even on a recent device.\n\nBug: 21957428\nChange-Id: I315fd3c6d5aa1076b993752525de449a9933de12\n"
    },
    {
      "commit": "4600dd053dbdbd4b95f3b11057a1cc55b99f9c77",
      "tree": "c4bb116de6b55b054a73083165c9512fbf21c164",
      "parents": [
        "5e063b1da52cca1b93b19bdf7be694aabf95d336"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jun 16 12:02:57 2015 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Jun 17 08:40:25 2015 +0000"
      },
      "message": "ZipFileRO: Use precise widths for zip file types.\n\ngetEntryInfo crashes on 64-bit devices because \"long\" types\nwere being passed int pointers (that pointed to a stack frame)\nthat were reinterpret_cast\u0027ed to long* (sigh.). To fix this issue\nonce and for all, use types with explicitly defined widths.\n\nThis change also removes some dead invariant checking from\nAsset.cpp instead of cleaning it up.\n\nNote that we\u0027ve introduced a wart in NativeLibraryHelper, where\nwe need to deal with zlib\u0027s uLong type, which is \"at least 32 bits\nwide\".\n\nbug: 21622286\n\nChange-Id: Iae675a9601db7aae03a8b80b40321d2cc1d97f50\n"
    },
    {
      "commit": "2738c96d998dedfae5b4670d588d0cd299c4ca0f",
      "tree": "76b8571676d42a9c0b3bfa00f1937eebf2c05698",
      "parents": [
        "038959e851603500eb39b52fef33cbe75dbd73e3"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu May 14 14:25:36 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri May 15 15:10:58 2015 -0700"
      },
      "message": "Add -round and -notround qualifier to android runtime/aapt\n\nThe round qualifier denotes a device with a screen shape that\nis round. The qualifier shows up after the \u0027long/notlong\u0027 qualifier\nand before the orientation \u0027port/land/square\u0027 qualifiers.\n\nChange-Id: I3044258b2703a9165694b79725bade770fa6cea1\n"
    },
    {
      "commit": "e54d245b993e1347cb32c23a6bdc907a45fab324",
      "tree": "be087de6d12733ca9800724ac77103a0b2173964",
      "parents": [
        "424681e43e454bfcbceb863ddccb875ea57ec26f"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Wed May 06 10:41:43 2015 -0700"
      },
      "committer": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Wed May 06 10:41:43 2015 -0700"
      },
      "message": "Improve keying for theme caches, rebase system theme on config change\n\nThemes now use an array of applied styles rather than a String to store\ntheir history. They are keyed based on a hash code computed from the\nhistory of applied styles. The themed drawable cache has been abstracted\nout into its own class.\n\nAlso updates system context to use DayNight as the default and ensures\nthat GlobalActions uses the correct context, which exercises the change.\n\nCTS tests have been added in another CL.\n\nBug: 20421157\nChange-Id: I9eb4b7dffd198ad24d02f656eaf0839570b59caa\n"
    },
    {
      "commit": "c1d527926e1c82828e42bdc0c7abf50f6decc0a7",
      "tree": "48cfc47946a00d3c2126aa62fbf8e47e89e3dbf9",
      "parents": [
        "5551aca2b8ec9fe7ab5ffda8dad82ee104556962"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Tue May 05 09:49:03 2015 -0700"
      },
      "committer": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Tue May 05 09:49:03 2015 -0700"
      },
      "message": "Add API for obtaining changing configurations bitmask from Theme\n\nRequired to know when to reload the system context\u0027s theme in response\nto configuration changes, and thus needed to support the DayNight theme.\n\nBug: 20267825\nChange-Id: I7df5e28b7a6d8b611ea030032544cf4800788514\n"
    },
    {
      "commit": "39606e9f78a1b2aa4e82b47e978471cd1158d1df",
      "tree": "3e21c499055b91d18693283d095113c82e2a0c42",
      "parents": [
        "4c08b1bab279fec1a66f1af701ee5c2054eba9ac",
        "7b09e7a9f3ef804e9cd159023b64eac1ef8b7931"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Apr 15 00:07:01 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 15 00:07:01 2015 +0000"
      },
      "message": "am 7b09e7a9: am 44d7989a: am 571c5a26: Merge \"Fix UB in ResourceTable::stringToInt.\"\n\n* commit \u00277b09e7a9f3ef804e9cd159023b64eac1ef8b7931\u0027:\n  Fix UB in ResourceTable::stringToInt.\n"
    },
    {
      "commit": "571c5a26f767f67118f34ca0d426aeeb4a287b2c",
      "tree": "c6019f3417f18d7b7c80342aae5f78cfd649ca80",
      "parents": [
        "d693690aee3ee94878ab59ee86d8db8ce5bb3789",
        "1b4f316651096f0ef9301b4ffde4816a08a54ab5"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Apr 14 23:25:26 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 14 23:25:27 2015 +0000"
      },
      "message": "Merge \"Fix UB in ResourceTable::stringToInt.\""
    },
    {
      "commit": "f04046dfb0696113c8c1a3cf7425b7d6d85378b3",
      "tree": "e63f638dba4d37e0a44bc3f2932557acd9bf3b57",
      "parents": [
        "f75355e4df08fadc545b691f4e633aa5ff961ca6",
        "e24d36b7b744540ccd3401609248ed9d48be4cc9"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Apr 09 19:06:11 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Apr 09 19:06:11 2015 +0000"
      },
      "message": "am e24d36b7: am 1f799a6b: am d9f32b16: Merge \"Ensure alignment of Res_png_9patch.\"\n\n* commit \u0027e24d36b7b744540ccd3401609248ed9d48be4cc9\u0027:\n  Ensure alignment of Res_png_9patch.\n"
    },
    {
      "commit": "a18cee52d953196ce12550df2ac5a14fbf359802",
      "tree": "eeb5ce69df8d5b1ea15ad991fc6ed3d449802faf",
      "parents": [
        "47c1cf4b35616059409a0674382c2318494e877b"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Apr 07 18:38:42 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Apr 09 10:41:38 2015 -0700"
      },
      "message": "Ensure alignment of Res_png_9patch.\n\nThis doesn\u0027t alter the alignment of the data within the struct, but\nenforces that this structure will be appropriately aligned when used.\n\nThe image_info struct has this struct preceded by a bool, which causes\nodd alignment for the members of this struct.\n\nChange-Id: Ia2ef5c81b2f961c0f61858a10a7821d82f600919\n"
    },
    {
      "commit": "1b4f316651096f0ef9301b4ffde4816a08a54ab5",
      "tree": "f141604343f4114337483ed0fb30fe36f4750310",
      "parents": [
        "47c1cf4b35616059409a0674382c2318494e877b"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Apr 07 18:43:15 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Apr 08 14:12:21 2015 -0700"
      },
      "message": "Fix UB in ResourceTable::stringToInt.\n\nWas here because UBsan found integer overflow in the parsing for hex\nnumbers, since hex numbers here are actually unsigned but assigned to\na signed integer.\n\nAlso fixes a number of missing error conditions.\n\nChange-Id: Iaea576daedfc6c75521cde02de3fe9dd0198a3b7\n"
    },
    {
      "commit": "e6c28f7c3a7f148bf91dcc5d05642997dff09e9f",
      "tree": "b77d2e2132ef718c50ef4606420764a7ee43b97e",
      "parents": [
        "d945e6b4850cf2257f12e6abdb685198fb2fdbb9",
        "6f6ceb7e1456698b1f33e04536bfb3227f9fcfcb"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 03 00:06:31 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 03 00:06:34 2015 +0000"
      },
      "message": "Merge \"AAPT2\""
    },
    {
      "commit": "6f6ceb7e1456698b1f33e04536bfb3227f9fcfcb",
      "tree": "0a1f8e354c4714f162f849b09a5d5da757c6d5b8",
      "parents": [
        "041ca26d028ae314d416cb107721ea7267af6aca"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 14 14:48:12 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Apr 02 17:02:48 2015 -0700"
      },
      "message": "AAPT2\n\nFirst checking of AAPT2. The individual phases of AAPT2 work, but there\nare some missing pieces.\n\nFor early testing we are missing:\n- Need to properly mark file references and include them in package\n- Need to package into zip\n\nFinal AAPT for apps we are missing:\n- Need to crush PNGs\n- Need to parse 9-patches\n- Need to validate all of AndroidManifest.xml\n- Need to write align method to align resource tables for splits.\n\nFinal AAPT for apps + system we are missing:\n- Need to handle overlays\n- Need to store comments for R file\n- Need to handle --shared-lib (dynamic references too).\n\nNew AAPT features coming:\n- Need to import compiled libraries\n    - Name mangling\n    - R file generation for library code\n\nChange-Id: I95f8a63581b81a1f424ae6fb2c373c883b72c18d\n"
    },
    {
      "commit": "2f17431194efc5a13981550b004dd8d5d2a42e5e",
      "tree": "688fa9c58004aa592bb37349b3678bcb545180f6",
      "parents": [
        "8a78286915a8f71eb09b5ae29a3bd8fb977180e6"
      ],
      "author": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Fri Mar 20 11:39:55 2015 -0700"
      },
      "committer": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Mon Mar 30 16:17:35 2015 -0700"
      },
      "message": "ImageFormat: add PRIVATE format\n\nBug: 19865019\nChange-Id: I1a9335fe1733a5b28d9cb20485b509fb216cb52b\n"
    },
    {
      "commit": "11ae768cf1b8348e761ad9c09e98788da1e591b1",
      "tree": "fa4a4e9fffc83e61af98476d41df4252e3cd1323",
      "parents": [
        "e7f931c4505a6bd62e01bef5193dd724571a672b"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Mar 24 18:48:10 2015 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 26 18:57:36 2015 -0700"
      },
      "message": "Add payload-size preflight stage to full transport backup\n\nWe now peform a total-size preflight pass before committing data to the\nwire.  This is to eliminate the large superfluous network traffic that\nwould otherwise happen if the transport enforces internal quotas: we\nnow instead ask the transport up front whether it\u0027s prepared to accept\na given payload size for the package.\n\nFrom the app\u0027s perspective this preflight operation is indistinguishable\nfrom a full-data backup pass.  If the app has provided its own full-data\nhandling in a subclassed backup agent, their usual file-providing code\npath will be executed.  However, the files named for backup during this\npass are not opened and read; just measured for their total size.  As\nfar as component lifecycles, this measurement pass is simply another\ncall to the agent, immediately after it is bound, with identical\ntimeout semantics to the existing full-data backup invocation.\n\nOnce the app\u0027s file set has been measured the preflight operation\ninvokes a new method on BackupTransport, called checkFullBackupSize().\nThis method is called after performFullBackup() (which applies any\noverall whitelist/blacklist policy) but before any data is delivered\nto the transport via sendBackupData().  The return code from\ncheckFullBackupSize() is similar to the other transport methods:\nTRANSPORT_OK to permit the full backup to proceed; or\nTRANSPORT_REJECT_PACKAGE to indicate that the requested payload is\nunacceptable; or TRANSPORT_ERROR to report a more serious overall\ntransport-level problem that prevents a full-data backup operation\nfrom occurring right now.\n\nThe estimated payload currently does not include the size of the\nsource-package metadata (technically, the manifest entry in its\narchive payload) or the size of any widget metadata associated with\nthe package\u0027s install.  In practice this means the preflighted size\nunderestimates by 3 to 5 KB.  In addition, the preflight API currently\ncannot distinguish between payload sizes larger than 2 gigabytes;\nany payload estimate larger than that is passed as Integer.MAX_VALUE\nto the checkFullBackupSize() query.\n\nBug 19846750\n\nChange-Id: I44498201e2d4b07482dcb3ca8fa6935dddc467ca\n"
    },
    {
      "commit": "8a9355a98ece3d7fc9d022e759d05378060c86e2",
      "tree": "d6d76f94f2688f9bcee4c961dafc4cc3ec97a6bd",
      "parents": [
        "9c329b8b6440823ef94bffebc0b1098e8b2ad622"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Mar 10 16:55:43 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Mar 16 22:25:26 2015 +0000"
      },
      "message": "Output modified bcp47 tag in ResTable_config::toString()\n\nWe expect to be able to parse the output of ResTable_config::toString(),\nso it should use modified bcp47 (b+en+Latn+US).\n\nChange-Id: I597a1779a1fa5cff171c473e6a0368d93b9c7722\n"
    },
    {
      "commit": "805f3c9428f9ebd5080aec48d3d9d77dbf4b41a9",
      "tree": "52be74b470b30f90b5ff9a2b820a541d515f728e",
      "parents": [
        "a72d6401346ba01027f5fe2f59f9c018e8a6a84a"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Feb 26 10:57:55 2015 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Mar 09 16:42:25 2015 -0700"
      },
      "message": "Add DEPTH image formats, support in ImageReader\n\n- Add an explicit mapping between public ImageFormat/\n  PixelFormat enums and internal HAL format/dataspace.\n- Add DEPTH16 and DEPTH_POINT_CLOUD formats\n- Wire up mapping layer to ImageReader to support depth\n  formats\n\nChange-Id: I8197eccef900cc91baddcfcb934ccd4d8c972eff\n"
    },
    {
      "commit": "283ddb9d4f871e2816e37b9151108c01939b1f8a",
      "tree": "f3702182c41155bd9884de39401f120e2b8ce343",
      "parents": [
        "0a3f0b020e4b1b025d8dc6c7cc9c34edc07ef902",
        "847514499f5920d073f5cd402dd0d3bbd19ac2c1"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Tue Jan 27 23:34:35 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jan 27 23:34:35 2015 +0000"
      },
      "message": "am 3523e4fc: am efe085ff: Merge \"Handle bad ninepatch data.\" into lmp-mr1-dev\nautomerge: 8475144\n\n* commit \u0027847514499f5920d073f5cd402dd0d3bbd19ac2c1\u0027:\n  Handle bad ninepatch data.\n"
    },
    {
      "commit": "847514499f5920d073f5cd402dd0d3bbd19ac2c1",
      "tree": "f6b20dcbbdb9809a4d0f9678f9c2a04626a03c62",
      "parents": [
        "6e14c5705c5acf9d6036060252f257a084cd7578",
        "3523e4fcb3c74a5dee2f4497e2b8ec7b9e2b5e57"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Tue Jan 27 18:33:46 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 27 18:33:46 2015 +0000"
      },
      "message": "am 3523e4fc: am efe085ff: Merge \"Handle bad ninepatch data.\" into lmp-mr1-dev\n\n* commit \u00273523e4fcb3c74a5dee2f4497e2b8ec7b9e2b5e57\u0027:\n  Handle bad ninepatch data.\n"
    },
    {
      "commit": "a730ef3f77fc495bc90199b4d45efab26d609782",
      "tree": "f88830bbe9186aacc9f79c849dce761f61ef875a",
      "parents": [
        "aa6945ac7904611499ae4ad33799d1f1fe434d32"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Tue Jan 27 11:12:02 2015 -0500"
      },
      "committer": {
        "name": "Leon Scroggins",
        "email": "scroggo@google.com",
        "time": "Tue Jan 27 16:41:16 2015 +0000"
      },
      "message": "Handle bad ninepatch data.\n\nChanges proposed by Ben Hawkes of Google Project Zero.\n\nNinePatchPeeker.cpp:\nInstead of asserting, return false for bad data.\n\nResourceTypes.h:\nStore ninepatch values as unsigned.\n\nBUG:19151999\nChange-Id: Ibe35e7569f632c6bb8a34a7701e26bb6ed547ec2\n"
    },
    {
      "commit": "43a88535df62b8507717f796df6e46103c4bff95",
      "tree": "e4dd77d356d38abe3c5329a7f288640d3d719d99",
      "parents": [
        "0fa1d70ab1ea160842e59256819fe87e4bbff3ca",
        "d9bd08864eaf9d8847d974eadb81806b9e086a2d"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 20 22:03:16 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 20 22:03:16 2015 +0000"
      },
      "message": "am d9bd0886: am aee7225e: Merge \"Process base APK\" into lmp-mr1-dev automerge: 554a6f5\n\n* commit \u0027d9bd08864eaf9d8847d974eadb81806b9e086a2d\u0027:\n  Process base APK\n"
    },
    {
      "commit": "d9bd08864eaf9d8847d974eadb81806b9e086a2d",
      "tree": "7f3f1caed8501f6409955deb27db6fa211fbca62",
      "parents": [
        "a9c122af60621597f1d008c8a283074309383aac",
        "554a6f5278ec05077d8252249afc911897fbfe76"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 20 21:55:12 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jan 20 21:55:12 2015 +0000"
      },
      "message": "am aee7225e: Merge \"Process base APK\" into lmp-mr1-dev\nautomerge: 554a6f5\n\n* commit \u0027554a6f5278ec05077d8252249afc911897fbfe76\u0027:\n  Process base APK\n"
    },
    {
      "commit": "849911a9c4315fc552faa38516c842b2541b1909",
      "tree": "656bdb0ad92465920f94e70c3ec651a9951bc4b4",
      "parents": [
        "df8e59abe5b0803cddee243e2c98d06afb66f5a9"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Jan 20 07:51:14 2015 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Jan 20 12:39:05 2015 -0800"
      },
      "message": "Move Canvas\n\nChange-Id: I83d557af30fc2d5c69d06eedc0f4d52ac41c4210\n"
    },
    {
      "commit": "42eea270a0a2bc54f454312817c41ac357e3a884",
      "tree": "36a4b3f3f658c40be17f3ce7c4bc3b6836bc817a",
      "parents": [
        "8d47bc97e642cd0d0caf31d09efe05d8dc233f27"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jan 15 17:01:39 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jan 16 14:11:30 2015 -0800"
      },
      "message": "Process base APK\n\nThe base APK may have resources with configurations that compete\nagainst some splits. The base APK must be involved in the selection\nof splits.\n\nBug:18982001\nChange-Id: Ieb29b5a36cf2c68e7831484d98a9fd275acd97e8\n"
    },
    {
      "commit": "33194035a5135e9c213d7b32cfcd05299f8d6e69",
      "tree": "f0f9d94cbd30bcfb4612bab820b2023f828e6ce1",
      "parents": [
        "f038345826c28ebc06948edd63b06d008eee7a1f",
        "49138184dee54357b1923f302e4b3fedd73ca34f"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jan 15 04:30:34 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jan 15 04:30:34 2015 +0000"
      },
      "message": "am 49138184: am 9568307c: am 43a4a8c7: Fix redundant file backups\n\n* commit \u002749138184dee54357b1923f302e4b3fedd73ca34f\u0027:\n  Fix redundant file backups\n"
    },
    {
      "commit": "49138184dee54357b1923f302e4b3fedd73ca34f",
      "tree": "865df305f680cb41daf7216664d4b2a0edc133b3",
      "parents": [
        "b8794c76d677ef04c96b9edc002fe6e1f53022c7",
        "9568307cf32c8abc6703dc7a1b0b0fee56c4f8f5"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jan 15 01:39:29 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jan 15 01:39:29 2015 +0000"
      },
      "message": "am 9568307c: am 43a4a8c7: Fix redundant file backups\n\n* commit \u00279568307cf32c8abc6703dc7a1b0b0fee56c4f8f5\u0027:\n  Fix redundant file backups\n"
    },
    {
      "commit": "43a4a8c777fbb8f71540ac7fbe82674489ef557b",
      "tree": "ab4f4b3a27124b244aa8b3cbb013c674da07731d",
      "parents": [
        "a2fa3d219bc148c196b0eb3cf7b3b1bd453e830b"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jan 08 18:42:33 2015 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jan 14 16:36:30 2015 -0800"
      },
      "message": "Fix redundant file backups\n\nWe\u0027d observed a bug in which an unchanged file was nevertheless\nbeing redundantly transmitted for backup on every backup pass.\nThe underlying issue turns out to have been the FileBackupHelper\nbase implementation\u0027s logic for diffing the prior-state file\nset against the current state, in the case when there had been\ndeletions of prior files.  In addition, there was also a\nparallel bug in which file checksums were not calculated\nproperly in some cases, leading to at least one additional\nredundant backup of the file in question.\n\nBug 18694053\n\nChange-Id: Ie0dec06486b5fef4624561737019569c85d6b2a0\n"
    },
    {
      "commit": "8dfaa4904205772cdceee63ef3989bcdedf1a914",
      "tree": "baf5ea37427770659698766562bbd3b80f9eddf9",
      "parents": [
        "c82be5f27f1dd9da665b0ca52590cc30ede4e78a"
      ],
      "author": {
        "name": "Tom Hudson",
        "email": "tomhudson@google.com",
        "time": "Tue Dec 09 15:03:44 2014 -0500"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jan 05 15:25:41 2015 -0800"
      },
      "message": "Make DisplayListRenderer inherit from Canvas, merge JNI\n\nIncrementally unify the upper layers for Skia and HWUI.\nRemove redundant code from GLES20Canvas.java; instead\nuse inherited mNativeCanvasWrapper and superclass method\ndefinitions.\n\nMoves some unrelated SkPaint utility functions from Renderer\nto new utils/PaintUtils.\n\nbug: 15672762\nChange-Id: I4ddd4214b8e9eeb95289d054ef423f2542bb5fa5\n"
    },
    {
      "commit": "18981294a58c411a4a33ebb22caf9c75ba639691",
      "tree": "95a659da2fb0df35f55122c60a205b2f47b70416",
      "parents": [
        "43cd1ddc81d45f9e1789486826c30358d8f92ef2"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Dec 17 11:30:31 2014 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Dec 17 13:20:33 2014 -0500"
      },
      "message": "Make SkiaCanvas creation call ref() on SkCanvas.\n\nThere are two callers of SkiaCanvas::create_canvas(SkCanvas*). In both\ncases, we were calling ref() first. It is necessary to call ref() in\nboth cases, since we have an SkCanvas returned by\nSkPictureRecorder::beginRecording, which does not increment the ref\ncount to account for the caller. (i.e. the SkPictureRecorder has the\nonly ref until you call ref()).\n\nRather than leave the ref up to the caller, since the SkiaCanvas does\nthe unref(), it should also do the ref(). Update it to do so and\ndocument its behavior.\n\nAlso, make SkiaCanvas\u0027 constructors explicit.\n\nChange-Id: I894d0a71a87587cf8c2b26deb2384dc49ae090ef\n"
    },
    {
      "commit": "347040cf84401601b0d5cbb1d76e4648d1c8a461",
      "tree": "55aaab9d50d252ad2ed6bc03f35bf42ebe0cec3e",
      "parents": [
        "a349a9e71aecf93d7d6d7d3e0d93d3e06291a519",
        "740acf213c56c406132294790fa2fadd0380cfa7"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Dec 11 00:07:02 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 11 00:07:02 2014 +0000"
      },
      "message": "am 740acf21: am c7801877: Merge \"Fix issue where non-resource attributes would cause obtainStyleAttributes to fail\" into lmp-mr1-dev\n\n* commit \u0027740acf213c56c406132294790fa2fadd0380cfa7\u0027:\n  Fix issue where non-resource attributes would cause obtainStyleAttributes to fail\n"
    },
    {
      "commit": "5dce5e67dbdcd14882edf3f64fba671c77577ee4",
      "tree": "685d15b6cbb42c2d3bd50825f0b4198c3bd1ee7d",
      "parents": [
        "4df65bf1eb454814954421403da9f8b5fcb82180"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Dec 10 10:47:53 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Dec 10 10:51:48 2014 -0800"
      },
      "message": "Fix issue where non-resource attributes would cause obtainStyleAttributes to fail\n\nA sentinal value of 0x00000000 was used to mark the first time an AttributeFinder\nwas used. If the resource ID of an attribute was also 0x00000000 (which occurs with\nnon-resource attributes, like \u0027style\u0027), then it would be mistaken as the sentinel\nstart value.\n\nBug:18421787\nChange-Id: I4be353e0f8c940cb6f262d155129f048dcc444ae\n"
    },
    {
      "commit": "e97908d32ee8ea80138d085260a0eac93841c722",
      "tree": "0fb24cd7ef6cf6236d3451296937262b78fe2efc",
      "parents": [
        "501bf216dc9068c8169687437d8d6594cd1e1165",
        "0953ab276449cf8d2b27d4f68cb213dfe317a3b4"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Dec 05 11:06:21 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Dec 05 11:06:21 2014 -0800"
      },
      "message": "Merge commit \u00270953ab27\u0027 into manualmerge\n\nChange-Id: I36dea45f7571096136ea7bda5e2680bd85a0df32\n"
    },
    {
      "commit": "8e5362f20e2bc41b1dcf130a613b7e0b3cd1db58",
      "tree": "e395d9177a329782dd5be2a5ec228b1abe3093a2",
      "parents": [
        "c0707c007d8322338e9f46f5ccb04b5582e75845",
        "503071ae41374a66f61e53e05a91243473db83b9"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Dec 04 09:21:45 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 04 09:21:45 2014 +0000"
      },
      "message": "am 503071ae: am a2b5067a: Merge \"RRO: prevent duplicate system overlays\"\n\n* commit \u0027503071ae41374a66f61e53e05a91243473db83b9\u0027:\n  RRO: prevent duplicate system overlays\n"
    },
    {
      "commit": "9b624c186cb6059dfb3ec24bfb6386a0fc17b88c",
      "tree": "e57516e076eddb75d4c657704522f43067153c2a",
      "parents": [
        "92ad4dd017a13364b4001bdb04911202932f81c2"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Nov 19 17:49:26 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Dec 03 15:59:20 2014 -0800"
      },
      "message": "AAPT: Move private attrs to new type for framework\n\nPrivate attributes are typically placed after public\nattributes in the resource table. Each time a new version\nof the Android framework is released, new public attributes\ntake the place of the private attributes, and the private\nattributes are shifted after the new public ones.\n\nThis means that any apps built against the newer SDK\nmay inadvertently be using private attributes on older\ndevices.\n\nThis change moves all private attributes to a completely\ndifferent type ID, so there will never be collisions across\nversions.\n\nThese private attributes are automatically moved to a synthesized\ntype only for the system resources.\n\nBug:18263655\n\nChange-Id: I7a850512953fadcc9f3524d509cea30249782db8\n"
    },
    {
      "commit": "a2b5067aeef5b2d68a7a2f7b4edc7ee0908b5d5b",
      "tree": "db4b1a0c53a697fb010a6feba69e9b2bb11250fd",
      "parents": [
        "abdaa32dd79c915d0e419560c8eaa64e3d946b77",
        "cb7b63d928cd562ea66d10d816056b984f50193a"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Dec 03 17:44:17 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 03 17:44:18 2014 +0000"
      },
      "message": "Merge \"RRO: prevent duplicate system overlays\""
    },
    {
      "commit": "11bdd5b10b5f921b657283fa94463263171218d5",
      "tree": "f439482e80559f310178bb050de770ca86fb0b23",
      "parents": [
        "a9a3e24835b08828aa252bf079067a5f810a0792",
        "06d8b7b8d216cbfcd4cd987649672a5856ccd797"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 17 12:17:16 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 17 12:17:16 2014 -0800"
      },
      "message": "Merge commit \u002706d8b7b8\u0027 into manualmerge\n\nConflicts:\n\tcore/jni/android_util_AssetManager.cpp\n\nChange-Id: I77b72d0d3ec8184ccd97419e4c76b7d55b1a52ca\n"
    },
    {
      "commit": "5bf0c65eef972e743ca02e93f8d5ad7df5097931",
      "tree": "28c3f347ee4b4c25547911cb737f38614b18b3b1",
      "parents": [
        "bc1d97556d32a45ceca5db3e2af12cd3d4cf5590",
        "f89a2fdacb2ba907f180188dc79f9de81e3eb254"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Nov 08 02:04:43 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Nov 08 02:04:43 2014 +0000"
      },
      "message": "am f89a2fda: Merge \"Frameworks/base: Fix two warnings in cmds\"\n\n* commit \u0027f89a2fdacb2ba907f180188dc79f9de81e3eb254\u0027:\n  Frameworks/base: Fix two warnings in cmds\n"
    },
    {
      "commit": "ebee1379eaf4306eb2de9437844009aa7eb18c28",
      "tree": "165544f1e460464e14c41e8b88f73107e1668494",
      "parents": [
        "487ae9b8dc3e08c1a830d519a801a07cd59c8f2b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 07 16:28:19 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Nov 08 01:04:45 2014 +0000"
      },
      "message": "Frameworks/base: Fix two warnings in cmds\n\nChange-Id: Ifb9c7fb7a2d28c13010ddc186bea5f5f0daefb4a"
    },
    {
      "commit": "dc9c109af815100d497184e6dadebceed7f3bf1d",
      "tree": "51bb2aa4ff78b0ebcdbe1cc474c76dd2d38d7a37",
      "parents": [
        "9a0aa553ad9f6657cbbf0a182566c481e191e6b7",
        "487ae9b8dc3e08c1a830d519a801a07cd59c8f2b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 07 15:03:46 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 07 15:14:02 2014 -0800"
      },
      "message": "resolved conflicts for merge of 487ae9b8 to lmp-mr1-dev-plus-aosp\n\nChange-Id: I395f184d885a7ef30aa113ab01fcaacc94243008\n"
    },
    {
      "commit": "2204f0bf56af53b588a01701b8cf9cd05b1b3ff9",
      "tree": "d163b59ccc8d10a3181bc77ea99f83c94e6748ce",
      "parents": [
        "59701b9ba5c453e327bc0e6873a9f6ff87a10391"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 21 23:04:54 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 07 13:35:05 2014 -0800"
      },
      "message": "Frameworks/base: Wall Werror in libs/androidfw\n\nTurn on -Wall -Werror in libs/androidfw. Fix warnings. Refactor\nsome code.\n\nChange-Id: I66fe54ace433c15dee5de328b149ca142f74b2dd\n"
    },
    {
      "commit": "cb7b63d928cd562ea66d10d816056b984f50193a",
      "tree": "0078c4cd3321ca9d533432f7092da58d2a6fa2f0",
      "parents": [
        "96198ebae8deab14b434645f628213db492abdbc"
      ],
      "author": {
        "name": "Mårten Kongstad",
        "email": "marten.kongstad@sonymobile.com",
        "time": "Fri Nov 07 10:57:15 2014 +0100"
      },
      "committer": {
        "name": "Zoran Jovanovic",
        "email": "zoran.jovanovic@sonymobile.com",
        "time": "Fri Nov 07 16:08:22 2014 +0100"
      },
      "message": "RRO: prevent duplicate system overlays\n\nSystem overlays, ie overlays with targetPackage\u003d\"android\", were loaded\ntwice, which caused all sorts of issues. Ensure they are only loaded\nonce, which will be during Zygote initialization.\n\nBug: 17765434\nChange-Id: Ia5064045c77f713c58fb78adc3942f6af1abdc93\n"
    },
    {
      "commit": "a7d1d73a477fe512d9ea69ee2883084630ec24c4",
      "tree": "bbc94feb57cfcead2f9d44d8a4192085ee4d7d6a",
      "parents": [
        "efd8a85d30c35ca4a274835f10e371289bb9bc5e"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Oct 01 18:24:54 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Nov 04 16:34:34 2014 -0800"
      },
      "message": "Implement back-tracking when searching for attributes in XML or resource bag\n\nShared libraries have their package ID assigned at run-time, so some\nof the guarantees we used to have about sort order of attributes in\nbags or XML elements no longer hold.\n\nThis CL adds back-tracking and can jump to the nearest attribute with the\nsame package ID and continue searching.\n\nThis means that attributes with the same package ID must be sorted by increasing\nresource ID, as was the case before.\n\nAttributes with the same package ID must be grouped together, but the groups can\nbe in any order. Ex: 0x02010001, 0x02010002, 0x01010000, 0x01010010, 0x7f010032\n\nBug:17666947\nChange-Id: I9c198bbb6ca788849aac85b6323606ea5d9550d6\n"
    },
    {
      "commit": "668f0a356cba44c22d8ca0c9f4711613885d46a9",
      "tree": "2a761d729c706abe8c4fca98e89d818e961a5168",
      "parents": [
        "3c7efdc00506e6561ca08933f0b2acf5e3f16b02",
        "4bf58108d442b37ab4adf5ce3a4ecd63472ce254"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 03 23:38:42 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 03 23:38:43 2014 +0000"
      },
      "message": "Merge \"Fix issues that will be present in C++11\" into lmp-mr1-dev"
    },
    {
      "commit": "4bf58108d442b37ab4adf5ce3a4ecd63472ce254",
      "tree": "2b6359ad85861bf339e6a45813c599ab683fc7c3",
      "parents": [
        "e8d9810cdef5b3e288f54f42adc3205532343406"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 03 11:21:19 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 03 11:49:47 2014 -0800"
      },
      "message": "Fix issues that will be present in C++11\n\n- char16_t is a distinct type, so stay consistent\n  with it throughout the code base.\n- char16_t is defined as minimum size of 16 bits.\n  Since we mmap and cast data structures onto raw memory,\n  we need a precise definition (uint16_t), so we cast between\n  that (and static_assert that they are the same size).\n\nChange-Id: I869c32637543bbcfb39d2643e7d9df10d33acd3c\n"
    },
    {
      "commit": "f2969405020a72e282c348a6ea201d56e9f8d4ba",
      "tree": "e128dfe858f314d151ad3462e77f18d4aa973f66",
      "parents": [
        "720a5c51beb5beab442832ea8d169aa5b4edb43f"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Wed Oct 29 17:09:36 2014 -0700"
      },
      "committer": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Wed Oct 29 17:09:36 2014 -0700"
      },
      "message": "Distinguish unspecified and explicit null values in resources\n\nBUG: 17919345\nChange-Id: Ic4f04f7dd0f986f58a749b5950d80c1cfdb074ea\n"
    },
    {
      "commit": "8d2556f0de2786367babaafbf1c34b24926e48ca",
      "tree": "fcd53787b65f0ff0e1449b3ba1794d5edc79be32",
      "parents": [
        "26d5da351e5fbeb23605a643923e896bb3a0d57c",
        "ecdaa576af69361538738b9982b22d25017012a3"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Sep 19 18:37:15 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 19 18:37:15 2014 +0000"
      },
      "message": "am 8bdb265f: am 19f9d54f: Merge \"Fix backwards compat problem with AAPT public attrs\" into lmp-dev\n\n* commit \u00278bdb265f0a73bc6f2114ca70f141c214a23696c7\u0027:\n  Fix backwards compat problem with AAPT public attrs\n"
    },
    {
      "commit": "b6812b64c42ee15a1afa295fe341103fe02006ae",
      "tree": "d831675ce920785f8bf13cdffc42ba54cb4b4fbf",
      "parents": [
        "ddc5e5f1c60f5fc491c9299a0afd280f8fdc252b",
        "82a2dd8efe48d3a4e04655f01329da857ace4b7d"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Sep 19 18:19:56 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 19 18:19:58 2014 +0000"
      },
      "message": "Merge \"Fix backwards compat problem with AAPT public attrs\" into lmp-dev"
    },
    {
      "commit": "99f8f21c166cf262489633b2e6a8dbe5f1771a8d",
      "tree": "ba84300fb29a436c3bd57e4e8650fdf416833f8d",
      "parents": [
        "0bdf25b090c4b85b392f83a0f6db78e5e9f517a5",
        "652bf9c9d88eb892a3c112ef6c2ef6dbb1b2b23d"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Fri Sep 19 03:56:19 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 19 03:56:19 2014 +0000"
      },
      "message": "am d3d6ecdb: am 52e5e359: Merge \"USB string descriptors are not UTF8, so it is not safe to treat them as such.\" into lmp-dev\n\n* commit \u0027d3d6ecdb7a6b00347920c5e706275017854849af\u0027:\n  USB string descriptors are not UTF8, so it is not safe to treat them as such.\n"
    },
    {
      "commit": "51938c205f41da95486b17ea645fd0ce2a73be82",
      "tree": "80b23ecf19607c803605a5f9fa173e11a9a9a744",
      "parents": [
        "3540c462d95a0720e2931c30e1fe9820d0d63c51",
        "9ee5e7e17f7d65620f21d1a42865981e7bc56593"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Fri Sep 19 02:00:25 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 19 02:00:26 2014 +0000"
      },
      "message": "Merge \"USB string descriptors are not UTF8, so it is not safe to treat them as such.\" into lmp-dev"
    },
    {
      "commit": "82a2dd8efe48d3a4e04655f01329da857ace4b7d",
      "tree": "9c5ec064aeba43cf4b27fd4bb36e31f0bf425f35",
      "parents": [
        "49c0e7375b237bc6eff8746ae91466ea6a660233"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Sep 17 18:34:15 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Sep 18 14:05:24 2014 -0700"
      },
      "message": "Fix backwards compat problem with AAPT public attrs\n\nAAPT has traditionally assigned resource IDs to public attributes,\nand then followed those public definitions with private attributes.\n\n--- PUBLIC ---\n| 0x01010234 | attr/color\n| 0x01010235 | attr/background\n\n--- PRIVATE ---\n| 0x01010236 | attr/secret\n| 0x01010237 | attr/shhh\n\nEach release, when attributes are added, they take the place of the private\nattributes and the private attributes are shifted down again.\n\n--- PUBLIC ---\n| 0x01010234 | attr/color\n| 0x01010235 | attr/background\n| 0x01010236 | attr/shinyNewAttr\n| 0x01010237 | attr/highlyValuedFeature\n\n--- PRIVATE ---\n| 0x01010238 | attr/secret\n| 0x01010239 | attr/shhh\n\nPlatform code may look for private attributes set in a theme. If an app\ncompiled against a newer version of the platform uses a new public\nattribute that happens to have the same ID as the private attribute\nthe older platform is expecting, then the behavior is undefined.\n\nWe get around this by detecting any newly defined attributes (in L),\ncopy the resource into a -v21 qualified resource, and delete the\nattribute from the original resource. This ensures that older platforms\ndon\u0027t see the new attribute, but when running on L+ platforms, the\nattribute will be respected.\n\nWe still need to address this problem in the platform moving forward,\nas this will only help us in the transition from pre L to L.\n\nBug:17520380\nChange-Id: Ia2a985798b50006c21c7c3431d30d9598f27cd91\n"
    },
    {
      "commit": "c846e61639c3808889ac394366dd4db5379a3b88",
      "tree": "c308f1c266a4f6e94e8162a72a2162f835bc559a",
      "parents": [
        "4c4b3b8f78891d37d04430622bffc1dc2df361f2",
        "0836f2f08b5bfc5359a1de833a6f55fc596fde08"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Sep 12 05:45:07 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 12 05:45:07 2014 +0000"
      },
      "message": "am a38e59b1: am 683872af: Merge \"Clean entire arg block when setting process name.\" into lmp-dev\n\n* commit \u0027a38e59b1b4164a33c38fc522e56601d886c49833\u0027:\n  Clean entire arg block when setting process name.\n"
    },
    {
      "commit": "00c0cd4a24bd0f040055f9e786e2df1fa3b7d2d3",
      "tree": "87654f391f5e9dca11fd5e84901545890d3d5b16",
      "parents": [
        "98ff7bce66f03da14e39fa7e532a7202bde7dce6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 10 16:48:46 2014 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 11 14:19:52 2014 -0700"
      },
      "message": "Clean entire arg block when setting process name.\n\nWhen Android processes fork from Zygote, we rewrite the command line\nwith a new name, eg. \"system_server\".  When we do this, we should\nfill the entire block with zeros to remove corrupted argument\ninformation that may otherwise remain in the /proc/\u003cpid\u003e/cmdline buffer\nand be seen in tools and stack dumps.\n\nFixed an issue where VM options could be overwritten after setting\nthe nice name if the name was too long.\n\nBug: 17474152\nChange-Id: Ie6cf9ed7752a04300a340e26cd6812bb35c59e1b\n"
    },
    {
      "commit": "20ec4fa2294a91e5ff87839280904aba4a050cf6",
      "tree": "975bff3addce4062cb4227f7d96d1f36a16c7ed0",
      "parents": [
        "ddb605d4b2fa544bab69a72a288e578f2dd37f52",
        "6c585756b4c66058af85bb8d6524ffa94af79e62"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Sep 08 22:25:54 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Sep 08 22:25:54 2014 -0700"
      },
      "message": "resolved conflicts for merge of 6c585756 to lmp-dev-plus-aosp\n\nChange-Id: I5a25f2bac44ac5efcd7462af91005e09680a1d96\n"
    },
    {
      "commit": "2ffa4aabd76353a907ee89a3e0c6f1961237f257",
      "tree": "155ccc475b02ef260666cc118fcfd8fc3a2474f7",
      "parents": [
        "5a6934c07946743e622df52ba1155d97129b37f0",
        "f348c15ecf78e9d58b8238ffcf1d78a279e3a862"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Sep 09 04:30:34 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 09 04:30:35 2014 +0000"
      },
      "message": "Merge \"Use char16_t for char things.\""
    },
    {
      "commit": "f348c15ecf78e9d58b8238ffcf1d78a279e3a862",
      "tree": "fad413b2f2b3d849eaf83e607a8336683adb8b63",
      "parents": [
        "2a1ed46decbc8e21a39367a4b7770111392167c3"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Sep 08 18:28:00 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Sep 08 18:30:08 2014 -0700"
      },
      "message": "Use char16_t for char things.\n\nWhen compiling in C++ mode, the compiler will complain about conversions\nfrom uint16_t to char16_t. Be consistent in using char16_t for strings.\n\nChange-Id: I052b6176ced635162920b31560052d9a64f92764\n"
    },
    {
      "commit": "9ee5e7e17f7d65620f21d1a42865981e7bc56593",
      "tree": "9e65103e7fc4429505ba2cd8c4a2ce84bddd39cb",
      "parents": [
        "3afd6e3fc612e12ad55de53747641f63f457bb42"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Mon Sep 08 16:15:21 2014 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon Sep 08 17:05:44 2014 -0700"
      },
      "message": "USB string descriptors are not UTF8, so it is not safe to treat them as such.\n\nAdd AndroidRuntime::NewStringLatin1() to convert non-UTF8 strings to Java strings.\n\nBug: 17427781\nChange-Id: I7df1d4e94a7beebc8b1a74c0c0a163b794025ae8\n"
    },
    {
      "commit": "ad2d07d2d98a46babb2a9472413fe9ce5080ca76",
      "tree": "40be93c366de29a74421b20cf8ae10c34ac34dfd",
      "parents": [
        "032402cff1fe5dc3a6b2adae3d4c13fb771cd91f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Aug 27 16:21:08 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Aug 27 18:28:49 2014 -0700"
      },
      "message": "Stamp platform version code into app Apks\n\nThe versionCode of theframework resources that an app is built against\ngets stamped inside an app\u0027s AndroidManifest.xml in the \u003cmanifest\u003e\ntag as \"platformBuildVersionCode\" and \"platformBuildVersionName\"\nattributes.\n\nBug:17207635\nChange-Id: Id573c3dffcbca38eec9c0eb3e89f4a547e3361d3\n"
    },
    {
      "commit": "31245b4f06003f1c8cd44c31b387c96ab4e282f9",
      "tree": "ec59d73e6b6e563876ed8c4e5de331b4df17549e",
      "parents": [
        "5b8e5a7d4c930b42e1a3c2b3e67144b89d37efa2"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Aug 22 19:10:56 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Aug 25 17:47:30 2014 -0700"
      },
      "message": "Introduce anydpi density resource qualifier\n\nThis is meant to be used with scaleable vector\ndrawables, and are chosen as the best match unless\nthere is a configuration that matches the density\nrequested exactly.\n\nBug:17007265\nChange-Id: Ic3288d0236fe0bff20bb1599aba2582c25b0db32\n"
    },
    {
      "commit": "6022debdbcc4498736580640c6287b57872617a2",
      "tree": "17fa702311166e6f78ad07af3e767ca672817135",
      "parents": [
        "e02f340d9a0c4f841376c3db8ec93f65e7e58417"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Aug 20 14:59:19 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Aug 20 17:55:33 2014 -0700"
      },
      "message": "AAPT: Fix regression generating dynamic ref table for shared libraries\n\nAAPT stopped generating dynamic reference tables for shared libraries.\n\nChange-Id: Ib0025811bdca1a4756eb21080dd6b6bb3fc1ca3d\n"
    },
    {
      "commit": "ec64709ce042bcf456f9749e079e5f6981cfbbb9",
      "tree": "9ac12058f26bbf10fb5c2909de4149a3d25b77fc",
      "parents": [
        "c1bf40f5c46e5c7597d5cd3f80d8eda83773683e",
        "833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Sat Aug 09 01:48:35 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Aug 09 00:40:15 2014 +0000"
      },
      "message": "Merge \"AAPT support for feature splits\" into lmp-dev"
    },
    {
      "commit": "833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1",
      "tree": "a57e8389088178108de1424faf41ea3bb87c934a",
      "parents": [
        "5c09e8ad5ee8e67976066366527ee58792551953"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jun 18 15:06:01 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Aug 04 18:48:14 2014 -0700"
      },
      "message": "AAPT support for feature splits\n\nThis change allows the developer to add a base package for\nwhich to build a feature split. The generated resource types\nwill begin after the base APK\u0027s defined types so as not\nto collide or override resources.\n\nMultiple features can be generated by first choosing an\narbitrary order for the features. Then for each feature,\nthe base APK and any preceding features are specified\nwith the --feature-of flags.\n\nSo with a base APK \u0027A\u0027 and features, \u0027B\u0027, and \u0027C\u0027,\n\u0027B\u0027 would be built with\n\naapt package [...] --feature-of A [...]\n\nand \u0027C\u0027 would be built with\n\naapt package [...] --feature-of A --feature-of B [...]\n\nChange-Id: I1be66e3f8df9a737b21c71f8a93685376c7e6780\n"
    },
    {
      "commit": "0d8fb019633300a6636f1bf99f0716e8579dab35",
      "tree": "6a5302c69e3dd5d07bb383bcb274bae009488f39",
      "parents": [
        "3fbfbb4adeec1dda1e149758ea302c386101f267"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 30 12:11:41 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Aug 06 22:25:01 2014 -0700"
      },
      "message": "Disable compilation based on vold.decrypt. [frameworks/base]\n\nBug: 15165413\n\n(cherry picked from commit 4fd561637a173c7fa6a1d71e9115db1db90514ff)\n\nChange-Id: I2a13b63f9d4a7ffd69a8d21666c6dce84739c6ed\n"
    },
    {
      "commit": "3fbfbb4adeec1dda1e149758ea302c386101f267",
      "tree": "e24c0a50c90acfeabf8c79e19c1635910ffe8078",
      "parents": [
        "a25dc2bbe70b7449dc57e9619778ba592c198003"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jul 28 19:13:28 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Aug 06 22:25:00 2014 -0700"
      },
      "message": "Move from dalvik.vm.image-dex2oat-flags to dalvik.vm.dex2oat-filter [frameworks/base]\n\nThis will allow us to conditionally change the compiler-filter based on other properties.\n\nBug: 15165413\n\n(cherry picked from commit f60d3a4702f6d00d7edb5d348c53b9b03ae16b76)\n\nChange-Id: I293c81ba817e9abbf9c05b3fb554ef2f0ad0c4ed\n"
    },
    {
      "commit": "4fd561637a173c7fa6a1d71e9115db1db90514ff",
      "tree": "10c08ccbadc0ef804e90990e40e3a956b65606d2",
      "parents": [
        "f60d3a4702f6d00d7edb5d348c53b9b03ae16b76"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 30 12:11:41 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 31 14:27:29 2014 -0700"
      },
      "message": "Disable compilation based on vold.decrypt. [frameworks/base]\n\nBug: 15165413\nChange-Id: I1972c5af5f392c2ed247888ef33c03e9ffe4d588\n"
    },
    {
      "commit": "f60d3a4702f6d00d7edb5d348c53b9b03ae16b76",
      "tree": "0cef1223c6b75570744b97539e2f9bb019b184ea",
      "parents": [
        "8c57cead83105ce273351024bfa745c979f9dc48"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jul 28 19:13:28 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 31 14:27:29 2014 -0700"
      },
      "message": "Move from dalvik.vm.image-dex2oat-flags to dalvik.vm.dex2oat-filter [frameworks/base]\n\nThis will allow us to conditionally change the compiler-filter based on other properties.\n\nBug: 15165413\nChange-Id: I1676987c69a3cad4217dc4b56465ef3ae886122a\n"
    },
    {
      "commit": "590b8d3601a518f6c3e00a28e88add36142bde22",
      "tree": "49028c5103fa9c63d725a983c912ae1fe30d3ed7",
      "parents": [
        "9679410db578e179c7559e7a52bb21c8082e9631",
        "09d5cddf67b676018700bcc10a72242641cd7eec"
      ],
      "author": {
        "name": "Bo Liu",
        "email": "boliu@google.com",
        "time": "Mon Jul 28 21:44:10 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 24 20:48:02 2014 +0000"
      },
      "message": "Merge \"Add kModeSync\" into lmp-dev"
    },
    {
      "commit": "09d5cddf67b676018700bcc10a72242641cd7eec",
      "tree": "92b8ab435be040a30ba9cb2d77246aaaca68e5a1",
      "parents": [
        "4f994eb2ddbe68b0eada89dcaae34c079df55c7e"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Jul 24 10:36:08 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Jul 24 10:36:08 2014 -0700"
      },
      "message": "Add kModeSync\n\n Bug: 16526750\n\nChange-Id: I4c087160e80432739321172fd57880846c8de6e0\n"
    },
    {
      "commit": "cae05e0b4c4726236487bdd7c23b82e93f85fd23",
      "tree": "2a00d269e21ce193fd0bfa166067d4c48dc2c893",
      "parents": [
        "ed1391a9297db5e2a8671bbf2d83654ee5d28702"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Thu Jul 24 15:22:13 2014 -0400"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Fri Jul 25 11:39:37 2014 -0400"
      },
      "message": "Move Canvas.h to a new location so that it can be shared with HWUI.\n\nBug: 15672762\nChange-Id: Ia59e986cd4034e16b2e54e8d594e6941a6c9fb1b\n"
    },
    {
      "commit": "7df3625d5bb28d11cce9ac23429f5e3c6ebac030",
      "tree": "432f9013a91bede42c82486575b37507cd66718d",
      "parents": [
        "999d394adee533c55fce38bd632ffd4f1af91362"
      ],
      "author": {
        "name": "Martin Kosiba",
        "email": "mkosiba@google.com",
        "time": "Thu Jan 16 16:25:56 2014 +0000"
      },
      "committer": {
        "name": "Marcin Kosiba",
        "email": "mkosiba@google.com",
        "time": "Thu Jul 17 18:10:02 2014 +0100"
      },
      "message": "Allow for appending of resources to an AssetManager.\n\nBUG: 11505352\nChange-Id: Ifa290580a6dc63c2f471d0bbf5f066db14aed4d7\n"
    },
    {
      "commit": "6d77eb99bfc5471f9765e3fa7ea42022197aa9f5",
      "tree": "80adaf06dc7f28d6ed56bef1b3e77eb8a37c2ef7",
      "parents": [
        "08881385a86bf887669a555ae03759c374ec9c50"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jul 08 10:40:59 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jul 08 15:05:41 2014 -0700"
      },
      "message": "Make dex2oat heap size product configurable [frameworks/base]\n\nBug: 15919420\nChange-Id: I9b7b4f60826fc9b0cc6bb3765ceaa36542425006\n"
    },
    {
      "commit": "21949631815703ef2f04b304b4cedff3646a0d73",
      "tree": "b615e5a1d99c582576585b5de7db479055500d77",
      "parents": [
        "3081f82742b5dcab7014ac90b313e56a07be5a61",
        "ce75618e12deebe302c551281ce56c0d60138e0f"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 09 15:07:35 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 09 15:07:35 2014 +0000"
      },
      "message": "am ce75618e: am 5aba0149: am b85afb38: Merge \"Make dex2oat heap size product configurable [frameworks/base]\"\n\n* commit \u0027ce75618e12deebe302c551281ce56c0d60138e0f\u0027:\n  Make dex2oat heap size product configurable [frameworks/base]\n"
    },
    {
      "commit": "ce75618e12deebe302c551281ce56c0d60138e0f",
      "tree": "54aacc8f75a71d52a4815ee0b9846cbb8cfd2ef4",
      "parents": [
        "e5d9dca16fa629d5cf5bdac38199de8052eb8336",
        "5aba0149b953fb8e85851811dde995fb35c10051"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 09 12:36:47 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 09 12:36:47 2014 +0000"
      },
      "message": "am 5aba0149: am b85afb38: Merge \"Make dex2oat heap size product configurable [frameworks/base]\"\n\n* commit \u00275aba0149b953fb8e85851811dde995fb35c10051\u0027:\n  Make dex2oat heap size product configurable [frameworks/base]\n"
    },
    {
      "commit": "f90f2f8dc36e7243b85e0b6a7fd5a590893c827e",
      "tree": "b2fb1fc49961c7c5f5c1712872ce2ffcfe550a89",
      "parents": [
        "c802c8cda234129c1ce3c7a939bd68a1d5813ce6"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jun 06 14:27:00 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jun 18 19:20:08 2014 +0000"
      },
      "message": "Support multiple resource tables with same package\n\nIn order to support APK split features, the resource\ntable needs to support loading multiple resource\ntables with the same package but potentially new set\nof type IDs.\n\nThis adds some complexity as the type ID space changes\nfrom dense and ordered to potentially sparse.\n\nA ByteBucketArray is used to store the type IDs in\na memory efficient way that allows for fast retrieval.\n\nIn addition, the IDMAP format has changed. We no longer\nneed random access to the type data, since we store the\ntypes differently. However, random access to entries of\na given type is still required.\n\nChange-Id: If6f5be680b405b368941d9c1f2b5d2ddca964160\n"
    },
    {
      "commit": "f967a5486a78db244624fde4c105aa5e6fa914b9",
      "tree": "4b4f9cfe09af0e82e625b13f4818af297000dbc3",
      "parents": [
        "241cdab7597c9f6f203057125c9d629c285d574d"
      ],
      "author": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Mon Apr 28 16:31:11 2014 -0700"
      },
      "committer": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Fri May 16 23:25:51 2014 -0700"
      },
      "message": "camera2: Plumb DngCreator to native library.\n\nChange-Id: Ic58bf6cf5086808b503460ef8e451fc0d6f1f850\n"
    },
    {
      "commit": "8ee0b48d607fd6afc5e75f56bdadce19272c60ff",
      "tree": "d021d0fbdebf4b9d1607a359f69adb3a51283034",
      "parents": [
        "a981e3b01ae6af2b67e582f0d1cbb95560d05626",
        "97175deb446cdaca7f3910b71940cb443bda3cc4"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 09 14:06:10 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 09 14:06:10 2014 +0000"
      },
      "message": "am 97175deb: am 3856a219: am cecfb94f: Merge \"Clean up argc / argv processing for runtime args.\"\n\n* commit \u002797175deb446cdaca7f3910b71940cb443bda3cc4\u0027:\n  Clean up argc / argv processing for runtime args.\n"
    },
    {
      "commit": "97175deb446cdaca7f3910b71940cb443bda3cc4",
      "tree": "7f316f4f074f8427d3046f99b683b97136cc3b14",
      "parents": [
        "dc7eb9c947f36cbd34021663845bcbb090c3169d",
        "3856a219fa414ee53c5ef3a0c35dae35e2ca80b1"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 09 14:02:08 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 09 14:02:08 2014 +0000"
      },
      "message": "am 3856a219: am cecfb94f: Merge \"Clean up argc / argv processing for runtime args.\"\n\n* commit \u00273856a219fa414ee53c5ef3a0c35dae35e2ca80b1\u0027:\n  Clean up argc / argv processing for runtime args.\n"
    },
    {
      "commit": "22ec1eefa4dc8e12f7da8e8750d4770144941526",
      "tree": "f5ca6c4f0055e8c4ef01cf484abc65d983ec990b",
      "parents": [
        "a5608acbd7647e0fd9aa87e5319715b0cbd6b0c0"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Apr 07 12:44:58 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 09 13:39:41 2014 +0100"
      },
      "message": "Clean up argc / argv processing for runtime args.\n\n- Make copies of argc, argv before argv is potentially\n  overwritten with the process name.\n- Allow multiple command line arguments to be passed to\n  ZygoteInit (this is required for some of the 64 bit\n  zygote work).\n- Add an explanatory comment about how these argments\n  are processed.\n\nChange-Id: I752be69c5c0f97ed17d1a3dded19f46ee00929b0\n"
    }
  ],
  "next": "0a0454fdcc7aeac6e57f9466da8f39bcf5f3f6ec"
}
