)]}'
{
  "log": [
    {
      "commit": "299e488ee28e75b96c23a8a37fdff2ec0f4ccb98",
      "tree": "1fd31bc0dca0ab40da1a47bd3e56baae31f53256",
      "parents": [
        "8a8e8ea19a825dd45117909df2f0140ca20565e7"
      ],
      "author": {
        "name": "Andrew Johnson",
        "email": "aqj@google.com",
        "time": "Wed Mar 30 17:16:45 2016 -0400"
      },
      "committer": {
        "name": "Andrew Johnson",
        "email": "aqj@google.com",
        "time": "Wed Mar 30 20:24:48 2016 -0400"
      },
      "message": "Removing assignments to localeScriptWasComputed in aapt.\n\nOn certain devices running Android M with unknown vendor\nmodifications. Setting the localeScriptWasComputed bit in\nthe resource parameters struct causes the translations\nfor many languages to fail to load. The app then\ndefaults to English.\n\nThis has been reported on the following devices:\nMotorola XT1086, XT1096, and XT1586, HTC One, and Huawei\nMediaPad 10 LINK.\n\nThis change works around the issue by never setting\nlocaleScriptWasComputed in aapt and instead always\nwriting the default value of false.\n\nBug: 27872476\nChange-Id: Id638d1d0e5f9dcb1c02e65d67667d76174c69b9e\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": "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": "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": "7f1a8957cca420d525719836069b7f6d5ee04718",
      "tree": "7a1b1296267ba7429581f1bd854dcc9192dfc315",
      "parents": [
        "3ec5f97ac5705d5fe2c7ceb7b61a4df5f18b980f"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Feb 10 16:11:55 2015 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Feb 10 16:11:55 2015 +0000"
      },
      "message": "Parse res-car as resources for UI_MODE_TYPE_CAR..\n\n.. and not a 3 letter language code.\n\nbug: 19291216\nChange-Id: I01bf76d89880693dcdb4384d5c239902fa3defa8\n"
    },
    {
      "commit": "08d1c808477d67fe9f0a2d2ad9463998f8d54379",
      "tree": "7ce4c3a7abc06109a9070c3a2a8401f4f2adaf93",
      "parents": [
        "41707d01e9e950ebd00642ef3564edcff8c539e7",
        "cd8442d4e8f372e6ecd90779f8885798145f5366"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Oct 23 14:55:57 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Oct 23 14:55:57 2014 -0700"
      },
      "message": "Merge commit \u0027cd8442d4\u0027 into manualmerge\n\nConflicts:\n\ttools/aapt/ResourceIdCache.cpp\n\nChange-Id: I5341d47ed0fe891d6fefb174f644e636ce966eb8\n"
    },
    {
      "commit": "40e8eefbedcafc51948945647d746daaee092f16",
      "tree": "eb14bacf3510fc8865145a1c68b4dcb8fc802904",
      "parents": [
        "74af6700196ed55a0aa39c7777293e735e7b4d73"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Sep 16 14:43:29 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Oct 23 10:39:31 2014 -0700"
      },
      "message": "First commit of split-select tool\n\nThis tool emits a set of rules as JSON for when a Split APK\nshould match a target device.\n\nChange-Id: I8bfbdfbdb51efcfc645889dd03e1961f16e39645\n"
    },
    {
      "commit": "5e77475b5d1de1fecbaf5b3e27988a255a3c399e",
      "tree": "dde9a0b48cf6e5ba02e0c87dfada3677280bc530",
      "parents": [
        "87332a7109610d02ac7f5db6af99d3a11813d5c1",
        "152d9aae631381ea28f5701168d372a1486a7502"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 02 12:31:16 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 02 12:31:16 2014 +0000"
      },
      "message": "am 152d9aae: am 31629651: Merge \"Frameworks/base: Fix more aapt issues\"\n\n* commit \u0027152d9aae631381ea28f5701168d372a1486a7502\u0027:\n  Frameworks/base: Fix more aapt issues\n"
    },
    {
      "commit": "87332a7109610d02ac7f5db6af99d3a11813d5c1",
      "tree": "19696ad7c6d520eeaff870636aa953a96adcc530",
      "parents": [
        "bee6dfe09d4381f9ddf666fd04012c662f31e7fd",
        "1dcc75b2dbaef7c3bb3410187bf38cabca0d1aea"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 01 22:03:58 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 01 23:26:06 2014 -0700"
      },
      "message": "resolved conflicts for merge of 1dcc75b2 to lmp-mr1-dev-plus-aosp\n\nChange-Id: I8f7cbd971beae3ab134195e612d705860665142f\n"
    },
    {
      "commit": "b8dc7bc582ee4acd9d6c1379701a002c5ddbe323",
      "tree": "e8a00555870780e85e659f4bcdc8be7c9516e15d",
      "parents": [
        "0ce259c2f69cefd09342a95fbbd4c1a63a0af484"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 01 19:07:51 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 01 20:42:00 2014 -0700"
      },
      "message": "Frameworks/base: Fix more aapt issues\n\nChange-Id: I6da7dc674e9f9e3b0886a3cfd1e3194d6b5ac948\n"
    },
    {
      "commit": "2412f84064c26b643c722ce914a97c4ec7776c69",
      "tree": "978c6b2e82fceee9153ffe612cfbb67e4b1b8c57",
      "parents": [
        "c46dbe8ac4748a0084b026524ad9e5ac44fb9fde"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 30 20:55:57 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 01 16:18:06 2014 -0700"
      },
      "message": "Frameworks/base: Fix AAPT warnings\n\nTurn on -Wall -Werror. Fix warnings.\n\nChange-Id: I287fb3c1e851c654479bcf9ea8c73bd354a6b2a1\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": "48f05d29f398576c76b2c3b47a22f4e44e8919fc",
      "tree": "6e04ac902663b6ba1371c3c13c77268e9f538f99",
      "parents": [
        "759f780af0b838316556de69049fb892f7b11ed5"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon May 12 22:13:02 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Aug 21 20:54:01 2014 +0000"
      },
      "message": "Add better error message for AAPT file conflicts\n\nSome resource directories may be the same even though\ntheir names are different. For instance, the\n\"smallest width\" qualifier was added in API 13,\nso the resource directory \"values-sw600dp\" and\n\"values-sw600dp-v13\" are the same and cause\na conflict. The error reports that this might be the\ncase.\n\nChange-Id: Ia35f1d670edd48265b3a7fe3d55656128421f612\n"
    },
    {
      "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": "b0db8de73e6e4151b4e9d1fe3be1f609c3c1fb83",
      "tree": "66658848aac4c3a8d3cd5de4be43ac73d1dbc24e",
      "parents": [
        "adf2ea2bfda0bde4ef84725402d6b033dfa2b9f1"
      ],
      "author": {
        "name": "Bryan Mawhinney",
        "email": "bryanmawhinney@google.com",
        "time": "Fri Jun 06 13:27:11 2014 +0100"
      },
      "committer": {
        "name": "Bryan Mawhinney",
        "email": "bryanmawhinney@google.com",
        "time": "Fri Jun 06 13:27:11 2014 +0100"
      },
      "message": "Fix issue preventing aapt from stripping all unwanted densities\n\nBug: 15463874\nChange-Id: I9d1e289f1db2ed3c9a41d91caea6d07b69fcb84f\n"
    },
    {
      "commit": "fab50875b98e8274ac8ee44b38ba42521bbbf1f9",
      "tree": "984277e1fadd3d5156bb6b05b21a1c23252b3a1b",
      "parents": [
        "57df4fd69e96c901ac0a027aa913f3f9086fbbf6"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Apr 16 14:40:42 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Sun May 11 18:30:12 2014 -0700"
      },
      "message": "Add support for building split APKs\n\nBuild multiple APKs, each containing a disjoint subset\nof configurations. These can then be loaded into the device\nAssetManager and should operate as if they were never split.\n\nUse the idea of building multiple sets of files, where each\nset represents an APK. An ApkBuilder can place files\nin a set based on its configuration, but you can actually\nadd directly to a set, in the case of the resources.arsc and\ngenerated AndroidManifest.xml for splits.\n\nChange-Id: Ic65d3f0ac1bbd290185695b9971d425c85ab1de3\n"
    },
    {
      "commit": "0a0454fdcc7aeac6e57f9466da8f39bcf5f3f6ec",
      "tree": "ee5502e236507ebf43a8b365bcf10466b49be61b",
      "parents": [
        "dd79334f7ecb39135058c2049cd933b4b930a3d1",
        "642421aa7f284817cc1a972a7f9c7a64696a0116"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Fri Apr 04 19:34:11 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Apr 04 19:34:11 2014 +0000"
      },
      "message": "am 642421aa: am 5c31e487: Merge \"Introduce new UI_MODE_TYPE_WATCH and qualifier.\" into klp-modular-dev\n\n* commit \u0027642421aa7f284817cc1a972a7f9c7a64696a0116\u0027:\n  Introduce new UI_MODE_TYPE_WATCH and qualifier.\n"
    },
    {
      "commit": "642421aa7f284817cc1a972a7f9c7a64696a0116",
      "tree": "e51a5b2c212bd95c4a052fcbd6b0bb0f0fce4976",
      "parents": [
        "8f81d29558bb0c97187d5ae3a7ee696ec13b264a",
        "5c31e487c4577e1c47ee7c949325d6a13f0d462e"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Fri Apr 04 19:28:09 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Apr 04 19:28:09 2014 +0000"
      },
      "message": "am 5c31e487: Merge \"Introduce new UI_MODE_TYPE_WATCH and qualifier.\" into klp-modular-dev\n\n* commit \u00275c31e487c4577e1c47ee7c949325d6a13f0d462e\u0027:\n  Introduce new UI_MODE_TYPE_WATCH and qualifier.\n"
    },
    {
      "commit": "6c191299a73388cd593809c0b66bafbd08fd2982",
      "tree": "86466cc5d46bb13d87ae71c906349957edd3a7fb",
      "parents": [
        "8db6d9af58b9b81dbd764acd3f6a379afb539bf6"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Thu Apr 03 16:37:27 2014 -0400"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Fri Apr 04 15:21:53 2014 -0400"
      },
      "message": "Introduce new UI_MODE_TYPE_WATCH and qualifier.\n\nDefault ui mode to watch if we have FEATURE_WATCH.\n\nBug:13395758\nChange-Id: Ie5ff95de60e69e91ad3612c7d2f1fca7f49061bd\n"
    },
    {
      "commit": "de898ff42912bd7ca1bfb099cd439562496765a4",
      "tree": "849b591a99a7e6a8fd790aedca3afff6f6b6eade",
      "parents": [
        "05f79758cd2688f89444a38baba326a0a1c1a438"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jan 29 18:20:45 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Mar 25 12:09:56 2014 -0700"
      },
      "message": "Shared library resource support\n\nShared libraries can now export resources for applications\nto use.\n\nExporting resources works the same way the framework exports\nresources, by defining the public symbols in res/values/public.xml.\n\nBuilding a shared library requires aapt to be invoked with the\n--shared-lib option. Shared libraries will be assigned a package\nID of 0x00 at build-time. At runtime, all loaded shared libraries\nwill be assigned a new package ID.\n\nCurrently, shared libraries should not import other shared libraries,\nas those dependencies will not be loaded at runtime.\n\nAt runtime, reflection is used to update the package ID of resource\nsymbols in the shared library\u0027s R class file. The package name of\nthe R class file is assumed to be the same as the shared library\u0027s\npackage name declared in its manifest. This will be customizable in\na future commit.\n\nSee /tests/SharedLibrary/ for examples of a shared library and its\nclient.\n\nBug:12724178\nChange-Id: I60c0cb8ab87849f8f8a1a13431562fe8603020a7\n"
    },
    {
      "commit": "8c1fc83445f8dce7e6d0789feeed8bf98d33bf01",
      "tree": "b9eae6651529003e33abaea6a3f18fd17266fb42",
      "parents": [
        "982931c72b6cd00c5eea28efc4b086f47f7aca17",
        "28879bbfe89dc4bf2067a7183975ecffb82f68e6"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Feb 17 11:06:38 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Feb 17 11:06:38 2014 +0000"
      },
      "message": "am 28879bbf: am be57fca4: Merge \"Extended locales in AAPT / AssetManager.\"\n\n* commit \u002728879bbfe89dc4bf2067a7183975ecffb82f68e6\u0027:\n  Extended locales in AAPT / AssetManager.\n"
    },
    {
      "commit": "788fa41482b9d398591b7db8b0b01839029611ad",
      "tree": "ab94d4040351d79cca717a8b7e21fc6be5d0fcb5",
      "parents": [
        "48620f1d1b03e1cb4e0dce4999e0a4c2daf3a1b2"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jan 21 15:32:36 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Feb 14 14:08:57 2014 +0000"
      },
      "message": "Extended locales in AAPT / AssetManager.\n\nSupport 3 letter language codes, script codes \u0026\nvariants. The bulk of the changes are related to\nthe implementation of command line filtering of\nlocales etc. The previous code assumed that the\nvalue of each \"axis\" (locale, density, size etc.)\ncould be represented by a 4 byte type. This is\nno longer the case.\n\nThis change introduces a new class, AaptLocaleValue\nwhich holds a (normalized) locale parsed from a\ndirectory name or a filter string. This class takes\nresponsibility for parsing locales as well as\nwriting them to ResTable_config structures, which is\ntheir representation in the resource table.\n\nThis includes minor changes at the java / JNI level\nfor AssetManager. We now call locale.toLanguageTag()\nto give the native layer a well formed BCP-47 tag.\nI\u0027ve removed some duplicated parsing code in\nAssetManager.cpp and replaced them with functions on\nResTable_config. The native getLocales function has\nbeen changed to return well formed BCP-47 locales as\nwell, so that the corresponding java function can use\nLocale.forLanguageTag to construct a Locale object\nout of it.\n\nFinally, this change introduces default and copy\nconstructors for ResTable_config to prevent having\nto memset() the associated memory to 0 on every\nstack allocation.\n\n(cherry-picked from commit 91447d88f2bdf9c2bf8d1a53570efef6172fba74)\n\nChange-Id: I1b43086860661012f949fb8e5deb7df44519b854\n"
    },
    {
      "commit": "91447d88f2bdf9c2bf8d1a53570efef6172fba74",
      "tree": "dc46e96130696c26e8fd3883227314ef5c0b7ad1",
      "parents": [
        "378c6775a62d9c461cde51f06c1b14bb014c78fd"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jan 21 15:32:36 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Feb 10 15:50:16 2014 +0000"
      },
      "message": "Extended locales in AAPT / AssetManager.\n\nSupport 3 letter language codes, script codes \u0026\nvariants. The bulk of the changes are related to\nthe implementation of command line filtering of\nlocales etc. The previous code assumed that the\nvalue of each \"axis\" (locale, density, size etc.)\ncould be represented by a 4 byte type. This is\nno longer the case.\n\nThis change introduces a new class, AaptLocaleValue\nwhich holds a (normalized) locale parsed from a\ndirectory name or a filter string. This class takes\nresponsibility for parsing locales as well as\nwriting them to ResTable_config structures, which is\ntheir representation in the resource table.\n\nThis includes minor changes at the java / JNI level\nfor AssetManager. We now call locale.toLanguageTag()\nto give the native layer a well formed BCP-47 tag.\nI\u0027ve removed some duplicated parsing code in\nAssetManager.cpp and replaced them with functions on\nResTable_config. The native getLocales function has\nbeen changed to return well formed BCP-47 locales as\nwell, so that the corresponding java function can use\nLocale.forLanguageTag to construct a Locale object\nout of it.\n\nFinally, this change introduces default and copy\nconstructors for ResTable_config to prevent having\nto memset() the associated memory to 0 on every\nstack allocation.\n\nChange-Id: I899a56a9a182ee6be52b9389d1ae59266f5482e9\n"
    },
    {
      "commit": "94c40a4cf90933216e6d656213dfdfa19c68a9c3",
      "tree": "283c3dc05005a538807d59f6896feb051eba991c",
      "parents": [
        "2a1fdefe16046860fcaf524af4fc380d850d28bb",
        "1b5b60d696dd6840406ab9d3f38522ba18273c60"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 04 11:00:03 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 04 11:00:03 2014 -0800"
      },
      "message": "resolved conflicts for merge of 1b5b60d6 to master\n\nChange-Id: I2b713a55fcdf02c01afa99f175bf14248f210460\n"
    },
    {
      "commit": "1b5b60d696dd6840406ab9d3f38522ba18273c60",
      "tree": "1c6896b824a4f9bcf2b8960048f53d4713929d70",
      "parents": [
        "1441acdd6d0f08b00493478386e1b74df47e243b",
        "203356a34a82bfc759be02dfa1caa4529dce0732"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 04 18:36:10 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 04 18:36:10 2014 +0000"
      },
      "message": "am 203356a3: Merge \"Add support for multiple asset dirs (-A)\" into klp-modular-dev\n\n* commit \u0027203356a34a82bfc759be02dfa1caa4529dce0732\u0027:\n  Add support for multiple asset dirs (-A)\n"
    },
    {
      "commit": "7c4887f66bfa3dad16f8b03dc825ade96d7de130",
      "tree": "9ed404cd4e19d5a28b75fe132fae66bce4550276",
      "parents": [
        "e05b7b50e234e8ed2471f5ad96bb3d715067e9f3"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Jan 27 17:32:37 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Jan 31 13:47:27 2014 +0000"
      },
      "message": "Change ResourceType cookies to int32_t.\n\nAlso change the order of parameters in ResTable constructors\nto avoid ambiguity.\n\n(cherry picked from commit 00b314436f4fdfada4bbf1e79ec12e9fa38aeaf1)\n\nChange-Id: I874c5d03c134dc3c331fba423b5280366296287c\n"
    },
    {
      "commit": "00b314436f4fdfada4bbf1e79ec12e9fa38aeaf1",
      "tree": "d1d6075692ef537e80d05255a13204a61f0f8a04",
      "parents": [
        "729b12c7a91f9caa65af77197cf6a8814a5a2051"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Jan 27 17:32:37 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jan 28 16:27:52 2014 +0000"
      },
      "message": "Change ResourceType cookies to int32_t.\n\nAlso change the order of parameters in ResTable constructors\nto avoid ambiguity.\n\nChange-Id: If7bfa1f640dddca39b9f26a3ce84081fa7b6e6e3\n"
    },
    {
      "commit": "9ab9b93eae8b2fc747d6101cf0e4c19b2218715f",
      "tree": "8ed4f335641575ca4a207e2deafedb70515b5238",
      "parents": [
        "ebcef6b896b3b1693862aad9c5000c450ba598a5"
      ],
      "author": {
        "name": "Bryan Mawhinney",
        "email": "bryanmawhinney@google.com",
        "time": "Fri Jan 24 16:18:13 2014 +0000"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 27 10:31:10 2014 -0800"
      },
      "message": "Filter unneeded assets from additional resource directories\n\nThis change ensures that assets that are not needed for the\npreferred density are stripped from additional directories\nspecified by the -S flag\n\nFor simplicity, the logic for deciding which assets are not\nneeded is still applied per directory, rather than globally,\nwhich may still result in some unneeded assets being included\nin the final output.\n\nBug: 12604267\nChange-Id: Ic1378570c2d9cd1c854c507e784233818c19efca\n"
    },
    {
      "commit": "8cf61845187e301dfc4f64b42921977d38766a34",
      "tree": "c46a4a19d4573e661e43dd2061e8cded0d8bcd0d",
      "parents": [
        "76327314d2238e105f8b94909f9c0cf85caca318"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 18 13:42:09 2013 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 27 10:31:08 2014 -0800"
      },
      "message": "Prune unneeded density resources from APK\n\nWhen a preferred density is specified, prune all but the\nclosest matching density when the exact density resource does not\nexist.\n\nIf a preferred density resource does not exist and a higher density\nresource exists, prune all but the resource with the next highest\ndensity relative to the preferred density.\n\nIf a preferred density resource does not exist and there is no\nhigher density resource, prune all but the resource with the next\nlowest density relative to the preferred density.\n\nManual merge of I99b3950fe3d8116a5625968ed383442315ae8526 from\nframeworks/base/tools to frameworks/tools\n\nbug:11224465\nChange-Id: Idddf55dad27f114ffc429b61317c3a5b1435d808\n"
    },
    {
      "commit": "282e181b58cf72b6ca770dc7ca5f91f135444502",
      "tree": "e313e7ab30ff4679562efa37bde29cfcb9e375d3",
      "parents": [
        "7023df08f14ec5dee76ac54c03e870f84e297636"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jan 23 18:17:42 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 27 10:31:04 2014 -0800"
      },
      "message": "Revert \"Move frameworks/base/tools/ to frameworks/tools/\"\n\nThis reverts commit 9f6a119c8aa276432ece4fe2118bd8a3c9b1067e.\n"
    },
    {
      "commit": "09384303dea4f3f01d5682918d7bab9bf83a02b1",
      "tree": "8b1c7e3e736cd8e2fdc0964ea5c71d08536452eb",
      "parents": [
        "6873e17d4b565aa1d4ea2a8f1ac261f517dcc2ff"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jan 22 16:07:42 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jan 23 12:43:42 2014 -0800"
      },
      "message": "Add support for multiple asset dirs (-A)\n\nBug: 12608034\nChange-Id: I02c5a1a73b83498d799570428cca3dd914f8ac11\n"
    },
    {
      "commit": "9438c2df133710ea2364e817cfd237f7a3d69ab1",
      "tree": "19d1315592338138a75361b10345479d41faf026",
      "parents": [
        "7d91cc97d788aae9f3a6ac5540580cc95591e356"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Oct 15 17:18:51 2013 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Oct 15 17:18:51 2013 -0700"
      },
      "message": "Prune unneeded density resources from APK\n\nWhen a preferred density is specified, prune all but the\nclosest matching density when the exact density resource does not\nexist.\n\nIf a preferred density resource does not exist and a higher density\nresource exists, prune all but the resource with the next highest\ndensity relative to the preferred density.\n\nIf a preferred density resource does not exist and there is no\nhigher density resource, prune all but the resource with the next\nlowest density relative to the preferred density.\n\nbug:11224465\nChange-Id: I99b3950fe3d8116a5625968ed383442315ae8526\n"
    },
    {
      "commit": "9f6a119c8aa276432ece4fe2118bd8a3c9b1067e",
      "tree": "1391656f9ad624aa99d4c7d2880d38121801a424",
      "parents": [
        "647b6f5ed276bf93d95e5801e5e8af2802ef5fbb"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Wed Aug 28 09:44:17 2013 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Wed Aug 28 09:44:17 2013 -0700"
      },
      "message": "Move frameworks/base/tools/ to frameworks/tools/\n\nChange-Id: I3ffafdab27cc4aca256c3a5806b630795b75d5c8\n"
    },
    {
      "commit": "1d766b53217f9e45472a01e84d2f1b02af36dec7",
      "tree": "5408fa90569c4d35467ab508f7f58fd41eb832cb",
      "parents": [
        "d547bcec5634f99195a2b12522b6977f61c40d55"
      ],
      "author": {
        "name": "Mattias Petersson",
        "email": "mattias.petersson@sonyericsson.com",
        "time": "Fri Oct 07 09:33:52 2011 +0200"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonymobile.com",
        "time": "Fri Jul 26 18:42:34 2013 +0000"
      },
      "message": "Add support for MNC\u003d00\n\nThis adds support for operators with MNC (Mobile Network Code) zero\nto add customized resources. For example, it makes it possible to\nadd a folder called \"/res/values-mnc00/\" in an application. This will\ncause resources in that folder to be used when MNC is zero.\n(There is a total of 14 countries that have an operator with MNC\nzero.)\n\nWithout this fix, the resource framework gets confused, because MNC 0\nis normally used when the MNC is undefined (not set).\n\nBug: 7170488\nChange-Id: Icfd39fd0c739216e89446252ea0e7ceba6f002c6\n"
    },
    {
      "commit": "56a2301c7a1169a0692cadaeb48b9a6385d700f5",
      "tree": "7dfa8ab456c4e2915c095383d37847caa0d013be",
      "parents": [
        "b41af58f49d371cedf041443d20a1893f7f6c840"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 12 15:41:49 2013 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 12 15:41:49 2013 -0800"
      },
      "message": "Implement issue #6646859: 4K!!!!  4K!!!!  4K!!!!\n\nChange-Id: Ib05a2eb6a03db50074805a437a3639a7d10684a0\n"
    },
    {
      "commit": "8a802dbdabdfd27692c2e38b2c3adafe95566106",
      "tree": "7b933dc6d1dcfb6cd4a7d0a349ce642641712c07",
      "parents": [
        "18e876806718e28edaa3cd9bb0262a9b400bc82b"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Wed Sep 05 13:12:02 2012 -0700"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Thu Sep 06 11:13:24 2012 -0700"
      },
      "message": "Use \"ldrtl\" and \"ldltr\" config qualifiers for RTL / LTR resources\n\n- we cannot use \"rtl\" / \"ltr\" qualifiers as they can conflict with ISO-639 Alpha-3\ncodespace which uses 3 letters for identifying a language code (and could use either\n\"rtl\" or \"ltr\" strings for defining a language in the future).\n\n- we are using instead \"ldrtl\" for RTL and \"ldltr\" for LTR resources. Those qualifiers\nare defined by more than 3 chars and outside of what is defined into ISO-639. They\nare also more understandable as \"ld\" prefix is for \"layoutdirection\"\n\nChange-Id: Id43e948103707e09bef63ebd54ac1779dde58e72\n"
    },
    {
      "commit": "5f7979993979466c79ab4f38d83c6f2aca361662",
      "tree": "90c8b098b3c9a53a90c039641b0b7ba379d6b4eb",
      "parents": [
        "5e8e41e41aecd2a4951659a1f3507f3371e0cc47"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Fri Jun 15 20:16:41 2012 -0700"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Thu Aug 23 14:55:33 2012 -0700"
      },
      "message": "Add support for \"-rtl\" in resources\n\n- fix bug #7035019 Need to have \"-rtl\" support for Resource\n\nChange-Id: Ic82145c2ac672729d8a6c695a5f343276a1a0a2c\n"
    },
    {
      "commit": "9f374b9de5a557a7977b24d41f45c3464cfff8c1",
      "tree": "7d2eba9b27fcddaf67d48fa22e1bebc2ff0b6dca",
      "parents": [
        "b25605cd7111bcab41ec10547f015bd2d6215c91",
        "44ff9b8f9294e015031fc9293974604771e5efdd"
      ],
      "author": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Tue Jun 05 08:45:20 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 05 08:45:20 2012 -0700"
      },
      "message": "am 44ff9b8f: am 36ac43ba: Merge \"Tweak default ignore-assets path\"\n\n* commit \u002744ff9b8f9294e015031fc9293974604771e5efdd\u0027:\n  Tweak default ignore-assets path\n"
    },
    {
      "commit": "44ff9b8f9294e015031fc9293974604771e5efdd",
      "tree": "91eabfeb2a567799b801af23f5e59b23d735488c",
      "parents": [
        "3df4e1a2f1b4f0eb110c8983107b7c7fa21ed338",
        "36ac43ba9982a78b4a047c8970776505a3fab4da"
      ],
      "author": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Tue Jun 05 08:41:16 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 05 08:41:16 2012 -0700"
      },
      "message": "am 36ac43ba: Merge \"Tweak default ignore-assets path\"\n\n* commit \u002736ac43ba9982a78b4a047c8970776505a3fab4da\u0027:\n  Tweak default ignore-assets path\n"
    },
    {
      "commit": "e0219c8baa9d63b3794f90ab772f1c19ecb74ec4",
      "tree": "cc5f1052ffefb73dcd46da1683d6bcfe6eda5adf",
      "parents": [
        "0748a5698776d1a9693a5449ffc983af26cc533b"
      ],
      "author": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Mon Jun 04 10:38:13 2012 -0700"
      },
      "committer": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Mon Jun 04 10:41:38 2012 -0700"
      },
      "message": "Tweak default ignore-assets path\n\nAdd .DS_Store to the list of ignored files that are silently\nignored (other dot-files are ignored but aapt emits a \"(skipping \u003cx\u003e)\"\nmessage.)\n\nAlso, add a \"!\" prefix to the *~ pattern for Emacs/Vim/Gedit backup\nfiles.\n\nFinally, move the !*.scc pattern up in front of the .* pattern, such\nthat it doesn\u0027t match the earlier .* pattern (which is verbose, unlike\n!*.scc).\n\nChange-Id: Id3e96490f1802486aea8c58366d43e9d413971b8\n"
    },
    {
      "commit": "98a0607a314a7a6023fabdafaa8e470a1e800c09",
      "tree": "820f623b5b8b83061597cc24996cab7615f54e34",
      "parents": [
        "d4cb08df751e29338f4df1a76b303aa720f2bc00"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue May 22 11:24:22 2012 -0700"
      },
      "committer": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Thu May 24 11:07:14 2012 -0700"
      },
      "message": "Merge \"Fix length of pattern.\" DO NOT MERGE.\n\nAfter skipping * with \"token++\", the length should decrease by 1 as\nwell.\n\n(merged from 996b073e813ba1a22a13282ccdebb664f14ba898)\n\nChange-Id: Ie6232ef603bb31e25e03b926e6c1bb92ac34902d\n"
    },
    {
      "commit": "996b073e813ba1a22a13282ccdebb664f14ba898",
      "tree": "0f59bedc48c4da4a49b82eac6170c5d8d7e37e6f",
      "parents": [
        "0eaeb69d1c4849da8ab1df70b84e90837193df67"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue May 22 11:24:22 2012 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue May 22 11:35:22 2012 -0700"
      },
      "message": "Fix length of pattern.\n\nAfter skipping * with \"token++\", the length should decrease by 1 as\nwell.\n\nChange-Id: I132eb7d12bb756f2f713c607e92741ca834aef81\n"
    },
    {
      "commit": "6c255a3a378143af59021d29b4980b28f1ab4544",
      "tree": "145d2632678e6227c664a046de8930ff2e3873be",
      "parents": [
        "43a760ba84a5357bae792a33ad4a0e946f02679c"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Mon May 07 16:16:46 2012 -0700"
      },
      "committer": {
        "name": "Raphael Moll",
        "email": "raphael@google.com",
        "time": "Fri May 18 20:34:44 2012 -0700"
      },
      "message": "Merge \"AAPT: support a new --ignore-assets flag.\"\n\nAAPT has a fixed built-in list of files and directories\nto ignore when parsing resource files. Over the years we\nalways had developers requiring specific patterns.\n\nAdded a command-line option for it:\n  aapt di --ignore-assets \"foo*:*.blah\"\n\nIf the env var ANDROID_AAPT_IGNORE is set, it is parsed\nto find which file/directory patterns to ignore.\n\nOtherwise a default is used that matches the current behavior.\n\nSDK Bug: 5343 24067\n\n(cherry-pick from AOSP 90897ed87bce639bf6bb2ccf15fbabb59b131bab)\n\nChange-Id: Ia4caa2a8188c8c1df143f884e459b8182645995f\n"
    },
    {
      "commit": "90897ed87bce639bf6bb2ccf15fbabb59b131bab",
      "tree": "53b5b28bf5a41e41a35751f12becef9dd94a0dbe",
      "parents": [
        "ad3f86a526c49ecd733564771b5c2ce7eade2a96"
      ],
      "author": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Mon May 07 16:16:46 2012 -0700"
      },
      "committer": {
        "name": "Raphael Moll",
        "email": "ralf@android.com",
        "time": "Wed May 09 21:16:26 2012 -0700"
      },
      "message": "Support a new ANDROID_AAPT_IGNORE env var.\n\nAAPT has a fixed built-in list of files and directories\nto ignore when parsing resource files. Over the years we\nalways had developers requiring specific patterns.\nIf the env var ANDROID_AAPT_IGNORE is set, it is parsed\nto find which file/directory patterns to ignore.\nOtherwise a default is used that matches the current behavior.\n\nAdded a command-line option for it:\n  aapt di --ignore-assets \"foo*:*.blah\"\n\nSDK Bug: 5343 24067\n\nChange-Id: Ia4caa2a8188c8c1df143f884e459b8182645995f\n"
    },
    {
      "commit": "1644c6d7f4931d0b4fe7ea77c63b016af01a46d3",
      "tree": "794f3b2ccf8ce784b043b74e03fe970b811bc455",
      "parents": [
        "e7171effdf9ef0700782520187c0a292b0a74759"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Feb 06 15:33:21 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 07 12:57:50 2012 -0800"
      },
      "message": "Only generate private symbols that are needed.\n\nChange-Id: Icc4c86638db8429a387bf87c934cc712f807e213\n"
    },
    {
      "commit": "d96e3dfa02b203b1fc826e80d6f9aa074ba9c250",
      "tree": "a91a318c43620b6523bd2e83be01632f223b153c",
      "parents": [
        "43ea4e10dc402d20f506cdb4b4f27e49b4dc0443"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jan 25 15:12:23 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jan 25 15:14:50 2012 -0800"
      },
      "message": "Add xxhdpi; fix ActivityManager.getLauncherLargeIconSize() etc.\n\nChange-Id: I519d6cdc527a402d93b98df17a64fc1da52ad598\n"
    },
    {
      "commit": "44fcb83b38b062a650ddf556fe7f5e34905df9ea",
      "tree": "f5726b3011934023b43a46eb3ce3be6742a274ba",
      "parents": [
        "3766a7a27535101e62af958b1d2d710daa166d7d"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Wed Dec 14 20:59:30 2011 -0800"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Thu Dec 15 16:16:14 2011 -0800"
      },
      "message": "Add a new ui mode for \"appliance\"\n\nThe idea is that this is a device which is more-or-less headless.  It\nmight have some limited interaction capabilities, but it\u0027s not something\nthat you want to rely on having.\n\nChange-Id: Ib92f53a120bf83de781728011721a4859def7d9f\n"
    },
    {
      "commit": "bd9d2bcdebfa66a0f71fa67aa256dcae4ccd93da",
      "tree": "9ba4516e691ebe9f7948028a93c3c7ff513f1c1f",
      "parents": [
        "cd8640fc1a801349e863a7b6270a0702a63c014b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Oct 16 14:17:07 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Oct 16 14:17:07 2011 -0700"
      },
      "message": "Whoops, remove left-over debug output.\n\nChange-Id: Ib30571b22a6750629f975319a403d38de5e9462c\n"
    },
    {
      "commit": "e6b680364dd992907a8d2037685a2e500d188dfb",
      "tree": "3d931a3139f058da9ae934e5cf50cd6dc50f7e64",
      "parents": [
        "d814d4fa0c76a0384f7e32816e1ca36f237911c6"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Oct 13 16:26:02 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Oct 16 11:52:17 2011 -0700"
      },
      "message": "New aapt feature to do smarter filtering of configurations.\n\nThis adds a --preferred-configurations flag that specifies the\nspecific configurations you would like to have.\n\nIt is smarter than \"-c\" because it will avoid stripping a\nconfiguration if that would result in there being no value\nfor the resource.\n\nIt is dumber than \"-c\" because it can\u0027t process as many kinds\nof resources.  It is really only intended for bitmaps and use\nwith density configs.\n\nThis required re-arranging AaptAssets to group files together\nby config again, like they used to be.  I think this hasn\u0027t\nbroken anything.  Hopefully.\n\nChange-Id: I4e9d12ff6e6dbd1abb8fd4cb1814c6674b19d0e5\n"
    },
    {
      "commit": "a125c937de06b1cc43368743592f47513eb88b76",
      "tree": "514f08565d17813860d4cc240162806f3fda9816",
      "parents": [
        "57aebc6109f2059ba335a02bf95928a494cff4ba",
        "2c311be720341e3249887e592bbc1881008b02bd"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jul 20 16:31:25 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jul 20 16:31:25 2011 -0700"
      },
      "message": "resolved conflicts for merge of 2c311be7 to honeycomb-plus-aosp\n\nChange-Id: I806c7b4ae95f66df621587e52497dd8739a115fe\n"
    },
    {
      "commit": "9139868b6c5cb29b3665984225dceb0193fec31d",
      "tree": "01c3dfab0f56bfcf38d32f2c2054915a6864d10d",
      "parents": [
        "bf31250ba0858a2e72a3906a1f0216846683bc2e",
        "ba6c98db8f21016f81ecac35bb0ea3c433044bb7"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jul 19 10:18:28 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 19 10:18:28 2011 -0700"
      },
      "message": "am ba6c98db: am 82943ecf: am d40c93f6: Merge \"Add dependency generation to Aapt for R.java\"\n\n* commit \u0027ba6c98db8f21016f81ecac35bb0ea3c433044bb7\u0027:\n  Add dependency generation to Aapt for R.java\n"
    },
    {
      "commit": "03589cc65355220e0a4a0c816189a9fa25cc81fc",
      "tree": "ebe98e64c530708e8709025e8ad051c714eab9a3",
      "parents": [
        "9bf34ca6f85309c65b0ebdf614cb8266401b49ba"
      ],
      "author": {
        "name": "Josiah Gaskin",
        "email": "josiahgaskin@google.com",
        "time": "Mon Jun 27 16:26:02 2011 -0700"
      },
      "committer": {
        "name": "Josiah Gaskin",
        "email": "josiahgaskin@google.com",
        "time": "Mon Jul 18 16:37:55 2011 -0700"
      },
      "message": "Add generation of dependency file for .ap_ package\n\nMake Aapt generate a dependency file in the same directory as the\noutput ap_ file if the --generate-dependencies flag is set.\nThis dependency file can then be read by the ant exec loop task\nto see whether to repackage resources.\n\nChange-Id: I763679414daf76369700aa599c26dcf78d4de099\n"
    },
    {
      "commit": "9bf34ca6f85309c65b0ebdf614cb8266401b49ba",
      "tree": "50708801cb3c58aa23a32bc1a1ad39315e3aeff5",
      "parents": [
        "ce89f1531ed8b96b8b790b3f8b18dd4cf483f7f0"
      ],
      "author": {
        "name": "Josiah Gaskin",
        "email": "josiahgaskin@google.com",
        "time": "Tue Jun 14 13:57:09 2011 -0700"
      },
      "committer": {
        "name": "Josiah Gaskin",
        "email": "josiahgaskin@google.com",
        "time": "Mon Jun 27 16:44:57 2011 -0700"
      },
      "message": "Add dependency generation to Aapt for R.java\n\nMake Aapt generate a dependency file in the location specified\nby RClassDir for R.java if the --generate-dependencies flag is set.\nThis dependency file is then read by the ant exec loop task\nto see whether to recreate R.java.\n\nChange-Id: I7152dac86b6ea0e448ef65e3a95694afe233c789\n"
    },
    {
      "commit": "b96cbbd11c4590bec846212c33361e02293f18b5",
      "tree": "ac02f12136339bb608c07d8b26eaae1cddccf792",
      "parents": [
        "ff7622992f39d8e401ab23c5ce6a84f318906e52"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 27 13:40:26 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 27 13:40:26 2011 -0700"
      },
      "message": "Add \"tv\" density for 720p screens.\n\nChange-Id: I028969b007f2fceea66947d77a2ae31ef1d1a630\n"
    },
    {
      "commit": "e360bb6bd8ea84b8d37604fc11dfc744b18fb0de",
      "tree": "7e833a630e8108be1345d8595438eea5a30e7173",
      "parents": [
        "1b144e625fb0d34cd680c44cbcfb2deb8a76d4c6"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 20 16:11:04 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 23 15:11:08 2011 -0700"
      },
      "message": "Add \"television\" mode.\n\nChange-Id: Ida1fdb61b036a8b489dbeda196fb4bc82e651b2b\n"
    },
    {
      "commit": "69cb87576ba163b61bb0e6477a3b7c57a9b11d40",
      "tree": "a44be0af3d008409403be133358bdcd628741c01",
      "parents": [
        "b9537db8d9ee27efb4a98415ad2d6b50c1806e5d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 19 18:13:32 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 19 18:23:29 2011 -0700"
      },
      "message": "Add new \"-swNNNdp\" resource qualifier.\n\nChange-Id: I0101e88ca9d8d44138bdcaf571f24b0352f4f6ce\n"
    },
    {
      "commit": "ebff8f92f13513ce37bd74759eb1db63f2220590",
      "tree": "909da02ab7ff47483e227f032828dbdbe7f959af",
      "parents": [
        "a8138732a01b92f0a40f72050b74a3bd4cf6d215"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 12 18:07:47 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 12 18:39:51 2011 -0700"
      },
      "message": "DO NOT MERGE.  Integrate add new screen width/height in \"dp\" configs.\n\nYou can now specify resource configuration variants \"wNNNdp\"\nand \"hNNNdp\".  These are the minimum screen width/height in \"dp\"\nunits.  This allows you to do things like have your app adjust\nits layout based only on the about of horizontal space available.\n\nThis introduces a new configuration change flag for screen size.\nNote that this configuration change happens each time the orientation\nchanges.  Applications often say they handle the orientation change\nto avoid being restarted at a screen rotation, and this will now\ncause them to be restarted.  To address this, we assume the app can\nhandle this new config change if its target SDK version is \u003c ICS.\n\nChange-Id: I4acb73d82677b74092c1da9e4046a4951921f9f4\n"
    },
    {
      "commit": "5ef0b9d72451d4bb65f5a76a05738041ed15664a",
      "tree": "065e751966b6e14ad3483c409139f6fd85be04c5",
      "parents": [
        "69ebb984f230a523dc316bdb2c9e9c28111364fd"
      ],
      "author": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonyericsson.com",
        "time": "Tue Nov 09 14:13:31 2010 +0100"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonyericsson.com",
        "time": "Tue Jan 04 07:30:32 2011 +0100"
      },
      "message": "Make AaptGroupEntry::getMncName accept mnc00\n\nMNC 00 is a valid network code and is used by\nsome operators, see http://en.wikipedia.org/wiki/Mobile_Network_Code.\n\nRemove the test that checks if atoi returns zero.\nThe string is validated to contain only numbers\nalready.\n\nAlso discussed here:\nhttps://code.google.com/p/android/issues/detail?id\u003d3657\n\nChange-Id: I3220d7980abe4067c9e7aa4cbc10b5fd0b8c9ea7\n"
    },
    {
      "commit": "588f228d6a3e3b254fbc1f13f29ee47e13a669c1",
      "tree": "22db4977d6e71d3148f475eefcccbb16003be7ed",
      "parents": [
        "876247784ee6202066abdefd8366f2e09e681fab"
      ],
      "author": {
        "name": "Ficus Kirkpatrick",
        "email": "ficus@android.com",
        "time": "Fri Aug 13 14:13:08 2010 -0700"
      },
      "committer": {
        "name": "Ficus Kirkpatrick",
        "email": "ficus@android.com",
        "time": "Fri Aug 13 14:20:51 2010 -0700"
      },
      "message": "Add --max-res-version flag to aapt.\n\naapt will ignore any versioned resource directories over the\nspecified version (if used).  e.g. --max-res-version\u003d6 will\ncause layout-land-v7 to be ignored.\n\nMerged from froyo.\n\nChange-Id: Ia4eabae535b95b75d18b0c83135d44ed9a95b9eb\n"
    },
    {
      "commit": "168585ed68f03ddc851cd734cbb6ba813e30eb85",
      "tree": "f48591a6feb0e60c3da8400098fc9a961af48d9d",
      "parents": [
        "9c4ed1394bb16b1d76758127a9b5d73bd363adaf",
        "5474902fe9fe72c825855c4a77f99a581a9f6594"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Jun 06 12:10:05 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jun 06 12:10:05 2010 -0700"
      },
      "message": "am 5474902f: Merge \"xhdpi\" into froyo\n\nMerge commit \u00275474902fe9fe72c825855c4a77f99a581a9f6594\u0027 into kraken\n\n* commit \u00275474902fe9fe72c825855c4a77f99a581a9f6594\u0027:\n  xhdpi\n"
    },
    {
      "commit": "588feee5e771de5ec71da213fbb1cba29392c690",
      "tree": "fdfb7f705f3368a88410547ecd302737ad514725",
      "parents": [
        "2e3761ba43f634e97ac493f4b79e5e53954a1491"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 04 14:36:39 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 04 14:36:39 2010 -0700"
      },
      "message": "xhdpi\n\nThis is only a tool (aapt) change, and does not impact any current code.\n\nChange-Id: I562063f612af919eaadba8ac4868a95ff41ac840\n"
    },
    {
      "commit": "14cee9f688c32d63d8521188e7422811629bb7c2",
      "tree": "16c2f2356519a2552bb3b7e2b1de6735793c4b1a",
      "parents": [
        "3fd6419fe542c4ecb8e838d1754a83ce8591b288"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Apr 23 17:51:26 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 28 16:51:52 2010 -0700"
      },
      "message": "New xlarge screen size.\n\nNot complete, only for experimentation at this point.\n\nThis includes a reworking of how screen size configurations are matched,\nso that if you are on a larger screen we can select configurations for\nsmaller screens if there aren\u0027t any exactly matching the current screen.\n\nThe screen size at which we switch to xlarge has been arbitrarily\nchosen; the compatibility behavior has not yet been defined.\n\nChange-Id: I1a33b3818eeb51a68fb72397568c39ab040a07f5\n"
    },
    {
      "commit": "7299c41630935a2b106e73e5603579a7747f7535",
      "tree": "933c4bc5c991c8d9334b7b78fbc71ad73e93d077",
      "parents": [
        "6d141b0a9beb71e59ba850b7be13c4f0344ddc77"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Mar 04 18:41:49 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Mar 05 10:57:47 2010 -0800"
      },
      "message": "Refactor car mode.\n\nExtract all UI behavior from dock observer and ACTION_DOCK_EVENT.\n\nAlso introduce a desk type to go along with the car type all through\nthe resource system, since we now need to have corresponding high-level\nbroadcasts for desk dock mode.  As part of that I also reworked some\nof the logic for switching modes to all funnel through a single\nupdate() call that looks all of the current state to decide what to\ndo next, and fixed various locking issues.\n\nIn addition I found there were bugs in the configuration change\nhandling causing us to only switch into the car mode config and\nthen never get out of it.  Unfortunately now that we are actually\nchanging the configuration for each mode change, the transitions\nbetween them are really crummy as we restart all kinds of\nactivities. :(\n"
    },
    {
      "commit": "ef05e076ced1a32c5c0aaee28403779834adb2ba",
      "tree": "20dcf607adf508481d57610937ceab6ef2c6aee2",
      "parents": [
        "883dbacb12a003f8f46c3faab26b744fdef649a1"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Mar 01 17:43:39 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Mar 01 20:42:14 2010 -0800"
      },
      "message": "Fix issue #2448075: aapt doesn\u0027t fix up activity-alias android:targetActivity links\n\nAnd related:\n\n- The aapt tool now sets a resource configurations sdk level to match any configs\n  that have been set (for example if you specify density your sdk level will be\n  at least 4).\n- New option to modify the targetPackage attribute of instrumentation.\n- Clean up of aapt options help.\n- Fix of UI type values to leave 0 for \"unspecified\".\n- Make the UI mode config APIs public.\n"
    },
    {
      "commit": "e599f78e7785d41902d7525c71d487b36d8ccca2",
      "tree": "f4b3e6c993d5f70b1bacf24b6a5d6be06f6fa1f2",
      "parents": [
        "eac461cf7c246df737d2b0e7bd30be176a34c36e"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Feb 19 12:45:48 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Feb 19 12:45:48 2010 -0800"
      },
      "message": "Use direct reference to enum in AaptAssets\n\nThe second argument to the getNavHiddenName can be NULL, so use a direct\nreference to the class to get the enum values instead of the argument.\n\nChange-Id: I0444572c23cb4de9e7da15a8310a49cf4619bb15\n"
    },
    {
      "commit": "fedfea24e7de98b4fde13d6f79e6db37d9f0e169",
      "tree": "4988eec3ace281fb48a5aec136bebc92b52a3aa6",
      "parents": [
        "c948cc8c8a8a9a751d8252e390e5975d1a763d34"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Feb 18 08:54:47 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Feb 18 08:54:47 2010 -0800"
      },
      "message": "Fix enum reference\n\nWas using argument that is set default to NULL as a shortcut to an\nenum\u0027s value. Change it to reference to class directly to avoid a null\npointer dereference.\n\nChange-Id: I16b8ee15af4f095f027113131d574b70768994b0\n"
    },
    {
      "commit": "27b28b3f62bd3b54fa13acd5d035940b9be464f3",
      "tree": "d1f44096f7071bbc53e5bc979117be8e0f4aa55c",
      "parents": [
        "d5663a108760de672b130ffabd4f6632982f75e5"
      ],
      "author": {
        "name": "Tobias Haamel",
        "email": "haamel@google.com",
        "time": "Tue Feb 09 23:09:17 2010 +0100"
      },
      "committer": {
        "name": "Tobias Haamel",
        "email": "haamel@google.com",
        "time": "Thu Feb 11 21:25:58 2010 +0100"
      },
      "message": "Introduce special UI modes for night and car usage.\n\nThe device mode is now called ui mode. Furthermore is the order of\nprecedence for the resources now in such a way that the ui mode needs\nto be specified after the orientation and before the density.\n\nThe ui mode can be set, like it is done for the locale, as follows:\n\nIActivityManager am \u003d ActivityManagerNative.getDefault();\nConfiguration config \u003d am.getConfiguration();\nconfig.uiMode \u003d Configuration.UI_MODE_TYPE_CAR | Configuration.UI_MODE_NIGHT_ANY;\nam.updateConfiguration(config);\n\nTo allow users to disable the car mode and set the night mode the IUiModeManager\ninterface is used.\n\nThe automatic night mode switching will be added in a separate change.\n"
    },
    {
      "commit": "3cdfc042dca4264bdd2e51320f7edb81fd8f9ee0",
      "tree": "7607902e234f71672c065407d407c7e871d53626",
      "parents": [
        "b87f24a6a88a994256ca97b69904af28824bc9ce"
      ],
      "author": {
        "name": "Raphael",
        "email": "raphael@google.com",
        "time": "Thu Sep 24 15:30:53 2009 -0700"
      },
      "committer": {
        "name": "Raphael",
        "email": "raphael@google.com",
        "time": "Thu Sep 24 15:30:53 2009 -0700"
      },
      "message": "AAPT: Ignore visual source safe files in resources\n\nBUG 1895888\n"
    },
    {
      "commit": "93e462b79d6896da10e15e74c5aec6beb098dddf",
      "tree": "1f5f178b544a49ba5a80e74269b083775ff97854",
      "parents": [
        "6cf05f1c3d6f4585573c8663a62848a09f6a08ff"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 15 22:50:40 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 15 22:50:40 2009 -0700"
      },
      "message": "Implement issue #1780928: Need support hiding nav keys.\n\nThis implements support for devices whose hardware can hide\ntheir navigation keys.  It works much like the existing keyboardHidden\nconfiguration, and for compatibility uses the same configuration\nchange bit.\n\nAlso add FLAG_TURN_ON_SCREEN for windows, which has the system\ncause the screen to be turned on when the window is displayed.\nGreat fun when used with FLAG_SHOW_WHEN_LOCKED!\n\nChange-Id: I0b867f19af85cfd8786a14cea194b34f7bdd9b7a\n"
    },
    {
      "commit": "1553c82e084ac5763fb393857224145506771b99",
      "tree": "10e4b4b4e26f59b81f531dbee5094304caa670cc",
      "parents": [
        "b0a054048329c31948c2f5dbcc11b6f99e454177"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Sun Aug 30 13:36:22 2009 -0700"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Sun Aug 30 16:51:29 2009 -0700"
      },
      "message": "Add a flag (-G) to aapt to have it output the classes that shouldn\u0027t be obfuscated by ProGuard.\n"
    },
    {
      "commit": "c4db95c077f826585d20be2f3db4043c53d30cf5",
      "tree": "9176baa673f97b27150f862485fd492cb3ec7e88",
      "parents": [
        "fe6f45c81463d2d28e11ac6083f2653e1286c5ef"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 21 17:46:02 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 21 18:28:42 2009 -0700"
      },
      "message": "First pass at reworking screen density/size APIs.\n\nThis changes the names of the directories in aapt, to what you see\nin the list of DpiTest resources.  Also adds a new \"long\" configuration\nfor wide screens, which the platform sets appropriate, and introduces\na new kind of resizeability for not large but significantly larger\nthan normal screens which may have compatibility issues.\n"
    },
    {
      "commit": "a53b828635fce8b6b2d3e3377d74d72070056623",
      "tree": "42f4ba9bbf7d8656a4761d6fe5dcd4976cf19369",
      "parents": [
        "09a903ab5b8d940605783ae4ee591c0f090a31d1"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 17 11:13:48 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 17 16:59:08 2009 -0700"
      },
      "message": "Add \"nodpi\" density, and expose a bunch of density-related APIs.\n\nAlso update the DpiTest app to use nodpi images, and try to have a mode\nwhere it turns off compatibility though it\u0027s not quite working.\n"
    },
    {
      "commit": "723738cfaec3dd7b0fe152c872c41bebf94074c4",
      "tree": "421ddeed166d0a4586c9460c4de581307bf08d44",
      "parents": [
        "77cb40a0b088b02357fbc7d5fad24886d607f0da"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 25 19:48:04 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 26 13:37:05 2009 -0700"
      },
      "message": "Expand support for different screen sizes.\n\nApplications can now declare that they support small, normal, or\nlarge screens.  Resource selection can also be done based on these\nsizes.  By default, pre-Donut apps are false for small and large,\nand Donut or later apps are assumed to support all sizes.  In either\ncase they can use \u003csupports-screens\u003e in their manifest to declare\nwhat they actually support.\n"
    },
    {
      "commit": "9066cfe9886ac131c34d59ed0e2d287b0e3c0087",
      "tree": "d88beb88001f2482911e3d28e43833b50e4b4e97",
      "parents": [
        "d83a98f4ce9cfa908f5c54bbd70f03eec07e7553"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "d83a98f4ce9cfa908f5c54bbd70f03eec07e7553",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "076357b8567458d4b6dfdcf839ef751634cd2bfb"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "9266c558bf1d21ff647525ff99f7dadbca417309",
      "tree": "1630b1ba80f4793caf39d865528e662bdb1037fe",
      "parents": [
        "b798689749c64baba81f02e10cf2157c747d6b46"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jan 15 16:12:10 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jan 15 16:12:10 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@126645\n"
    },
    {
      "commit": "f013e1afd1e68af5e3b868c26a653bbfb39538f8",
      "tree": "7ad6c8fd9c7b55f4b4017171dec1cb760bbd26bf",
      "parents": [
        "e70cfafe580c6f2994c4827cd8a534aabf3eb05c"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 17 18:05:43 2008 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 17 18:05:43 2008 -0800"
      },
      "message": "Code drop from //branches/cupcake/...@124589\n"
    },
    {
      "commit": "54b6cfa9a9e5b861a9930af873580d6dc20f773c",
      "tree": "35051494d2af230dce54d6b31c6af8fc24091316",
      "parents": [],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
