)]}'
{
  "log": [
    {
      "commit": "8049f3da712ea9c3154b57ce2276c97e749d1f2c",
      "tree": "cd4b22971ad876eb8421a7a5870da9e49d62c9f1",
      "parents": [
        "881a623e3522e3e4f0905b606ca5c77cf899b21c"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 31 18:28:14 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 31 18:30:20 2017 -0700"
      },
      "message": "AAPT2: Fix pseudolocalization (again)\n\nPseudolocalization didn\u0027t properly handle spans in\nstrings like \"\u003csmall\u003e\u003csmall\u003eHello\u003c/small\u003e\u003c/small\u003e\".\n\nThe spans would be identical and when doing range checks\nonly one of them would be updated.\n\nSwitched to a more robust way of extracting the relevant\nchunks of a styled string. This uses a stack, which is more\nin line with the real representation in XML.\n\nBug: 34088357\nTest: make aapt2_tests\nChange-Id: Ia4e4501713e688c96a89e26e4e2b1384f4cd3889\n"
    },
    {
      "commit": "ceb9b2f80f853059233cdd29057f39a5960a74ae",
      "tree": "9093e8537319a97d8a2cbd8d4f0042c81de5ff8e",
      "parents": [
        "f9bd2944694539f1dce74d420156cc50bbb4af14"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Feb 16 12:05:42 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 22 11:16:13 2017 -0800"
      },
      "message": "AAPT2: Shared library support\n\nTest: make aapt2_tests\nChange-Id: I98dddf1367e6c0ac425bb20be46e6ff05f4f2f45\n"
    },
    {
      "commit": "7542162cb1b1fd2ce8a26dd7f3fedc8de8160d38",
      "tree": "0358684e3551d67eb93cb80ae81ef391ba1a9091",
      "parents": [
        "c270de85cc0c398d9ce165592908d2740219a708"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jan 06 15:20:04 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 08 06:23:45 2017 -0800"
      },
      "message": "AAPT2: Fix pseudolocalization to respect \u003cxliff:g\u003e\n\nThe XLIFF \u0027g\u0027 tag specifies content that should NOT be translated.\nAAPT2\u0027s pseudolocalization process should respect it.\n\nBug:34064599\nTest: make libandroidfw_tests\nChange-Id: Ice437d7f0ff246730ee04896fd035e2d846148fb\n"
    },
    {
      "commit": "86d67df8d57b9537666f9b54a9ca563779a2288b",
      "tree": "d7498429238104f724b28ff68a84e7deeebef8af",
      "parents": [
        "a9285db08883dbbe7b5eb9276cb52b7e01b42aa3"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 31 13:47:27 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 01 15:28:23 2017 -0800"
      },
      "message": "AAPT2: Support CtsContentTestCases build\n\n- Add \u003cfeature-group\u003e to ManifestFixer.\n- Support \u003cmeta-data\u003e in \u003cinstrumentation\u003e\n- Add support for \u003cbag\u003e and type\u003d\"configVarying\". Some CTS tests use this\n  old notation, we need to support it (even though configVarying isn\u0027t\n  anything supported by the framework convention).\n\nChange-Id: I6946fa633ce513ea8437c1496db883cf27dcf6de\nTest: make aapt2_tests\n"
    },
    {
      "commit": "d5083f6f6b9bc76bbe64052bcec639eee752a321",
      "tree": "29b5dfb74c7e9b12164ced408315b0ad8d5cf527",
      "parents": [
        "04e7b6c6de620406348142ba9dd65bad094e264b"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 16 15:07:21 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 17 18:55:51 2017 -0800"
      },
      "message": "Move StringPiece to libandroidfw\n\nlibandroidfw needs to make use of StringPiece, so\nmove it to libandroidfw and update all code referencing\nStringPiece in aapt2.\n\nTest: make libandroidfw_tests libaapt2_tests\nChange-Id: I68d7f0fc7c651b048d9d1f5e7971f10ef5349fa1\n"
    },
    {
      "commit": "ce5e56e243d262a9b65459c3bd0bb9eaadd40628",
      "tree": "cf0ecea98883d090d8d2856fc6d32046c7e3d9e8",
      "parents": [
        "0f7cc4dc2c49a30c072cbc7aa6c0c5d5c31496d4"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 21 17:56:45 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Oct 26 19:30:23 2016 -0700"
      },
      "message": "AAPT2: Rename to match new style\n\nUse Google3 naming style to match new\nprojects\u0027 and open source google projects\u0027 style.\n\nPreferred to do this in a massive CL so as to avoid\nstyle inconsistencies that plague legacy code bases.\nThis is a relatively NEW code base, may as well keep\nit up to date.\n\nTest: name/style refactor - existing tests pass\nChange-Id: Ie80ecb78d46ec53efdfca2336bb57d96cbb7fb87\n"
    },
    {
      "commit": "b54ef10f55ab9f11fdc73b0436b708e518fb5029",
      "tree": "52b1225899d166dd1f65a576bdf7fcc6796f0224",
      "parents": [
        "011cef54ee0a8260f6b4381c7ea28a450cd3cbce"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 21 13:38:42 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 21 13:51:59 2016 -0700"
      },
      "message": "AAPT2: Ensure string pool ordering is compact\n\nKeep styledstrings at the beginning of the StringPool\nto reduce the padding in the StyledString array.\n\nBug:32336940\nTest: manual\nChange-Id: Iec820c21a54daac40ecc3b2f87517a0f1efc9d3d\n"
    },
    {
      "commit": "cacb28f2d60858106e2819cc7d95a65e8bda890b",
      "tree": "c8ac4af72b0a9599983567029e5680c40f9883a3",
      "parents": [
        "733f0bc08ea0c93d095016a791c2914658d0cdde"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Oct 19 12:18:14 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Oct 19 12:18:14 2016 -0700"
      },
      "message": "Use Google3 style guide with .clang-format\n\nTest: style change only, builds ok\nChange-Id: I885180e24cb2e7b58cfb4967c3bcb40058ce4078\n"
    },
    {
      "commit": "8c3f31f022f7e094fd227ef0c2987e0846cb3e43",
      "tree": "d9550e3643a3eea0d0e323d3234edb52274a96fc",
      "parents": [
        "43321e02bc3553bdd7ea5f2af823080414d59b54"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Sep 07 13:45:13 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Sep 07 13:45:13 2016 -0700"
      },
      "message": "AAPT2: Fix issue with styled string indices\n\nStyled strings use spans to denote which part\nis styled (\u003cb\u003e, \u003ci\u003e, etc). Spans are simply a range\nof indices into the original string.\n\nIn Java, we use String and its internal representation, meaning\nwe must encode the indices using UTF16 lengths.\n\nWhen the internal AAPT2 representation of strings switched to UTF8,\nthe indices also began to index into the UTF8 string.\n\nThis change reverts the indices to use UTF16 lengths.\n\nBug:31170115\nChange-Id: I07b8b5b67d2542c7e0a855b601cdbd3ac4ebffb0\n"
    },
    {
      "commit": "5eeaaddffd23d8d85aeb321e3ceea626e42cf9de",
      "tree": "dcd102c0f14825c34c2251427db84e48cb11d8a7",
      "parents": [
        "79758c8e7706f3cce265a881cc66df8771d3c456"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Aug 25 12:26:56 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Aug 31 18:32:34 2016 -0700"
      },
      "message": "AAPT2: Add Inline Complex XML support\n\nSee: https://developer.android.com/guide/topics/resources/complex-xml-resources.html\n\nChange-Id: I8274c85e25cabf90423141c228697e873167d136\n"
    },
    {
      "commit": "36c73a595910e96f3552f938eeb81d46356067a1",
      "tree": "69632325f13ba59c48c9951b35abc3ef6e7ceda3",
      "parents": [
        "534376f3e9e302946d6f5aae883748107d466c50"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Aug 11 13:39:24 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Aug 15 12:14:26 2016 -0700"
      },
      "message": "AAPT2: Expose split support to command line\n\nBug:30445078\nChange-Id: If4b8530dba71b9059b8e62c04757da99c1119d22\n"
    },
    {
      "commit": "bf0bd0f9ac1ffa0231cff0f6591dede48b3c6d52",
      "tree": "fa0def8a1f754872ce6b912e30b7badc6470e208",
      "parents": [
        "ef556916aa75ae5e992b7c92345dc1011899a660"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jun 01 15:31:50 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jul 25 16:02:18 2016 -0700"
      },
      "message": "AAPT2: Add support to specify stable IDs\n\nThe --stable-ids flag allows the user to specify a file containing\na list of resource name and resource ID pairs in the form of:\n\npackage:type/name \u003d 0xPPTTEEEE\n\nThis assigns the given resource the specified ID. It helps ensure\nthat when adding or removing resources, IDs are assigned in a stable\nfashion.\n\nIf a package, type, or name is not found, no error or warning is\nraised.\n\nChange-Id: Ibc2f4e05cc924be255fedd862d835cb5b18d7584\n"
    },
    {
      "commit": "d0f116b619feede0cfdb647157ce5ab4d50a1c46",
      "tree": "5b2a8663602ba2b267890ff85d3cf5618ac922b5",
      "parents": [
        "aaac91f4a00a9968ef107ea143e6f2f669f762f1"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jul 08 15:00:32 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jul 13 17:45:28 2016 -0700"
      },
      "message": "AAPT2: Remove usage of u16string\n\nFor legacy reasons, we kept around the use of UTF-16 internally\nin AAPT2. We don\u0027t need this and this CL removes all instances of\nstd::u16string and StringPiece16. The only places still needed\nare when interacting with the ResTable APIs that only operate in\nUTF16.\n\nChange-Id: I492475b84bb9014fa13bf992cff447ee7a5fe588\n"
    },
    {
      "commit": "458b877488c12ea4336d8fc00a95d9c0298bd6d0",
      "tree": "6169f78510254f6bde737279763049f00eaef200",
      "parents": [
        "832449800e2e5068ab0eb986bb359906ddf6efdc"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Apr 25 14:20:21 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Sat Apr 30 01:36:12 2016 +0000"
      },
      "message": "AAPT2: Add diff command\n\nAdds the diff command and various small fixes to issues\ndiscovered when diffing old AAPT built APKs with new AAPT2\nbuilt APKS.\n\nBug:22775504\nChange-Id: I682a7fe1cf4b3efa7cbd5d18b333cf2d1046fe1b\n"
    },
    {
      "commit": "7656554f91b40bc93bf94c89afcad4a9a8ced884",
      "tree": "76a275c869513d419dc85ee2b7f946688043e3d9",
      "parents": [
        "5b37ef489a4090da3643041c8d0e6efa282ad8b6"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 10 21:55:04 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 11 00:22:52 2016 -0800"
      },
      "message": "AAPT2: Add descriptions of Attributes in Styleables for R.java\n\nChange-Id: I69e7b73cbdfe4baf502348397435c501ae29ff5e\n"
    },
    {
      "commit": "e4bb9eb5af5b0899dc0921d5580220b20e15bd5a",
      "tree": "d522014811735f3bdba1f916d83dc699189a14b9",
      "parents": [
        "59e04c6f92da584b322c87072f18e6cab4de4c60"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 12 22:18:51 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 12 22:21:48 2016 -0800"
      },
      "message": "AAPT2: Introduce notion of \u0027product\u0027 to ResourceTable\n\nThis allows us to preserve the various product definitions during the compile\nphase, and allows us to select the product in the link phase.\n\nThis allows compiled files to remain product-independent, so that they do not need\nto be recompiled when switching targets.\n\nBug:25958912\nChange-Id: Iaa7eed25c834b67a39cdc9be43613e8b5ab6cdd7\n"
    },
    {
      "commit": "52364f7ae31716d7827ea8f8566f4a28bd30a921",
      "tree": "ce146fb6dc5e9f9b1166964b77273b6481f8258b",
      "parents": [
        "d901155166983adde84d9da2a6b265371191068a"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 11 13:10:24 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jan 13 18:48:24 2016 -0800"
      },
      "message": "AAPT2: Variety of small fixes to get the build working\n\n- Add option to rename package in AndroidManifest.xml\n- Support default versionName and versionCode\n- Accept True and False as valid booleans\n\nChange-Id: I400e350b9dcd0fd1c197d1929144299c7823617d\n"
    },
    {
      "commit": "979ccb2e6f3f1f7f00a448eb440a85daf033dc9e",
      "tree": "fd2e294460c4832e1a450ed333b80a545cfdfc7e",
      "parents": [
        "e5b386d2bbfa0fdf6439850191a24dfc17ee50c3"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 11 10:42:19 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 11 10:42:19 2016 -0800"
      },
      "message": "AAPT2: Warn when positional arguments exist and --legacy is on\n\nThis is normally an error, but old AAPT didn\u0027t check for it correctly,\nso many projects violate this. With --legacy, this becomes a warning.\n\nChange-Id: I23647e029930e11b719591cd38609e1b43247e20\n"
    },
    {
      "commit": "7751afc796842bbb24bfbb19bd0fee4a7b7c8a4e",
      "tree": "fad12506e9f244038a186dd8dbe31e87f6bafafe",
      "parents": [
        "198ce1a5e6fbe2cb84263e427032e9715e27379f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jan 06 15:45:28 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jan 06 16:18:40 2016 -0800"
      },
      "message": "AAPT2: Fix product support\n\nPreviously the default product wasn\u0027t tried if \u0027default\u0027 wasn\u0027t specified on the command line.\nAlso adds support for multiple products.\n\nChange-Id: I1e4872b34bb8d609b6444841a4e7e4dbb3bbb76b\n"
    },
    {
      "commit": "393b5f0d6130d3848dd82075986a5cf40c09ce44",
      "tree": "5643311ac74ad383b2efa37fee2f3d21878cf6d8",
      "parents": [
        "24b8ff0faf7c59323d0171cdd825ca09e712aa1e"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Dec 17 13:03:11 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jan 06 12:05:41 2016 -0800"
      },
      "message": "AAPT2: Port AAPT pseudolocalization to AAPT2\n\nPseudolocalization happens at the compile phase. Pseudolocalized\nvalues are weak, such that manually specified values will take precedence.\n\nChange-Id: I5e064ce0d270c9f4f9022f75aecedab9d45bc980\n"
    },
    {
      "commit": "7ff3ee19f4b831a526baf4b928d1ac172d070d82",
      "tree": "6b80cd676d4d9d3e98f4382090011834be106228",
      "parents": [
        "36a832dd128c18628783cc629b89b2ae399db4f8"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Dec 14 16:08:50 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Dec 17 11:01:55 2015 -0800"
      },
      "message": "AAPT2: Respect format attribute of \u003citem\u003e tag\n\nAn \u003citem\u003e is a general tag that can override certain behavior. For\ninstance, this is allowed:\n\n    \u003citem name\u003d\"foo\" type\u003d\"integer\" format\u003d\"float\"\u003e0.4\u003c/item\u003e\n\nEven though without the format attribute, this would be illegal.\n\nChange-Id: I8133ce59e14719a70d7476a1464c3f564c435289\n"
    },
    {
      "commit": "a6fe345be955368a13aea76aefb4db821aad11df",
      "tree": "c5385f798a6e1fb674f6f13c0f323726258618ca",
      "parents": [
        "01655232371d7c7ea5b58ccf66ad99917072018a"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Dec 09 15:20:52 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Dec 10 16:24:15 2015 -0800"
      },
      "message": "AAPT2: Fix overlay support\n\nSupports the \u003cadd-resource\u003e tag and mimics old AAPT behavior of\nnot allowing new resources defined unless \u003cadd-resource\u003e was used\nor --auto-add-overlay was specified.\n\nChange-Id: I9b461137357617ade37fd7045b418b8e6450b9c4\n"
    },
    {
      "commit": "28cacf091ad2b1c2749e77f590e9523e58735252",
      "tree": "6ff85383ec5688074e54fb5fcd4df6c75694b038",
      "parents": [
        "a587065721053ad54e34f484868142407d59512d"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 23 14:22:47 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 23 14:22:47 2015 -0800"
      },
      "message": "AAPT2: Record source/comments for compound values\u0027 children\n\nValues like styles or arrays have children which need to have\ntheir source and comments preserved.\n\nChange-Id: I6fc713ba36627e6d66c7930b4080cc1403bac207\n"
    },
    {
      "commit": "a587065721053ad54e34f484868142407d59512d",
      "tree": "57efbb55d03b5e68610802da8e469d5d48a29078",
      "parents": [
        "78de1bcbbdad03d893d0b1df5372732cf6d0d934"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 20 15:32:30 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 23 12:01:15 2015 -0800"
      },
      "message": "AAPT2: Verify min/max attr fields\n\nIntegers are now checked to see if they fall in the range\nof min/max for the attribute they are assigned.\n\nChange-Id: I42c435b15fd3f0bd23691c83efccce4ad5973276\n"
    },
    {
      "commit": "467f171315f9c2037fcd3eb5edcfabc40671bf7b",
      "tree": "3b14762e3d9e42a660479d0d5722883b391f835b",
      "parents": [
        "abf83cbe4f63cd76043aab89cd0e08525560fea2"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 16 17:35:44 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 19 14:46:53 2015 -0800"
      },
      "message": "AAPT2: Fail compiling when private symbols are referenced\n\nAlso moved some XML specific stuff into its own directory,\nand refactored ReferenceLinker a bit.\n\nChange-Id: I912247a82023c1bbf72dc191fbdaf62858cbec0c\n"
    },
    {
      "commit": "abf83cbe4f63cd76043aab89cd0e08525560fea2",
      "tree": "1fbe581590f001d5af1c63ae8126aad1e9ea6d77",
      "parents": [
        "cf95a580149ec03588b1c75f036c924730f83615"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 16 15:59:10 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 16 15:59:10 2015 -0800"
      },
      "message": "AAPT2: Prevent duplicate enums/flags\n\nChange-Id: I998cba12ac194000e9c778cb620ed7ab33003e7d\n"
    },
    {
      "commit": "fa10505ceaf9d4c41b76bb1b32f257926e96e441",
      "tree": "2976196a52ac3a06e16e2f36afd36092bde536ea",
      "parents": [
        "83f2255f69729e0e97539e96e5e6161843e85823"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Sat Nov 07 13:34:39 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Sat Nov 07 13:34:39 2015 -0800"
      },
      "message": "AAPT2: Accept aliases defined for external resource types\n\nResource types that are typically stored outside of the resource table\n(like layout, xml, drawable) can only have aliases (reference to another\nresource).\n\nChange-Id: Idb768801f02bb142e5be5e438904f221499bd756\n"
    },
    {
      "commit": "27afb9e8894b512b21fcca6ce142f40f1ee16cbb",
      "tree": "a3980c54d8f44831bc342738cfaff1373f223a62",
      "parents": [
        "b274e35abfbbd09e0fce983a215c11522c56cce2"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 06 18:25:04 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 06 18:25:04 2015 -0800"
      },
      "message": "AAPT2: Add support for clearer in-progress public attributes\n\nBefore, the ID assigned to a public resource without an explicitly set id\nwas more difficult to figure out. It would be the next available ID.\n\nAAPT2 introduces a new way to specify public attributes in progress.\n\n\u003cpublic-group type\u003d\"attr\" first-id\u003d\"0x0101047f\"\u003e\n  \u003cpublic name\u003d\"foo\" /\u003e\n  \u003cpublic name\u003d\"bar\" /\u003e\n  ...\n\u003c/public-group\u003e\n\nThe IDs assigned to each resource is auto-incremented starting from `first-id`.\nThis also keeps resource\u0027s with the same type grouped together so that\nthe auto-incrementing nature is evident.\n\nAlso, due to how AAPT2 was implemented, this is required :P\n\nChange-Id: I95ea92ad0405e87ed0b1766879bb2f1d9d0b636e\n"
    },
    {
      "commit": "b274e35abfbbd09e0fce983a215c11522c56cce2",
      "tree": "a30ba5aac504bbdfde8ac6931cb8471a46f6e284",
      "parents": [
        "557b64abad9915f92a9d35c748766e873f3a29fd"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 06 15:14:35 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 06 16:37:57 2015 -0800"
      },
      "message": "AAPT2: Fix inclusion of comments in R.java javadoc\n\nComments weren\u0027t being copied when merged from the various\nresource tables.\n\nAlso refactored the JavaClassGenerator to omit a class\nif no entries exist for it.\n\nChange-Id: I6eaa89b7b3715bc05403635a2baf0d1db3efd142\n"
    },
    {
      "commit": "9f22204c3a9ddac4f92573c9ab098e6cf3ed1cb4",
      "tree": "7146efe6062b17d4a5fb63230ac3e8d64b1f2e17",
      "parents": [
        "08322c2152131979a846d399ca6b9bebdbdc0355"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Nov 04 13:51:45 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 05 10:56:32 2015 -0800"
      },
      "message": "AAPT2: Fix small issue with detecting translatable resources\n\nChange-Id: Idd21b5de4d20be06c6f8c8eb5a22ccd68afc4927\n"
    },
    {
      "commit": "b23f1e077b02a1d62bcf5e34655e8dc979e124fa",
      "tree": "854c4a7afe2e62e9ead4a10ce17422e3923a1502",
      "parents": [
        "2ae4a877d1623f851040ce69239552c873f1abf0"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Nov 03 12:24:17 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Nov 03 12:58:12 2015 -0800"
      },
      "message": "AAPT2: Verify positional Java String format arguments in strings\n\nChange-Id: Id415969035a0d5712857c0e11e140155566a960c\n"
    },
    {
      "commit": "ca5638fd85098c3d0a699492751043545f75553a",
      "tree": "9ede79caee33fc201b2d5a2da994a77fa25a7c2c",
      "parents": [
        "030cfd3da697d51bf1bffd076881c12acedd851e"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Oct 21 14:42:43 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 30 13:51:11 2015 -0700"
      },
      "message": "AAPT2: Support generating Manifest.java\n\nThis includes comments from AndroidManifest.xml.\n\nChange-Id: I412d9ecb12bad20a49a683d6b3bea4a0be1235ae\n"
    },
    {
      "commit": "e78fd617ec60139a973a01925fa7adad31febb39",
      "tree": "b64f9590b16dfb2e6e9ea8bf2eb5d54a02230b0a",
      "parents": [
        "3b7acbb86207df78eccfeb40aabcc8543703a58f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Oct 22 12:48:43 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Oct 22 16:35:47 2015 -0700"
      },
      "message": "AAPT2: Move comments and source into Value\n\nValues are closely related to where they were defined, so\nthis information should live inside the Value.\n\nThis also enables comments to be attached to nested Values.\n\nChange-Id: Ic7481b5a5f26d0ef248d638e2e29252f88154581\n"
    },
    {
      "commit": "9e10ac70155c993e7053323ad36beaea7bf7d54f",
      "tree": "6d5ba83f2ff0e6ff0a0ac1fede1154902b3f14ab",
      "parents": [
        "5359893effd12bac156505e1ad3a77a30d27cc0a"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 16 14:37:48 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Oct 22 12:52:49 2015 -0700"
      },
      "message": "AAPT2: Process \u003cjava-symbols\u003e and private symbol package\n\nNeed to introduce the idea of multiple levels of visibility to support \u003cjava-symbol\u003e.\n\nPublic, Private, Undefined.\n\nPublic means it is accessible from outside and requires an ID assigned.\nPrivate means that we explicitly want this to be a symbol (show up in R.java), but not visible\nto other packages. No ID required.\n\nUndefined is any normal resource. When --private-symbols is specified in the link phase,\nthese resources will not show up in R.java.\n\nChange-Id: Icba89221e08e685dee7683786aa7112baf28c856\n"
    },
    {
      "commit": "9ba47d813075fcb05c5e1532c137c93b394631cb",
      "tree": "1eb9f7adc315ab8ad640249f8ac1888951520f3f",
      "parents": [
        "072c5bdff77e354bdf333c0c1d460cdd1c2e76ae"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Oct 13 11:37:10 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 16 15:50:58 2015 -0700"
      },
      "message": "Filter products during compile phase\n\nUnfortunately there is no good way to deal with products in the link phase.\nProducts are like preprocessor defines in that they are processed early\nand change the composition of the compiled unit.\n\nChange-Id: I6d5e15ef60d29df8e83e059ba857c09333993779\n"
    },
    {
      "commit": "1ab598f46c3ff520a67f9d80194847741f3467ab",
      "tree": "4846790211599fdd7a9bb35ec94df4a6ec4839d6",
      "parents": [
        "547c346bb34878b691fd53e54aa3a88efcc5dc6f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Aug 14 14:26:04 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 16 12:13:08 2015 -0700"
      },
      "message": "AAPT2: Separate out the various steps\n\nAn early refactor. Some ideas became clearer as\ndevelopment continued. Now the various phases are much\nclearer and more easily reusable.\n\nAlso added a ton of tests!\n\nChange-Id: Ic8f0a70c8222370352e63533b329c40457c0903e\n"
    },
    {
      "commit": "dfa5e0705ff82f15e228ba076bc192893bcbe118",
      "tree": "10dbca8e4feeefc96019fcab8fa08c7943b8c97e",
      "parents": [
        "d13fb249865703901b77f48c5fed1864f06e1c63"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue May 12 21:42:59 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue May 12 21:56:43 2015 -0700"
      },
      "message": "AAPT2: Fix issue where @null was wrongly encoded\n\n@null must be encoded as TYPE_REFERENCE with a value of\n0. TYPE_NULL is used by the runtime as a placeholder when resolving\nstyle attributes. If we set a style attribute to TYPE_NULL,\nthe runtime will throw. The runtime will convert a TYPE_REFERENCE\nwith value 0 to a proper null value.\n\nChange-Id: Id983ca7e1fbee3124dddafe32f1b5741b824225b\n"
    },
    {
      "commit": "bdaa092a193d8ddccbd9ad8434be97878e6ded59",
      "tree": "04310ae0b932078409147cbfa8332d96e76555d1",
      "parents": [
        "330edcdf1316ed599fe0eb16a64330821fd92f18"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri May 08 20:16:23 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue May 12 20:41:31 2015 -0700"
      },
      "message": "AAPT2: inferred style parent processing\n\nChange-Id: I8fbc4feef16b6039cf4c526fcfb767dc75a9c131\n"
    },
    {
      "commit": "24aad163bc88cb10d2275385e9afc3de7f342d65",
      "tree": "361fc0b3fbef5f68a16f357ae9d2bed5e93efbf5",
      "parents": [
        "ab2581398c812917145088590bd18eb83f3a2ea6"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 24 19:19:30 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon May 04 16:43:24 2015 -0700"
      },
      "message": "Add namespace handling in attribute values\n\nPreviously, you could only reference namespace prefixes in attribute names:\n\n\u003cView xmlns:appcompat\u003d\"http://schemas.android.com/apk/res/android.support.v7.appcompat\"\n      appcompat:name\u003d\"hey\"\n      ...\n\nNow you can also reference them in resource names within an attribute value:\n\n      ...\n      android:text\u003d\"@appcompat:string/confirm\"\n      ...\n\nWhich will be treated as \"@android.support.v7.appcompat:string/confirm\".\n\nChange-Id: Ib076e867a990c80cf877a704eb77cd1ef0b23b52\n"
    },
    {
      "commit": "769de98f2dd41bfe39a1c9f76aefd1ad58942733",
      "tree": "3d79143b08f02dfb61158689f51e01eeb1bb371e",
      "parents": [
        "9310e4285b3fc951c3524d040726d1161015562c"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 10 19:43:55 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Apr 15 19:56:59 2015 -0700"
      },
      "message": "AAPT2: Add library support\n\nChange-Id: I307f56d9631784ab29ee4156d94886f9b2f25b30\n"
    },
    {
      "commit": "ca2fc353c2b07e24e297fdc8426c7abd601d908b",
      "tree": "2f9242af3558209ac265fb7d2d1164652f78d8de",
      "parents": [
        "7e3a19ac85d30abade971d8d0a948b4599d97c9e"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 03 12:08:26 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 03 12:33:02 2015 -0700"
      },
      "message": "Fix windows build of AAPT2\n\nChange-Id: Ib8e1a4322510b582e9600a08d3118842c9abc73c\n"
    },
    {
      "commit": "6f6ceb7e1456698b1f33e04536bfb3227f9fcfcb",
      "tree": "0a1f8e354c4714f162f849b09a5d5da757c6d5b8",
      "parents": [
        "041ca26d028ae314d416cb107721ea7267af6aca"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 14 14:48:12 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Apr 02 17:02:48 2015 -0700"
      },
      "message": "AAPT2\n\nFirst checking of AAPT2. The individual phases of AAPT2 work, but there\nare some missing pieces.\n\nFor early testing we are missing:\n- Need to properly mark file references and include them in package\n- Need to package into zip\n\nFinal AAPT for apps we are missing:\n- Need to crush PNGs\n- Need to parse 9-patches\n- Need to validate all of AndroidManifest.xml\n- Need to write align method to align resource tables for splits.\n\nFinal AAPT for apps + system we are missing:\n- Need to handle overlays\n- Need to store comments for R file\n- Need to handle --shared-lib (dynamic references too).\n\nNew AAPT features coming:\n- Need to import compiled libraries\n    - Name mangling\n    - R file generation for library code\n\nChange-Id: I95f8a63581b81a1f424ae6fb2c373c883b72c18d\n"
    }
  ]
}
