)]}'
{
  "log": [
    {
      "commit": "99d36ee8a936d5f9d95305183241ed597bace8e8",
      "tree": "62e4d0459ff1ec55fb197165041892c87ecb9149",
      "parents": [
        "ec8f35366851fcfea2d8b8e42821dda72bdca344"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Apr 17 16:22:03 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Apr 17 16:22:03 2017 -0700"
      },
      "message": "AAPT: Auto-alias application adaptive-icon\n\nWhen a developer specifies an adaptive application icon,\nand a non-adaptive round application icon, create an alias\nfrom the round icon to the regular icon for v26 APIs and up.\n\nWe do this because certain devices prefer android:roundIcon over\nandroid:icon regardless of the API levels of the drawables set for\neither.\n\nThis auto-aliasing behaviour allows an app to prefer the\nandroid:roundIcon on API 25 devices, and prefer the adaptive icon on\nAPI 26 devices.\n\nAn app developer can override this behaviour by explicitly setting the\nandroid:roundIcon to a drawable that has a v26 qualifier.\n\nBug: 34829129\nTest: manual\nChange-Id: Iaaaa5d8367e4f3f9e9f2e3b51c782d3be6a3bb71\n"
    },
    {
      "commit": "cf1f1d9128853f0fa0cef657e2bbb7bf6904c732",
      "tree": "68e76fbe66623c18408fccb2c8c190cc0a760f49",
      "parents": [
        "3ab5c0173a7371c1757c52029cde5f4f84d3bd22"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 16 16:54:23 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Mar 28 19:16:11 2017 +0000"
      },
      "message": "AAPT: Version \u003cadaptive-icon\u003e to v26\n\nBug: 35908647\nTest: manual\nChange-Id: Ic8f43efe34385192fbab18675eb5898ed80912a5\n"
    },
    {
      "commit": "8c2df71739808d6f1aec4277fb47c191e7031164",
      "tree": "fcd72bd33919422f7c4810c2f71731f76d238806",
      "parents": [
        "c7614e5d1e8f9139cccf6ab9b78dda16b98f7656"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Tue Mar 21 03:53:43 2017 +0000"
      },
      "committer": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Tue Mar 21 03:53:43 2017 +0000"
      },
      "message": "Revert \"AAPT: Version \u003cadaptive-icon\u003e to v26\"\n\nBug: 36462965\nBug: 35908647\n\nThis reverts commit c7614e5d1e8f9139cccf6ab9b78dda16b98f7656.\n\nChange-Id: I25279e7c53823dad0703c7e2ea8ff91bdbc1a0f2\n"
    },
    {
      "commit": "c7614e5d1e8f9139cccf6ab9b78dda16b98f7656",
      "tree": "747a3c57f85d7e7d6fcacaa37463fd4132458457",
      "parents": [
        "2bd530e1562bcbf99b6d1b2f447b4b835d3bc43e"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 16 16:54:23 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 16 16:54:23 2017 -0700"
      },
      "message": "AAPT: Version \u003cadaptive-icon\u003e to v26\n\nBug: 35908647\nChange-Id: I307fb2f666cb8519adb9a7f676b87706dc6c683f\nTest: manual\n"
    },
    {
      "commit": "afc79be228596c56ea68c0d2fa22d0a8d733be47",
      "tree": "3b1d5a93a03008c7b43aee3f2c25132648f5b2ba",
      "parents": [
        "187b9b9e5bb3c6a83a26f2ece23a6cfa16614d03"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Feb 22 09:16:33 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 26 15:57:59 2016 -0800"
      },
      "message": "AAPT: Allow duplicate attribute definitions if identical\n\nThis allows libraries to coexist a bit easier, since a lot of them\ndeclare the same attribute. When used together they cause errors.\nBug:27101533\n\nChange-Id: I649cf17bc587c4814f849d5ac522daf74495adcf\n"
    },
    {
      "commit": "525db2489d8bb1204225e697171d3f18b6fc9695",
      "tree": "6c9f60b63d3671207434076861354c388f2ae811",
      "parents": [
        "c25283b5e206ceae2aa6eb01877b79c3c1f0adfb"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Feb 25 23:13:08 2016 +0000"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Feb 25 23:13:08 2016 +0000"
      },
      "message": "Revert \"AAPT: Allow duplicate attribute definitions if identical\"\n\nThis reverts commit c25283b5e206ceae2aa6eb01877b79c3c1f0adfb.\n\nChange-Id: I2f42a4360fa53c4333494afe0178dcec56d62d8e\n"
    },
    {
      "commit": "c25283b5e206ceae2aa6eb01877b79c3c1f0adfb",
      "tree": "b76246dd9a2392ffe2ffd670dc3893ffb7ca1807",
      "parents": [
        "62e1f4891773eecbd144d58e05c61562bb46d2eb"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Feb 22 09:16:33 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Feb 22 09:25:06 2016 -0800"
      },
      "message": "AAPT: Allow duplicate attribute definitions if identical\n\nThis allows libraries to coexist a bit easier, since a lot of them\ndeclare the same attribute. When used together they cause errors.\nBug:27101533\n\nChange-Id: I10327251636392e810637a79e7c9aa514f3f07a6\n"
    },
    {
      "commit": "07dfd2d8642f8a3630ca6429f740865a0c0bfdf7",
      "tree": "28a4aa59b021ddbf0f7bcf9890c98994fd16ade8",
      "parents": [
        "14ed6cf3e7bada4932314969000d384bed6d3f92"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Oct 28 15:44:27 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 30 14:43:43 2015 -0800"
      },
      "message": "Implement AAPT Bundle format\n\nAAPT will scan XML files looking for the \u003caapt:attr\u003e XML tag.\n\n\u003c!-- @layout/bundle.xml --\u003e\n\u003cImageView xmlns:aapt\u003d\"http://schemas.android.com/aapt\"\u003e\n  \u003caapt:attr name\u003d\"android:src\"\u003e\n    \u003cvector android:pathData\u003d\"...\" ...\u003e\n    \u003c/vector\u003e\n  \u003c/aapt:attr\u003e\n\u003c/ImageView\u003e\n\nThe SINGLE child element of the \u003caapt:attr\u003e tag is extracted into its own top\nlevel resource. It is given a generated name.\n\nThe parent element of \u003caapt:attr\u003e is then given the resource attribute that was assigned\nto the `name\u0027 attribute. The value is set to a reference to the generated resource.\n\n\u003c!-- @layout/bundle.xml --\u003e\n\u003cImageView android:src\u003d\"@drawable/bundle_1.xml\"\u003e\n\u003c/ImageView\u003e\n\n\u003c!-- @layout/bundle_1.xml --\u003e\n\u003cvector android:pathData\u003d\"...\" ...\u003e\n\u003c/vector\u003e\n\nBug:22627686\nChange-Id: I8575fc4f739011402662fbf6b3db96df0012f598\n"
    },
    {
      "commit": "5b9847ca3fbcd0bb2528dd2b4c0b789e2d501684",
      "tree": "4d232086253525a00977075cf4aede5a42089287",
      "parents": [
        "9d0f7d44d5cc5322415f52f7ce03cc37a478b350"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 30 21:07:44 2015 +0000"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 30 21:07:44 2015 +0000"
      },
      "message": "Revert \"Implement AAPT Bundle format\"\n\nThis reverts commit 9d0f7d44d5cc5322415f52f7ce03cc37a478b350.\n\nCaused a build breakage when parsing some attributes.\n\nChange-Id: I89ca958b2f2e820d353648df8aadd90bbe8d8339\n"
    },
    {
      "commit": "9d0f7d44d5cc5322415f52f7ce03cc37a478b350",
      "tree": "1882cbfd2f9867e865444c95da0d79028d79ae60",
      "parents": [
        "1cffc196610891f6669c33404f3ff5b0232b7059"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Oct 28 15:44:27 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Nov 24 15:38:40 2015 -0800"
      },
      "message": "Implement AAPT Bundle format\n\nAAPT will scan XML files looking for the \u003caapt:attr\u003e XML tag.\n\n\u003c!-- @layout/bundle.xml --\u003e\n\u003cImageView xmlns:aapt\u003d\"http://schemas.android.com/aapt\"\u003e\n  \u003caapt:attr name\u003d\"android:src\"\u003e\n    \u003cvector android:pathData\u003d\"...\" ...\u003e\n    \u003c/vector\u003e\n  \u003c/aapt:attr\u003e\n\u003c/ImageView\u003e\n\nThe SINGLE child element of the \u003caapt:attr\u003e tag is extracted into its own top\nlevel resource. It is given a generated name.\n\nThe parent element of \u003caapt:attr\u003e is then given the resource attribute that was assigned\nto the `name\u0027 attribute. The value is set to a reference to the generated resource.\n\n\u003c!-- @layout/bundle.xml --\u003e\n\u003cImageView android:src\u003d\"@drawable/bundle_1.xml\"\u003e\n\u003c/ImageView\u003e\n\n\u003c!-- @layout/bundle_1.xml --\u003e\n\u003cvector android:pathData\u003d\"...\" ...\u003e\n\u003c/vector\u003e\n\nBug:22627686\nChange-Id: I31bc96aae30d38bfd0b16508d0f585de5fd88a07\n"
    },
    {
      "commit": "beb9e33bfb79847c25aac98e39f3ea620a953ef7",
      "tree": "4f795b9e4b2cdf95f1dd6b43fdf02eb9fc438b0e",
      "parents": [
        "81eeef589386483722c21572d9ab6d3f95dd26be"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Aug 14 13:16:18 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Aug 14 13:41:46 2015 -0700"
      },
      "message": "AAPT: Fix regression in resource versioning\n\nWith a set of resources with the following configurations:\n\n()\n(land)\n\nthe regression caused any resources that needed to be versioned in configuration () to be lost.\n\nBug:23038206\nChange-Id: I2f1b0313fb780ac241e7aaa487cb37dfb79c36aa\n"
    },
    {
      "commit": "5892248580859620db90d5ef2e3c2f48531933fa",
      "tree": "1aa8d618ee303c56fba94e636d53f46db6e221c9",
      "parents": [
        "8a8ffd4e9b15a04d2af0909205658f08c76bd6b2"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Mon Jun 01 17:59:41 2015 -0700"
      },
      "committer": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Tue Jun 02 02:55:52 2015 +0000"
      },
      "message": "aapt: add option for stricter symbol generation\n\nAdds an option that prevents generating java symbols for string\nresources that don\u0027t have a default localization.\n\nBug: 21537397\nChange-Id: Ifafa942b24d5cdbed93651cde363e859be13d395\n"
    },
    {
      "commit": "f8d6a4ba8739e16e13ae0014efa099ec564939a7",
      "tree": "3359c566008dcbe79e5553503e37a754fea16b1e",
      "parents": [
        "ecc20aafa6f3d272292e7b3577c99f2c127e590f",
        "701f9c2fd8d4e31c5ed3a51e4767d4aeb9b20c40"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Mar 05 15:41:39 2015 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Mar 05 15:41:39 2015 -0800"
      },
      "message": "resolved conflicts for merge of 701f9c2f to stage-aosp-master\n\nChange-Id: I42e0411c0acef4b15137491ecaaed95d9b1cd0c1\n"
    },
    {
      "commit": "030f536009b56dbcc23d284541e51562bd9a6ed3",
      "tree": "ffa22213bbcf93fa38c4d5741100f82f55236cfa",
      "parents": [
        "56fde9e70ef850ca7e3f076e52567f5c75b5e7da"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Mar 04 13:54:20 2015 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Mar 04 13:54:20 2015 -0800"
      },
      "message": "Stop using namespace std.\n\nThe pattern of #include and using namespace std here fails to build\nwith GCC. At first glance it\u0027s a GCC bug rather than libc++ doing\nsomething wrong. Regardless, it can be worked around by just\nspecifying std:: where appropriate.\n\nBug: 19606303\nChange-Id: I5652682eae7ca7559cf2a9307909859013440781\n"
    },
    {
      "commit": "28994d8d181c286b39811441ce78399576c2d315",
      "tree": "2e1d2308c8c49184fc04ad98994f95ed4d462961",
      "parents": [
        "7ce662ef870df34cd189b4ce9e487e496ba407dd"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 13 13:42:41 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jan 14 12:02:15 2015 -0800"
      },
      "message": "AAPT: Handle all old unversioned attribute usage\n\nAll references to attributes defined in pre-LOLLIPOP_MR1 SDK\nare moved to version qualified resource entries.\n\nBug:18221682\nChange-Id: Ifd739530ebcf99e6bc7ddb3f10bc5e05f0726e62\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": "de7de47fef1dcaa26d553665d89e4d3792325c3f",
      "tree": "0d9551d2f037b841f325bbbd3ba27a309e9441b3",
      "parents": [
        "f7ffcaa7a478eaafc121e84b14dcaf2503dd5457"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 03 12:03:08 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 03 15:55:44 2014 -0800"
      },
      "message": "Add error checking to aapt for split generation\n\nChange-Id: Ica627db6a671f6a6c35f98bfd9c03598ffe103ce\n"
    },
    {
      "commit": "978ab9d92934b79409638cf220de3002fea8d505",
      "tree": "9352e4099e7c627436ac9e3a8d7e9094e6987f69",
      "parents": [
        "7e1d525b47404a27fb1c780ea2070f7ca8344461"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Sep 24 19:02:52 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Sep 24 19:02:52 2014 -0700"
      },
      "message": "AAPT: Fix issue with synthesized resource not actually showing up\n\nAAPT keeps around a few pieces of state that are disjoint, so\nsimply adding to a collection won\u0027t add the resource to the final\nflattened output. Instead, we create the resource from the top\nand then copy over the values into the newly created resource.\n\nBug:17647890\nChange-Id: I214263e84c18f9370c6e6a5aa53aa2d833fc842d\n"
    },
    {
      "commit": "e572c011feabf6319ba836cf5bc4c3baa0ba6a85",
      "tree": "14a4e5461bbdcec4fb348663b8144efb28a796e4",
      "parents": [
        "82a2dd8efe48d3a4e04655f01329da857ace4b7d"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Sep 19 15:10:04 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Sep 22 10:51:20 2014 -0700"
      },
      "message": "AAPT: Continuation of public/private attribute fix\n\nXML files like layouts are now scanned and checked\nfor v21 attributes. If those kinds of attributes\nare found, then we remove them in the original\nversion and synthesize a new xml file under the\nv21 configuration.\n\nBug:17520380\nChange-Id: Icf984cb96134180a2e35349c1dbf2cef9a8f0bda\n"
    },
    {
      "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": "27f69f4e06961fdecd1078b2292d764a157e5e1c",
      "tree": "24a4336bc223fd6380ba4fe0113d86edcee33a23",
      "parents": [
        "759f780af0b838316556de69049fb892f7b11ed5"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Aug 21 13:19:12 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Aug 21 13:59:46 2014 -0700"
      },
      "message": "AAPT: mipmaps should not end up in Splits\n\nMipmaps are never filtered, and so they will always\nend up in the base APK. Make sure they get omitted from\nany split.\n\nChange-Id: Id24b082bc9bd2d3f031a58bd0de4d30b4f0de7e0\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": "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": "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": "a01a9374fd386f3a8773528d7a49bc5315492dff",
      "tree": "30857703034ba4ae65c917cac6a17c4a15c347c3",
      "parents": [
        "40436a20c666c99287379838e737cc69ee10fd10"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 20 18:04:57 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 20 18:14:48 2014 -0700"
      },
      "message": "Reduce warning verbosity in aapt\n\n- Attributed source of problems to the correct file.\n- Only verify string localizations against valid\n  locales.\nBug:13140015\nChange-Id: I9dabc5efa0510649caee8af0c8ebb803d6f48269\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": "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": "6c997a9e880e08c354ffd809bd62df9e25e9c4d4",
      "tree": "593504e8a7d67bf57e0799daff1e8eb9e4797857",
      "parents": [
        "2247e3f0dc00762b44ef6adcbb2a91c8bbc1be58"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jan 31 11:27:43 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jan 31 15:41:30 2012 -0800"
      },
      "message": "aapt now sorts the strings in the resource string pool.\n\nIn our current environment with very many translations, this can\nsave a lot of RAM -- for example over 200K in Gmail just by sorting\nthe strings in the Gmail .apk (not the framework).\n\nAlso add a new aapt command to print the contents of the resource\ntable string pool.\n\nChange-Id: I1da037b3e2c377b890833ff57ab158965314ac48\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": "914f7e683a01f15f8830810c49eaecc31bc554a6",
      "tree": "702278393601f3f27b0ec0213246c8ea3bf70d09",
      "parents": [
        "006e6ef2e6349f5b3f9ef27c81750f007f56c69a"
      ],
      "author": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Tue Sep 27 16:09:41 2011 -0700"
      },
      "committer": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Tue Sep 27 16:09:41 2011 -0700"
      },
      "message": "Don\u0027t lose product variant strings that also vary between locales.\n\nLocalized strings with product variants were not being included in the APK,\napparently because the check to ensure that a different variation of the\nstring had not already been included in the APK was matching the version\nof it from the default, untranslated configuration.\n\nNow check to make sure that the string not only exists but also exists in\nthe correct configuration.\n\nBug 5372711\n\nChange-Id: I52975570b75e0f11827dc6bcf1cb4a987d0541aa\n"
    },
    {
      "commit": "426431adcc220b6adfbe1d9530247f897e60fa36",
      "tree": "e9dd34ae5151de5bf9f57edb3055d0d228e1f006",
      "parents": [
        "1d3173c3dc93bb4f2efc5b059fec8e7577b3258a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 09 11:29:08 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 09 15:27:39 2011 -0700"
      },
      "message": "Enforce public resource restriction on bag parents.\n\nNeed to put some more styles in the SDK to avoid breaking apps.\n\nAlso, welcome Android 3.2.\n\nChange-Id: Ia31d07c9b1b91ad868d8630437fdc1b5ae24f37d\n"
    },
    {
      "commit": "7c71023b7f5aafac09bd2f0425fccb5fe2d22b27",
      "tree": "a3c86b0da5f22866d64c8d5ff61b6e0689a8453c",
      "parents": [
        "83d97c8c7ddff9374f876bef48758414a7775cb1"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Nov 22 22:28:37 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Nov 22 22:28:44 2010 -0800"
      },
      "message": "Add knowledge of mipmap to aapt\n\nNew mipmap drawable type that does not get filtered according to\nconfiguration. Useful for things that get built as part of the system.\n\nChange-Id: I556033d065e504079271dce79c23c90d3c387ce4\n"
    },
    {
      "commit": "774562275fa76681933a0105ed61c672892b23bd",
      "tree": "63f8d23f18ce2eea22637feb63c6c340273bd6ab",
      "parents": [
        "a8fbe1fb74d3bd40b73c90c85ac25e5176475ca5"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Mar 10 11:38:05 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Mar 10 11:38:05 2010 -0800"
      },
      "message": "Revert \"Dedupe resource config pointers\"\n\nThis reverts commit 7b467d8b44c00d14590c021928b6a9ad5a36348e.\n"
    },
    {
      "commit": "7b467d8b44c00d14590c021928b6a9ad5a36348e",
      "tree": "35a46a47d27f92d94e0bb7c4ecfc1ab2bd90a928",
      "parents": [
        "4aaf256e95de9d09936b37a6c44e1200e751324e"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Mar 09 16:55:23 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Mar 09 20:56:41 2010 -0800"
      },
      "message": "Dedupe resource config pointers\n\nWhen there are two configs in a StringPool that would match a string ID\nonly keep the more generic entry to save some space. This means that if\nyou have both \"es\" and \"es_US\" translations that have the same\ntranslation, the string entry would be removed from the \"es_US\" config.\n\nChange-Id: I4d619942d35ddb477e2eabe4437b7f02697c24de\n"
    },
    {
      "commit": "cf244ada58539ce857ec041d7288d0271204fbb6",
      "tree": "ec16084d19a3b0c0e43e11dd276fbe7c6a6813c5",
      "parents": [
        "ae58f6d7473c67d76b6c6373794fd1a77543ddb4"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 09 15:00:30 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 09 17:18:05 2010 -0800"
      },
      "message": "Add ability for some manifest attributes to reference resources.\n\nThis loosens our restriction on many manifest attributes requiring\nliteral string values, to allow various ones to use values from\nresources.  This is only allowed if the resource value does not change\nfrom configuration changes, and the restriction is still in place\nfor attributes that are core to security (requesting permissions) or\nmarket operation (used libraries and features etc).\n\nChange-Id: I4da02f6a5196cb6a7dbcff9ac25403904c42c2c8\n"
    },
    {
      "commit": "99080c7d9ad9e5ccfec70dd10e4c24468a960c45",
      "tree": "5ebcc1e38b01a53bb07617bd1b151d1c8fa5f1b5",
      "parents": [
        "732ebb1bc3d7760fd424b84e0235ea9946100102"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Feb 04 18:45:31 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Feb 04 18:53:14 2010 -0800"
      },
      "message": "Add --auto-add-overlay option to aapt.\n\nThis option allows resources only present in overlays to be\nadded automatically instead of being declared through \u003cadd-resource\u003e\n\nChange-Id: Iff782311056f6a045193e57d204f7d3413e11b26\n"
    },
    {
      "commit": "19138468caf7050d482dc15f35a344eab11bb756",
      "tree": "ea1f96c5bcab356355ab05d315abfa66a7f888c4",
      "parents": [
        "6be01bf207077ffbdcd3879250171a26ec805835"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Dec 04 09:38:48 2009 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Dec 07 15:14:15 2009 -0800"
      },
      "message": "Optional use of UTF-8 strings in resource bundles\n\nAllows the use of UTF-8 for packing resources instead of the\ndefault of UTF-16 for Java. When strings are extracted from the\nResStringPool, they are converted to UTF-16 and the result is\ncached for subsequent calls.\n\nWhen using aapt to package, add in the \"-8\" switch to pack the\nresources using UTF-8. This will result in the value, key, and\ntype strings as well as the compiled XML string values taking\nsignificantly less space in the final application package in\nmost scenarios.\n\nChange-Id: I129483f8b3d3b1c5869dced05cb525e494a6c83a\n"
    },
    {
      "commit": "58c27a0a03f573791935116fa35f6a7c8bf93896",
      "tree": "edece19830db9d14352390f5ea6e36cc6d8ccc17",
      "parents": [
        "364277866f6433560dc0a32047884a954605785b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 13 13:36:00 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 13 13:36:00 2009 -0700"
      },
      "message": "Allow overlays to add resources.\n"
    },
    {
      "commit": "f878e2d80c3a0afefe3b018d232df6066379e1d5",
      "tree": "7a5ad87b37729db613202666cea37e525dbd53a3",
      "parents": [
        "1e3d1b4b83452286b000b8cd1997e5aef97fe2a7"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "robdroid@android.com",
        "time": "Tue Jun 09 09:14:20 2009 -0700"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "robdroid@android.com",
        "time": "Tue Jun 09 16:23:35 2009 -0700"
      },
      "message": "Make aapt Error out when an overlay adds a string.\n\nFinal added check (I think) for 1585775 - not letting overlays add\nresources.\n\n\tmodified:   ResourceTable.cpp\n\tmodified:   ResourceTable.h\n"
    },
    {
      "commit": "1aa8170e6a448afad86e5d62927d3b8ca4cd9707",
      "tree": "911e494fa0ab405fa8c5cb4271f8a0907a583d24",
      "parents": [
        "5d16ac5eb6c4a468cabc39bdd00eac1759993db5"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "robdroid@android.com",
        "time": "Fri Jun 05 15:59:15 2009 -0700"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "robdroid@android.com",
        "time": "Fri Jun 05 16:09:24 2009 -0700"
      },
      "message": "Add per-named-item overlay ability in res xml.\n\nFixes 1899451.\nAlso errors out if you add a bag via an overlay (which would renumber\nresources).  Note that you can still add elements within the bag as they are\nnot issued resource IDs.  So for example you can now modify the framework\nthemes.xml file without copying the entire file.\n\nAll bag types are now modifable except non-named bag types (how would you\naddress which element to replace?):\n    array\n    string_array\n    integer_array\n"
    },
    {
      "commit": "a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3d",
      "tree": "75e0804e6628f9bb818c5f6f918315640c721d4b",
      "parents": [
        "ba2a3a1b32e242eea4e97c927d886e8987fde3d4"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed May 13 15:06:13 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 15 18:02:47 2009 -0700"
      },
      "message": "Implement compatibility support for WRITE_SDCARD permission.\n\nNow old applications will automatically be granted it.  Also renamed it from\nSDCARD_WRITE to WRITE_SDCARD to be consistent with our other permissions,\nand re-arranged how we do targetSdkVersion to actually be usuable for this\nkind of stuff.\n\nNote that right now this results in basically all apps being given the\nWRITE_SDCARD permission, because their targetSdkVersion is not set.  I will\nbe dealing with that in a future change.\n"
    },
    {
      "commit": "4b4f4a908895bc0ba63f929bfdc02eec22c0f6e5",
      "tree": "27ad907b6d1999c14bf04f4d2adb3c2b8ff85e90",
      "parents": [
        "2a3ce2825182aab7c6e555f69b77e2c3d42bd660"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "",
        "time": "Thu Apr 02 16:55:50 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Apr 02 16:55:50 2009 -0700"
      },
      "message": "AI 144342: Fix bag (string-array,etc) behavior with overlays.\n  We used to replace elements in the default with elements from\n  the overlay.  This change causes us to empty the array first\n  so if the overlay array is smaller we don\u0027t end up with elements\n  from the default array showing through at the end of the array.\n  Ex: [A,B,C] and overlay [D] should give [D] but used to give\n  [D,B,C].\n  BUG\u003d1754390\n\nAutomated import of CL 144342\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"
    }
  ]
}
