)]}'
{
  "log": [
    {
      "commit": "c51562cf5acda7849a34c4ae2a88077c068859c0",
      "tree": "4f9430be9631a1ccb6042781d2d265fb396796a5",
      "parents": [
        "6e685dc3c519526a0f38ec5ee9e81e1f57e0fa36"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Apr 28 11:12:38 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Apr 28 11:14:38 2016 -0700"
      },
      "message": "AAPT2: Accept a file with arguments when argument list is too long\n\nBug:22775504\nChange-Id: Ife73d4e4611016c9ee7b56264bc6a765c54beba3\n"
    },
    {
      "commit": "3524a23edb88f0e67352d55ac6a2919f1edf7b30",
      "tree": "273d57159996b7c91ce844585de2c52162ad54cf",
      "parents": [
        "c83ce39a8e22b2df75cdfcb09b032d0b2244a5ca"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 01 19:19:24 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Apr 04 12:42:05 2016 -0700"
      },
      "message": "AAPT2: Add option to add JavaDoc annotations to Java classes\n\nChange-Id: I7ee8c20cdd91380927a65c41097ffd3a6ffa2df5\n"
    },
    {
      "commit": "6cbfb1de493e42d937158ed57495c9656864ccba",
      "tree": "cfc5c985a647ba2282904b028e20409d45b43635",
      "parents": [
        "becc30196dbd6ebe68726c984a448c90fa6ef167"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 31 13:33:02 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 31 16:43:04 2016 -0700"
      },
      "message": "AAPT2: Change how we generate Java classes\n\nPreviously we would be writing out the Manifest.java file as we\nprocessed the AndroidManifest.xml. This would lead to empty\nManifest classes if there were no permissions or permission groups\ndefined in the AndroidManifest.xml.\n\nThis would pose problems for processes that checked for public classes\nand considered them part of the API (support lib).\n\nNow we collect the structure of the Java class in memory before deciding\nif a file should be created.\n\nChange-Id: I6b909f28d74356414c6ef5ad005180d6ea5e44ca\n"
    },
    {
      "commit": "330c57dbd19a064d1f5a4adb3c8ed014711b473f",
      "tree": "9a795b0dbeae55273f3f3f35d842574f51102c6d",
      "parents": [
        "607c0a0a09e6543609f70eb27cc06ff44857252e",
        "7656554f91b40bc93bf94c89afcad4a9a8ced884"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 11 09:16:43 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 11 09:16:44 2016 +0000"
      },
      "message": "Merge \"AAPT2: Add descriptions of Attributes in Styleables for R.java\" into nyc-dev"
    },
    {
      "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": "96917c25f09bb2f33e22f20cdfa4ece8f310b084",
      "tree": "3ceb11cdc8d6dfc3dd399a01e648bda0d91dea05",
      "parents": [
        "0dda14c671e7c19841f963b0bc665da055738437"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Mar 09 13:11:25 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Mar 09 13:23:12 2016 -0800"
      },
      "message": "AAPT2: Fix file::mkdirs when given absolute paths\n\nfile::mkdirs would try to extract the first part of the\npath \u0027/path\u0027 which would be the empty string \u0027\u0027. Mkdir would\nfail creating the empty string directory.\n\nChange-Id: Ice8ba92135f145f52f3663499a2c49eebe797328\n"
    },
    {
      "commit": "626a69f34536d01db0847df0051199beaecce060",
      "tree": "96f2c6b77d3db445c6e81de7b0ac416329416c73",
      "parents": [
        "f311b01b843434151d04e75c1b50f36447031278"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 03 10:09:26 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 04 17:02:42 2016 -0800"
      },
      "message": "AAPT2: Support --no-version-vectors\n\nChange-Id: I8029b2f9e2f7ab8e37a49565f95210f47a7be609\n"
    },
    {
      "commit": "64587af8179affd38ee26543b748f2d63b7f67bb",
      "tree": "bf4eb34ea2bc5ce357e23dc6ac0572d9366f7d8e",
      "parents": [
        "bd4b217a289edca382b63f2bf5d1dd2017e9cf2e"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Feb 18 18:33:06 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 04 14:39:01 2016 -0800"
      },
      "message": "AAPT2: Support building, linking, and merging static libraries\n\nAndroid static libraries are like APKs but they contain much more debugging\nand source information. We need to treat them differently in 3 ways:\n\n1) When building a static library, we skip things like ID assignment and\n   product/config stripping. Source information is emitted as well.\n2) When building a static library and linking against another\n   static library, we don\u0027t want to merge, we want to simply reference.\n3) When building an app that uses static libraries, we want to merge\n   the static library under the same package with or without mangling.\n\nBug:25958912\nChange-Id: I425e032857936a3e83173c1edc2a6cdc6020b842\n"
    },
    {
      "commit": "355f285ffd000f6cfe76680eb22d010546d124bb",
      "tree": "94d86559ba73ed2f482af1f296ef56374776a8f6",
      "parents": [
        "e4735a99598bf29847a9f12dd7fae6d7df880bc4"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Sat Feb 13 20:26:45 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 17 18:17:25 2016 -0800"
      },
      "message": "AAPT2: Implement density stripping and initial Split support\n\nWhen a preferred density is supplied, the closest matching densities\nwill be selected, the rest stripped from the APK.\n\nSplit support will be enabled in a later CL. Command line support is still\nneeded, but the foundation is ready.\n\nBug:25958912\nChange-Id: I56d599806b4ec4ffa24e17aad48d47130ca05c08\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": "59e04c6f92da584b322c87072f18e6cab4de4c60",
      "tree": "c08dd13ae57f9b6000441035201f226d532f8896",
      "parents": [
        "41466449aae2d304cf05680f5adbf44312d7a65e"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Feb 04 15:59:23 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 09 19:59:17 2016 +0000"
      },
      "message": "AAPT2: Switch to protobuf for intermediate format\n\nWithout needing to conform to the runtime data format,\nit is much easier to add new features such as debugging symbols\nand carrying over product data to link time.\n\nThis also simplifies the runtime format parser and serializer,\nwhich will change much less frequently than the protobuf intermediate\nformat.\n\nChange-Id: I209787bbf087db0a58a534cb8511c51d21133e00\n"
    },
    {
      "commit": "6a008170cb18666e04c42856f992fc7a0afa1e1f",
      "tree": "5998b2ccc5c4e4006f6b0ab5ed37b40f7502b9dd",
      "parents": [
        "e909d94e03e2bd3eba0bb47b6295ae0bf6538c31"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 02 17:02:58 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 02 17:02:58 2016 -0800"
      },
      "message": "AAPT2: Support -c configuration filtering\n\nChange-Id: I1e5855ca73440bdc30c21bcbc1dfdd31a9842363\n"
    },
    {
      "commit": "8900aa8b44f2dae3ee7b0f53422a4dbcb4fd2903",
      "tree": "5053e3a98e9f7dfa7c0561c5801799b6cdca8193",
      "parents": [
        "ac7c606c90bcf3bfea2b04f518680baf5549b9f5"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 25 22:48:15 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 25 22:48:15 2016 -0800"
      },
      "message": "AAPT2: Add -x and -z flags to minimize changes in build scripts\n\nThe -z flag will be supported soon anyway and -x is legacy.\n\nChange-Id: I710467d35066d267dea8dfe7c521737fc768ede9\n"
    },
    {
      "commit": "ef9c50120d1535b2133c74f969e74180d3011402",
      "tree": "ef711406aa808c6c40501698864d6ac904ae4227",
      "parents": [
        "6f0324315b3c92b3b307c258e1dcba7aac95ac92"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jan 22 14:09:53 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jan 22 14:09:53 2016 -0800"
      },
      "message": "AAPT2: Allow specifying non-final IDS when building \u0027legacy\u0027 style libraries\n\nReal libraries will be built correctly, but since we are not doing that\nyet, support the old way and allow a flag --non-final-ids to remove\nthe final modifier from R.java.\n\nChange-Id: Iad55fb9140e55dbb0f41d0d55f2e2bd958294c8e\n"
    },
    {
      "commit": "c446a733b82872ce25dcba2c4185f924aa766349",
      "tree": "060ddb989e6c6f41e7a0661e86e6aafec2e2d891",
      "parents": [
        "88f04309806ec9964235e02543c7e2dbd18d6b8a"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jan 21 11:04:46 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jan 21 11:04:46 2016 -0800"
      },
      "message": "AAPT2: Accept empty zip files\n\nThe libziparchive returns an error on empty zip files.\nWork around this by checking for that error condition and\nreturning an empty ZipFileCollection.\n\nChange-Id: I9edaf2e089456b6ccb4bb099b20ede10331bd352\n"
    },
    {
      "commit": "656a577a34bfbb68d4f1557bfdaa8c2f2b6f8723",
      "tree": "02a6e5aa8044eaec2fc0c025c9d312b5d9123848",
      "parents": [
        "44859db74bb1cc2341524c5484cc3e765ec42c42"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jan 14 15:17:41 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jan 14 15:17:41 2016 -0800"
      },
      "message": "AAPT2: Accept zip, jack, jar, and flata extensions as archives\n\nChange-Id: I3a4db129998e2351e8221f9d72a4b40d2c7a8cf9\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": "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": "a40e972fdaa68fc486ff90a319195515819068b2",
      "tree": "38b228d8517f63faf67bcb1a6710d2533788a6d6",
      "parents": [
        "1cffc196610891f6669c33404f3ff5b0232b7059"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Nov 24 19:11:46 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 30 11:14:01 2015 -0800"
      },
      "message": "AAPT2: Support compiling a res/ directory and output to zip\n\nThis allows us to compile an entire directory and output to a single\nfile. This is important to support generated resources in the make\nbuild, since we may not know what resources get generated.\n\nThe link step will accept the zip and read the contents of it as if they\nwere passed in on the command line.\n\nChange-Id: If1a51b0abe772350c24074353eb4989953c2e0cb\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": "fc9570e6b0a6304abe6e6c52613516e93cf9251f",
      "tree": "3c6d00a0e644bf5616cbaa1cdc3a494dda57caf2",
      "parents": [
        "2c23271c75f12d235687c2bb6270e35a9ddfe871"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 16 15:07:54 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 16 15:09:15 2015 -0800"
      },
      "message": "AAPT2: Fix a bug where files would only show up for one config\n\nThe set of files to build was only comparing resource name and\nnot configuration.\n\nAlso support --extra-packages as a colon separated list of packages.\n\nChange-Id: I36b65cd15299cdc722b785a7891a24ca1bc4fb45\n"
    },
    {
      "commit": "fb48d292d9eb78a73f9473d90911ecb81da5fffd",
      "tree": "28500d68602a58c597949269be31c64e9691a673",
      "parents": [
        "7fdc58866f4285ab27702c2fc311613a5b771747"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Sat Nov 07 15:52:13 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 12 14:26:29 2015 -0800"
      },
      "message": "AAPT2: Add support for overlays when merging resources\n\nChange-Id: Iea9e41123cf89e3cfba7eb6bea89def56dee8093\n"
    },
    {
      "commit": "83f2255f69729e0e97539e96e5e6161843e85823",
      "tree": "212ce1c375059cc7f1c373ea6110c011d088d954",
      "parents": [
        "27afb9e8894b512b21fcca6ce142f40f1ee16cbb"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Sat Nov 07 11:51:23 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Sat Nov 07 11:51:23 2015 -0800"
      },
      "message": "AAPT2: Disambiguate merging of resources\n\nMerging local app resources is slightly different than merging\nresources from a static library.\n\nLocal app resources may not have a package name set, but we do take interest in the\nID set for the package (should be 0x0 or match the ID of the app we\u0027re building).\n\nStatic library resources have an explicit package name defined for them, so we\nonly merge resources from that package.\n\nChange-Id: I95e559ae94cc1df6972e77a347b1b37a93674c4d\n"
    },
    {
      "commit": "2ae4a877d1623f851040ce69239552c873f1abf0",
      "tree": "b13fd89771d05c8f5471218695c9eff5ab287b23",
      "parents": [
        "3b4cd94034ff3e5567a2ba6da35d640ff61db4b9"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 02 16:10:55 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 02 16:56:34 2015 -0800"
      },
      "message": "AAPT2: Add Manifest fixing/validation\n\nChange-Id: I7f6d8b74d1c590adc356b4da55cb6cb777cdf1da\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"
    }
  ]
}
