)]}'
{
  "log": [
    {
      "commit": "24a464a9be413dfef1476fd1919e2008609de93a",
      "tree": "a4b6f646ae8088ccdb39023dd0b3058b307d3dac",
      "parents": [
        "2fea10559beacb6f47f0e6c7ad343153f86de8f0",
        "cc65b8dba6cc18faf7a47584ef3a3557ed8ce77b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 20 17:14:35 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 20 17:14:35 2018 +0000"
      },
      "message": "Merge \"Only keep necessary constructor for custom view nodes\""
    },
    {
      "commit": "41dcc4eac50c2c8ba51b5cd6677b1eac2ef1ce63",
      "tree": "b04b3c9c06d4e8803f8d6f4ea5db132108bcdd07",
      "parents": [
        "9c512f1c216e328de1da04a734d4eeba0db30db4",
        "98100c382890b1b935a17265bc6cb1be3bf69640"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 20 16:36:24 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 20 16:36:24 2018 +0000"
      },
      "message": "Merge \"Only keep methods with correct signature for more types\""
    },
    {
      "commit": "848585e1a41c52fb723d17fe5e9eb98956c614d6",
      "tree": "f053b51de3834bc85f89e0b189a0191cbf837ff1",
      "parents": [
        "bc458577c9e7f6a65aeccbe2c1a7a4d224ff399b",
        "23cc5d5dbecf34c205af40761ca762f3258f341f"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Jul 20 15:18:05 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 20 15:18:05 2018 +0000"
      },
      "message": "Merge \"AAPT2: Fix R.java for styleable in different package\""
    },
    {
      "commit": "cc65b8dba6cc18faf7a47584ef3a3557ed8ce77b",
      "tree": "93ee29d598e1114a9a6c2cf0bf09f0df9f666eaf",
      "parents": [
        "98100c382890b1b935a17265bc6cb1be3bf69640"
      ],
      "author": {
        "name": "Jake Wharton",
        "email": "jakew@google.com",
        "time": "Mon Jun 11 17:05:35 2018 -0400"
      },
      "committer": {
        "name": "Jake Wharton",
        "email": "jakew@google.com",
        "time": "Fri Jul 20 10:44:11 2018 -0400"
      },
      "message": "Only keep necessary constructor for custom view nodes\n\nThis expands the Context+AttributeSet constructor specificity from only work on \u003cview class\u003d\u003e nodes to \u003cmy.Type\u003e nodes.\n\nBug: 37123156\nTest: make aapt2_tests\nChange-Id: I8fb950731383f86bee225333bda27baf5a7a34c5\n"
    },
    {
      "commit": "98100c382890b1b935a17265bc6cb1be3bf69640",
      "tree": "39fc1c157fb7f2be242dfb1918e271ba90752783",
      "parents": [
        "55f098118c3b4be381d48a94817b923e58b72b21"
      ],
      "author": {
        "name": "Jake Wharton",
        "email": "jakew@google.com",
        "time": "Mon Jun 11 15:46:03 2018 -0400"
      },
      "committer": {
        "name": "Jake Wharton",
        "email": "jakew@google.com",
        "time": "Fri Jul 20 10:44:11 2018 -0400"
      },
      "message": "Only keep methods with correct signature for more types\n\n- For transition and pathMotion attributes the method must have Context and AttributeSet parameters.\n- For actionViewClass and actionProviderClass attributes the constructor must have a single Context parameter.\n- For Fragment\u0027s class or name attributes the constructor must have zero parameters.\n\nBug: 37123156\nTest: make aapt2_tests\nChange-Id: I34017abd182867ba95172835051d114cb2f3b3ac\n"
    },
    {
      "commit": "e4bd16028442e36b13fe6fc119393eae5840508d",
      "tree": "342a6e793238f7ea45e302192668169f71f03d29",
      "parents": [
        "cfbc767b61f5a0afab2bf1b993151d57a743ce31"
      ],
      "author": {
        "name": "Jake Wharton",
        "email": "jakew@google.com",
        "time": "Tue Jun 12 09:39:14 2018 -0400"
      },
      "committer": {
        "name": "Jake Wharton",
        "email": "jakew@google.com",
        "time": "Wed Jul 18 12:09:17 2018 -0400"
      },
      "message": "Add rule emissions for appComponentFactory\n\nThis attribute was added in API 28 and is reflectively instantiated from a zero-argument constructor.\n\nTest: make aapt2_tests\nChange-Id: Ie9de0764165c6fe6c6fcda6cc38b0cc633f03bbd\n"
    },
    {
      "commit": "cfbc767b61f5a0afab2bf1b993151d57a743ce31",
      "tree": "e1b81dd846551342644e40ec7de7785192a81f55",
      "parents": [
        "3e2d62bd86e91f3dc62a8c323b84c4b90bf1d79e"
      ],
      "author": {
        "name": "Jake Wharton",
        "email": "jakew@google.com",
        "time": "Tue Jun 12 09:26:13 2018 -0400"
      },
      "committer": {
        "name": "Jake Wharton",
        "email": "jakew@google.com",
        "time": "Wed Jul 18 12:09:17 2018 -0400"
      },
      "message": "Add Application name to manifest test case\n\nTest: make aapt2_tests\nChange-Id: I4df26375bdf480b7d09e9cf816b7a9feaa141115\n"
    },
    {
      "commit": "23cc5d5dbecf34c205af40761ca762f3258f341f",
      "tree": "e137bef17cabb6139826fc2fc790217bac035755",
      "parents": [
        "53208af20d501b892b9cc9971033a9f2e2d7cf35"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Jul 12 17:16:40 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Jul 13 11:19:56 2018 -0700"
      },
      "message": "AAPT2: Fix R.java for styleable in different package\n\nWhen generating the R.java file, attributes of styleables do not always\nhave package names on them. This caused a problem where when an apk\nthat was previously linked and that also contained a declare-styleable\nis linked again to an AndroidManifest.xml with a different package name,\nstyleable attributes\u0027 resource symbols could not be looked up correctly.\n\nThis change does not rename the resources but makes sure that the java\ngenerator finds the attribute symbols correctly.\n\nBug: 110877419\nTest: Created a test in aapt2_tests and verified correct behavior of\nrepro example from bug\n\nChange-Id: Ib99d84cbe44dadca86603bc610ad3f4e09e3fb11\n"
    },
    {
      "commit": "3001f0311ddf4a6cc8b328ae697314feb1fd00f7",
      "tree": "0dd7ae595263f5e063f46842012053df56fdea47",
      "parents": [
        "420785e6d0bdecd6849aa9e609e39fb1906a5bc0"
      ],
      "author": {
        "name": "Jake Wharton",
        "email": "jakew@google.com",
        "time": "Mon Jun 11 12:24:11 2018 -0400"
      },
      "committer": {
        "name": "Jake Wharton",
        "email": "jakew@google.com",
        "time": "Mon Jun 11 17:21:28 2018 -0400"
      },
      "message": "Only keep methods with correct signature for view/menu click\n\nFor View\u0027s onClick attribute the method must have a single argument of type android.view.View. For a MenuItem\u0027s onClick attribute the method must have a single argument of type android.view.MenuItem. Since these rules match all types and any return type, matching by signature is the only available specificity that can be added.\n\nBug: 37123156\nTest: make aapt2_tests\nChange-Id: I4b82f5ef9e62a8ecffaab424e269df627825709e\n"
    },
    {
      "commit": "420785e6d0bdecd6849aa9e609e39fb1906a5bc0",
      "tree": "1ba11e43fe3b1a810c37a52b808d19ed8915a1d9",
      "parents": [
        "ab660a7fde368f30d88af7e4c864b5489dcd44f3"
      ],
      "author": {
        "name": "Jake Wharton",
        "email": "jakew@google.com",
        "time": "Mon Jun 11 15:40:48 2018 -0400"
      },
      "committer": {
        "name": "Jake Wharton",
        "email": "jakew@google.com",
        "time": "Mon Jun 11 15:57:59 2018 -0400"
      },
      "message": "Improve tests for ProGuard rules, add transition tests\n\nTest: make aapt2_tests\nChange-Id: If3300a9f82ad90189b74aab03c0d7f649e74e3f3\n"
    },
    {
      "commit": "ab660a7fde368f30d88af7e4c864b5489dcd44f3",
      "tree": "93863c209d635eca6bb60e97487094e474669e7e",
      "parents": [
        "aa035cf77bad6db95221680654f0cf32c95fd3b9"
      ],
      "author": {
        "name": "Jake Wharton",
        "email": "jakew@google.com",
        "time": "Fri Jun 08 17:56:55 2018 -0400"
      },
      "committer": {
        "name": "Jake Wharton",
        "email": "jakew@google.com",
        "time": "Mon Jun 11 11:33:17 2018 -0400"
      },
      "message": "Only keep default constructor of manifest items\n\nReflection-based instantiation of manifest-declared types is only done on the default (aka no-argument) constructor. While these types are unlikely to have alternate constructors (unlike the others listed in the bug), there\u0027s no reason to generate overly keep-y rules for them.\n\nBug: 37123156\nTest: make aapt2_tests\nChange-Id: Ic83a2671a54ea5dd558bfcacf033a60e9568ab8c\n"
    },
    {
      "commit": "9a2f6e60c6a8aba61dadc66c20f13d00327dca46",
      "tree": "eaff99a6c0e3e4db0e9a2f6da0af767038314b8d",
      "parents": [
        "5cfe061ed5644de4addbf43775963c5c5306ef20"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed May 23 14:23:18 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu May 24 09:58:27 2018 -0700"
      },
      "message": "AAPT2: Add Proguard rules for nav fragments\n\nAdds generation of proguard rules for fragments in res/navigation. All\nandroid:name attributes have keep rules generated for the classes they\nreference.\n\nBug: 69929974\nTest: aapt2_tests\nChange-Id: I05a87484ab357ea5629b73caad8488182f474e1f\n"
    },
    {
      "commit": "0315c8495db1758dc0acb1fda5cfebfc690889b9",
      "tree": "edba2afd984286c728e85aa8a316d5840e7c6e9c",
      "parents": [
        "7264b3484d997a964c64a657bb17a4c77c37cff0",
        "949b625377188c087f20c13c73efdfe78f16e446"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 05 18:58:43 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 05 18:58:43 2018 +0000"
      },
      "message": "Merge \"Don\u0027t dereference a null pointer\""
    },
    {
      "commit": "949b625377188c087f20c13c73efdfe78f16e446",
      "tree": "12b90575ea5c83a3562d58233ec633e778482a33",
      "parents": [
        "11817c6bb21423cec873f5acd11cbb203bdc7729"
      ],
      "author": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Fri Mar 02 14:19:45 2018 -0800"
      },
      "committer": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Fri Mar 02 14:19:45 2018 -0800"
      },
      "message": "Don\u0027t dereference a null pointer\n\nIf we don\u0027t specifiy an output for R.java, don\u0027t try to write\ndata to the class definition\n\nChange-Id: I3ad471ec93dcb8baf13f221174065679cce311ad\nFixes: 72547268\nTest: out/host/linux-x86/nativetest64/aapt2_tests/aapt2_tests\n"
    },
    {
      "commit": "d31bc123a06d2ffc2ca1b76a591a07865744ae12",
      "tree": "5debe4c21d27bb8c66622e4666c621ebe424b1b3",
      "parents": [
        "40ce09581d8ef85ef9d5222d9b7c875429e913d1"
      ],
      "author": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Mon Feb 12 11:03:42 2018 +0000"
      },
      "committer": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Tue Feb 13 14:09:00 2018 +0000"
      },
      "message": "AAPT2: normalize Manifest java identifiers.\n\nCurrently AAPT2 does not allow permissions which last piece contains the\n\"-\" symbol (since it is an illegal character for a java identifier).\n\nAAPT1 would normalize the last piece, therefore creating a valid java\nidentifier.\n\nThis CL makes AAPT2 behave in a similar way to AAPT1, but instead of\nmodifying the original value of the permission string, modifies only the\njava identifier part, leaving the permission string unchanged.\n\nFixes: 72980877\nTest: updated\nChange-Id: Ie44317e07407341ba3e91a84d9b06980547b3448\n"
    },
    {
      "commit": "bd56951c5bce2b3b799de1e306275120cf336763",
      "tree": "17e03fa6c928dbf284d657f8d4d3f8058ffd9236",
      "parents": [
        "072abed5f552871db18a86863d04cfc89714ad5f",
        "a4fb17bbbba59c5ee92402eb8c5da4e3c52560b2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 17 20:20:29 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 17 20:20:29 2018 +0000"
      },
      "message": "Merge \"aapt2: Fix issue with Manifest duplicate handling\""
    },
    {
      "commit": "a4fb17bbbba59c5ee92402eb8c5da4e3c52560b2",
      "tree": "5b89566ac4d6cbd47a892211be26ff5948d6a28f",
      "parents": [
        "d6808dc0c00ba45fd589449647f792daf9fa8126"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 16 17:05:10 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 16 17:06:33 2018 -0800"
      },
      "message": "aapt2: Fix issue with Manifest duplicate handling\n\nFixed a memory-corruption issue that led to multiple duplicate\npermission entries being generated for Manifest.java.\n\nBug: 71641288\nTest: make aapt2_tests\nChange-Id: I8cd37929c4883aaba2beebbf874c7ee3234d51d8\n"
    },
    {
      "commit": "73bff1e8519bb73f17a801f45977d41b69b5b0d0",
      "tree": "9ac5f4e491ed617b6cefe118b91edb637c6c35a4",
      "parents": [
        "14c2ae4a6e62b78f2c994112d08dbe3d4de64695"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Dec 08 16:06:10 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jan 11 13:54:11 2018 -0800"
      },
      "message": "AAPT2: Allow compatible duplicate Attributes\n\nIf a resource XML file defines two compatible Attributes, they should\nbe merged without throwing an error. Ex:\n\n\u003cdeclare-styleable\u003e\n  \u003cattr name\u003d\"conflict\" format\u003d\"string\" /\u003e\n\u003c/declare-styleable\u003e\n\n\u003cdeclare-styleable\u003e\n  \u003cattr name\u003d\"conflict\" format\u003d\"string|reference\" /\u003e\n\u003c/declare-styleable\u003e\n\nIn this case, string|reference and string are the same, so these should\nmerge correctly.\n\nBug: 65699599\nTest: make aapt2_tests\nTest: make AaptBasicTest\nChange-Id: I7b0f956d2332f7f0b458acd59ca0a606b2cfdf95\n"
    },
    {
      "commit": "71be70507de9cb619b644e55eda1cc181e3f7e90",
      "tree": "1ad3c588be3dd06b39b1ba5c3229f80ca08d62bd",
      "parents": [
        "6bb6fad16d93a5859d47dcf962337c2719e585dd"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Dec 12 16:48:07 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Dec 18 14:16:02 2017 -0800"
      },
      "message": "AAPT2: Propagate SPEC_OVERLAYABLE flag to final APK\n\nResources can be marked as overlayable, which means they can\nbe overlaid by runtime resource overlays.\n\nThis change propagates this state to the final resource table that\nis installed on device.\n\nFuture work:\n- Have the idmap tool respect the overlayable state and ignore\n  entries that overlay anything else.\n\nBug: 64980941\nTest: make aapt2_tests\nChange-Id: Id45b1e141a281be2ee32a4ac3096fcf1114d523b\n"
    },
    {
      "commit": "23a6e1e3901e1ef1e2bd5ebb2aff08b767d19c49",
      "tree": "90eea395d30e3717e0efc5c6cd98d24c44bb9f00",
      "parents": [
        "f5cf390e416e964b915b8dcf3339230c93756547"
      ],
      "author": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Tue Dec 05 14:52:07 2017 +0000"
      },
      "committer": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Tue Dec 05 20:59:08 2017 +0000"
      },
      "message": "AAPT2: allow to generate R.txt without R.java\n\nBug: 69956357\nTest: manual\nChange-Id: If2bc32bd4efb1ea17c6cba7a17f2b2300164ede0\n"
    },
    {
      "commit": "f85eec8403226be8cb7584b95ea185616d2e017b",
      "tree": "7bdb41112e8a2d97dd9f1e64e690385dcf823e6a",
      "parents": [
        "de3766e95d880ea6c9f3e9280a8ac921effe47a8"
      ],
      "author": {
        "name": "Adam Koski",
        "email": "adamkoski@google.com",
        "time": "Wed Nov 15 12:48:49 2017 -0800"
      },
      "committer": {
        "name": "Adam Koski",
        "email": "adamkoski@google.com",
        "time": "Mon Nov 20 14:54:28 2017 -0800"
      },
      "message": "Fix conditional keep rules for new semantics\n\nNew conditional syntax is a logical AND, not OR. This means if a\nresource should be conditionally kept by multiple ids, we need to\ngenerate a separate rule for each condition (which will be interpreted\nas OR).\n\nTest: unit tests\nBug: 69341430\nChange-Id: I0786c65561d36fbf43d181a2dfd0c7eaf1d96b8c\n"
    },
    {
      "commit": "a693c4a32ebed4e96dcc1cf6a706e8ebbb004db2",
      "tree": "902f4d5abd493ccb8087b941676e2562c8db128b",
      "parents": [
        "60303333dc8ad61e640992cee2b5c601be73faf8"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 09 11:29:39 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 16 12:06:17 2017 -0800"
      },
      "message": "AAPT2: Move all file output to FileOutputStream\n\nFileOutputStream is safe to use on Windows, as it opens\nfiles using our compatibility API.\n\nBug: 68262818\nTest: make aapt2_tests\nChange-Id: Ib0b27e93edd609b49b1327db7d9867a002198ebb\n"
    },
    {
      "commit": "09ef94e918870a55907b20f35348cc7b77bdc148",
      "tree": "f1078d6bf7c7d1200c5c0981a16477576d0b6461",
      "parents": [
        "5d8150092ddd0e33849664d9b5f9abd260c3d408"
      ],
      "author": {
        "name": "Adam Koski",
        "email": "adamkoski@google.com",
        "time": "Fri Nov 10 11:15:55 2017 -0800"
      },
      "committer": {
        "name": "Adam Koski",
        "email": "adamkoski@google.com",
        "time": "Fri Nov 10 11:30:56 2017 -0800"
      },
      "message": "Change conditional keep rule syntax\n\nGoogle\u0027s ProGuard fork is migrating to a new syntax that upstream\nProGuard 6.0 will also support.\n\nTest: unit tests\nBug: 69162105\nChange-Id: I3b6d7e82eb99c2e2af6c4d851a4f97ec3e471b55\n"
    },
    {
      "commit": "93190b79d11d874199cfe7258526a48cfc8399fc",
      "tree": "3a7ae2b44c7f9693d54cdb0849e21338398de3d3",
      "parents": [
        "b54be8de65b09c85992b30dbb1d52032f0498b6d"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 03 15:20:17 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Nov 07 11:21:10 2017 -0800"
      },
      "message": "AAPT2: Better debugging output\n\nTest: make aapt2_tests\nChange-Id: I7778b773201381538dc1f2e376abee4eb33e44c0\n"
    },
    {
      "commit": "dc21dea9b8b1157a4a9347b68301da4307c51168",
      "tree": "e5a861fbec159776bebc37296753ca21c7916593",
      "parents": [
        "0d769d80a9a871cd4f0e5dc24e63c86d97fb3ad8"
      ],
      "author": {
        "name": "Adam Koski",
        "email": "adamkoski@google.com",
        "time": "Fri Jul 21 10:55:27 2017 -0700"
      },
      "committer": {
        "name": "Adam Koski",
        "email": "adamkoski@google.com",
        "time": "Fri Oct 20 16:25:18 2017 -0700"
      },
      "message": "AAPT2: Produce Conditional Proguard Keep Rules\n\nAdd the option to produce keep rules that conditional keep based on\nusage of R identifiers. This allows Proguard to potentially shrink more\ncode if resources are not used.\n\nCurrently only produces conditional rules for classes referenced in\nlayout resources because they are the most common and has the easiest\ntransitive usage chain to analyze.\n\nBug: 63628451\nTest: make aapt2_tests and manual testing\nChange-Id: I6c1af7affd64af40c80e004d8506a9463444b2c3\n"
    },
    {
      "commit": "761d4341fcbb711f55d73a31e79098837146236d",
      "tree": "d00cbad62516f69fb2802fd2a79f747b7e5b9292",
      "parents": [
        "43ddc05bbdbf8da73da2415b3ab4d68a0180f9b2"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Sep 29 11:15:17 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Sep 29 11:20:45 2017 -0700"
      },
      "message": "AAPT2: Fix R.java styleable + indices ordering\n\nMake sure that Styleables are directly followed by their indices.\nIf not, Robolectric breaks. This is not strictly incorrect to have\nan arbitrary ordering in R.java, but its easier to just support\nRobolectric in this case.\n\nBug: 65837293\nTest: make aapt2_tests\n\n(cherry picked from commit af85c4deb667843a227d62275fe6992005f4c38d)\n\nChange-Id: Ia59ba58427ade386d075ca9fc9eb5b53e35beca0\n"
    },
    {
      "commit": "123a19bc3af1c4da4faa9f781eaabcd0e9135f9c",
      "tree": "819cddace5365a06b9b786272d6871b5e48b233a",
      "parents": [
        "f5ff39f0bdfedb19d994b0e97403ff5b90ec6511",
        "1ef0fa9d7242b1926543bc49e35905d1be02a781"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Aug 29 17:32:24 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 29 17:32:24 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fixup namespace implementation\""
    },
    {
      "commit": "1ef0fa9d7242b1926543bc49e35905d1be02a781",
      "tree": "1e0d7a900b8e595dcb38b41e8f6cd8e7690cd747",
      "parents": [
        "668feb252a226f39acbad801bf8e256a04cb3e1f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Aug 15 21:32:49 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Aug 23 11:30:54 2017 -0700"
      },
      "message": "AAPT2: Fixup namespace implementation\n\nA few pieces were missing in the namespace mangling implementation.\nNamespace aware libraries now work, along with R class generation.\n\nBug: 64706588\nTest: make AaptTestNamespace_App\nChange-Id: I12f78d6aa909e782c0faf7ceaa36058f2e6c864a\n"
    },
    {
      "commit": "f852dd0eb86e461f1f039f6a292e62123757dad8",
      "tree": "f190387ce81a44b86c1f2092e5d511f66e8d9834",
      "parents": [
        "668feb252a226f39acbad801bf8e256a04cb3e1f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Aug 18 19:49:58 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Sat Aug 19 08:40:33 2017 -0700"
      },
      "message": "AAPT2: Fix regression in Manifest.java permissions\n\nPermissions defined with the same leaf name emit the same\nstring symbol, which causes collisions. AAPT would override\nthe symbol with the last one seen.\n\nDo the same thing as AAPT, but emit a warning.\n\nBug: 64472942\nTest: make aapt2_tests\nChange-Id: I17b9dc7e8d8bd80db98869394c93695cb453bebd\n"
    },
    {
      "commit": "6b372991296c9f2bd6f8f8847dcd23d50970d06d",
      "tree": "325fa6d275390fd3d0d9757545f128fbe9ed39f9",
      "parents": [
        "c10cc1185b0024a12660f4de7fbb6ad78bd1cfb7"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Aug 09 10:54:23 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Aug 17 17:43:08 2017 +0000"
      },
      "message": "AAPT2: Change XmlDom to exclude Namespace as a node\n\nIn preparation for exporting an XML proto format for UAM to consume,\nthis change brings the XML DOM API more in line with other APIs that\ndo not make the Namespace a separate node.\n\nTreating Namespace declarations as just properties of an Element\nnode makes the implementation of algorithms much simpler, as\nthe constraints that Namespace nodes have only one child\nare now built in and traversing to find Element nodes\nis much simpler.\n\nAlso made a bunch of quality of life improvements, like formatting and\ncomment style.\n\nTest: make aapt2_tests\nChange-Id: Ib97ff1c4252b7907e2cc1f13a448dc4ca3b809a4\n"
    },
    {
      "commit": "09f4d706d9438980465faabe81ed143fc299343e",
      "tree": "ec9f2f045d10ebe37198af36aab02b5ccf31a62a",
      "parents": [
        "b76b3056f57be4abf9fae1375861a5e7c897b074"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Aug 08 10:39:55 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Aug 08 10:51:23 2017 -0700"
      },
      "message": "AAPT2: Forward @TestApi in resource comments to JavaDoc\n\nBug: 37894597\nTest: make aapt2_tests\nChange-Id: I357fb84941bfbb3892a8c46feb47f55b865b6649\n"
    },
    {
      "commit": "e967d3f6ac2e1e1f612f99b9c76abcb9e13bb7a2",
      "tree": "57a3a90478daeaf536af29463e3ac3866777511c",
      "parents": [
        "3370d3230d4e3084ca95eb6d6bb63f27c3cb6f63"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jul 24 18:19:36 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jul 25 15:53:15 2017 -0700"
      },
      "message": "AAPT2: Fix JavaDoc first sentence extraction.\n\nThe old algorithm for detecting the first sentence of a JavaDoc comment\nlooked for the first occurence of \u0027.\u0027. This does not work when code or a\n{@link android.R.styleable} link is encountered in the first sentence.\n\nSwitch to checking for whitespace characters after the \u0027.\u0027 character.\n\nBug: 62900335\nTest: make aapt2_tests\nChange-Id: I8238f6a6304c9c2f92e2e576ca8962a59c2b20ea\n"
    },
    {
      "commit": "f762df257574231ffd08679a69e9cf62fe143dcd",
      "tree": "c4dfe1caec133b9893d0653feb7aaed49263e030",
      "parents": [
        "b2bf85b412c04ac7896b6133a5c562625bc5a8de"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jun 26 16:39:03 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jun 28 11:01:59 2017 -0700"
      },
      "message": "AAPT2: Emit more proguard keep rules for layouts and menus\n\n\u003cfragment\u003e tags in layouts use the class attribute to determine which\nFragment subclass to load, and fallback on android:name if class is not\nset.\n\nAAPT2 only emitted a proguard rule for the class attribute for \u003cfragment\u003e,\nwhen it should emit a proguard rule for the android:name attribute as\nwell.\n\nAAPT2 didn\u0027t handle menu XML, so support for actionViewClass,\nactionProviderClass and onClick is added.\n\nBug: 62216174\nTest: make aapt2_tests\nChange-Id: Ie8675c2bd899a5b51f3661eb0901ab8c9a16fd70\n"
    },
    {
      "commit": "0d81f701045ff24a2c6a39520629a1898d5f8b65",
      "tree": "3239380c90cfb67c12a77a9a6f1ba008638bb7fb",
      "parents": [
        "366d27d31e9341def03ba6eea310d6f56be69abd"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jun 27 15:51:09 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jun 27 18:46:58 2017 -0700"
      },
      "message": "AAPT2: Honor --custom-package when writing Manifest.java\n\nBug: 62826426\nTest: manual\nChange-Id: I517ff5da2ef2a9147ddbfb13b074a1f60550f189\n"
    },
    {
      "commit": "1e4b0e54a3db31bdbcb9385bf22bab4b96096d1f",
      "tree": "3c87c9080c067aacf8235a07214d3edc35bd86ed",
      "parents": [
        "0ddca92018da69e7224b63cdedbf1944c63ddc34"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Apr 27 15:01:10 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 28 12:47:48 2017 -0700"
      },
      "message": "AAPT2: Workaround for findViewById with package ID \u003e 0x7f\n\nThe entire View code base checks IDs against View.NO_ID except\nfindViewById(), which checks to see if the ID is negative.\n\nAny package ID \u003e 0x7f is interpreted as a negative number in Java\n(no unsigned ints), so this check prevents the use of IDs \u003e 0x7f.\n\nfindViewById is final, so support library workarounds are not possible.\n\nInstead, IDs (@id/foo) are just sentinels, their values don\u0027t matter.\nIf building for pre-O devices, rewrite any references to these IDs of\nthe for 0xPPTTEEEE, where PP \u003e 7f, to 0x7fPPEEEE.\n\nThe symbol table will check for potential collisions against the base\nAPK, so this should be safe.\n\nBug: 37498913\nTest: manual\nChange-Id: Ife3bbd29db287757ef8a2ffd83053d97f1db2613\n"
    },
    {
      "commit": "418763ff54170484c527bf618ef2fad34fe63f97",
      "tree": "fd7d16b9602e9487917058997bda65bed6551c85",
      "parents": [
        "ec8f35366851fcfea2d8b8e42821dda72bdca344"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Apr 11 17:36:53 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Apr 11 17:40:02 2017 -0700"
      },
      "message": "AAPT2: Generate R.txt\n\nIn order to support a staged rollout of support for AAPT2,\nlibraries being built the old way (merged into a single resource\ndirectory) still need to make use of the generated R.txt AAPT\nemitted. Do the same as AAPT.\n\nTest: manual\nChange-Id: Iaac1e824ddbd67e4efbab7692cddc1e4aa052f5a\n"
    },
    {
      "commit": "b5dc4bd49a036e3403ca17e961d2c8e13e038295",
      "tree": "e07c0d9a9718a34e2834fe6adbfd99e449cebb8b",
      "parents": [
        "9a53d03104c4535f512ec24e63afe9a965979812"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 22 19:29:29 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 22 19:54:43 2017 -0800"
      },
      "message": "AAPT2: Few tweaks to get shared-libraries working\n\nTest: manual (building shared support library demo)\nChange-Id: I4730645aa92ba1893baf67ffe35fbd4aac0f8e46\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": "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": "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": "470f8fcb5c0c59b28b5f73ee011a797b05085da7",
      "tree": "94b3c5f77f57476c0f314edb53a01e90220cbfb0",
      "parents": [
        "af34bd5caeeaed956f3f6728a076799b11fe9406"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Aug 15 12:32:51 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Aug 15 12:32:51 2016 -0700"
      },
      "message": "Fix clang-tidy warnings in aapt and aapt2.\n\n* Add explicit keyword to conversion constructors.\n* Add NOLINT(implicit) comments for implicit conversion constructors.\nBug: 28341362\n* Use const reference type for read-only parameters.\nBug: 30407689\n* Add NOLINT to suppress wrong clang-tidy warnings on macros.\nTest: build with WITH_TIDY\u003d1\n\nChange-Id: Ibfafb23d9be463b4072745a51a6d9f1812dcac45\n"
    },
    {
      "commit": "ad48bbcbf626ad803abe45e702960bef19b3b867",
      "tree": "5b0bf02ffac37174b52c809575a07ae6feda3950",
      "parents": [
        "f455762ec6ba5944903037da1f961be9ef23b280",
        "58a20a6482a56a262fd83a617482641e3a981db1"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jul 27 19:52:43 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 27 19:52:44 2016 +0000"
      },
      "message": "Merge \"AAPT2: Change accepted notation for resource names in tests\""
    },
    {
      "commit": "58a20a6482a56a262fd83a617482641e3a981db1",
      "tree": "3b15075837740f6079496a2f2e4ca071de6fab9f",
      "parents": [
        "bf0bd0f9ac1ffa0231cff0f6591dede48b3c6d52"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jul 25 17:56:58 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jul 25 17:56:58 2016 -0700"
      },
      "message": "AAPT2: Change accepted notation for resource names in tests\n\nPreviously the way to name resources in tests was to use reference\nnotation (@[package:][type/]name). Now we use name notation (no @).\n\nChange-Id: I68f0a36562d89cc78c582d128f370d9556c58707\n"
    },
    {
      "commit": "f580d91dabc443301e2adcfc74509bec9b1960ff",
      "tree": "c0d94140e92d3b6663028d85eca76c364eb67967",
      "parents": [
        "554881712c6c74d7dcffec3061ccc50371e9c468"
      ],
      "author": {
        "name": "Ivan Gavrilovic",
        "email": "gavra@google.com",
        "time": "Tue Jul 19 12:03:33 2016 +0100"
      },
      "committer": {
        "name": "Ivan Gavrilovic",
        "email": "gavra@google.com",
        "time": "Wed Jul 20 15:38:48 2016 +0100"
      },
      "message": "Aapt main dex proguard rules - always keep application\n\nAapt with -D option was not keeping the application and instrumentation\nsubclasses, which were instead handled by mainDexClasses.rules. Instead,\ninclude them in the aapt -D output.\n\nChange-Id: Ia3b89fc2edd45d379c4d06f0bf674716646fcb3d\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": "0935d0132b732e83c2130c3f1c835c7c0d117f14",
      "tree": "a2d7b5bf30dfbea10a6d2271ac4d3e4d3df19bb6",
      "parents": [
        "1916f6a91cc38f214397b9553cee8c84717b9af8",
        "fab894efdece38ec9f3df1adedf79eb148bc6bda"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon May 16 13:33:17 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon May 16 13:33:17 2016 +0000"
      },
      "message": "Merge \"Stop emitting javadoc for @removed attributes.\" into nyc-dev am: c4033e7c66 am: 1d10d94396\nam: fab894efde\n\n* commit \u0027fab894efdece38ec9f3df1adedf79eb148bc6bda\u0027:\n  Stop emitting javadoc for @removed attributes.\n\nChange-Id: Icbaa4eb19326d2ec41be78016665553a1b7beef0\n"
    },
    {
      "commit": "feaf99fa1b7563f15dbd4211718a6cfb7a3cc3c8",
      "tree": "ea11ecd04a1908a46e0039a154f21a84453229b0",
      "parents": [
        "6f9f75e1063d282c933ede862fa7ea9371a2f310"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri May 06 17:16:06 2016 +0100"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon May 09 14:51:41 2016 +0100"
      },
      "message": "Stop emitting javadoc for @removed attributes.\n\nWe need the attributes to remain public because people might still be\nlinking against them, but we don\u0027t want them showing up in the\ndocumentation any more. Them showing up in the documentation also had\nthe side effect that it would accidentally mark the parent class of\nattributes as @removed, which was not intended.\n\nBug: 28663748\n\nChange-Id: I2f6eb09455fddf1086e6b24bc3bea5292e8e32b7\n"
    },
    {
      "commit": "e49bb30dab4c37926962e8b408045e5a45f52c40",
      "tree": "d45b8707ccb66a1819692e84225b50deafdfc722",
      "parents": [
        "e776105529ade8ee25fadda22cfb68d95de56b23"
      ],
      "author": {
        "name": "Rohit Agrawal",
        "email": "rohitagr@google.com",
        "time": "Fri Apr 22 12:27:55 2016 -0700"
      },
      "committer": {
        "name": "Rohit Agrawal",
        "email": "rohitagr@google.com",
        "time": "Fri Apr 22 14:40:40 2016 -0700"
      },
      "message": "AAPT2: ProGuard config for components in main dex.\n\nCreate an analogue of \"aapt2 --proguard\" which outputs a proguard\nconfiguration that keeps only components which need to be in the main\ndex.\n\nBug: 27383099\n\nChange-Id: I61d652bfcdfc18e1614e852bd6f7540efd15f780\n"
    },
    {
      "commit": "626b3dbf74f02ae630ae0089632f5962340694dc",
      "tree": "21fda93c61d624b598b05cb0bd54a377a8975487",
      "parents": [
        "41c1bb8f4a5a1f2f0a23d6cece525eaea50f57b3"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Apr 07 13:24:59 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Apr 07 16:26:14 2016 -0700"
      },
      "message": "AAPT2: Clean up R JavaDoc generation\n\n- Don\u0027t generate private attributes in public R.java\n- Strip out @SystemApi from comment when generating @android.annotation.SystemApi\n- Only emit a single line (up to the first period) of an attribute\u0027s comment within\n  a styleable\u0027s attribute table.\n\nChange-Id: Id6316a6861540325934133958939a12074ad4428\n"
    },
    {
      "commit": "803c7c807969bea1f1c50f348832f5b60ad05d8e",
      "tree": "03237f2437312596e744d382aac3bf800c92c59d",
      "parents": [
        "50e439df28f1ceb76c229543f93f0b3f6ea05793"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Apr 06 16:09:43 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Apr 06 16:24:02 2016 -0700"
      },
      "message": "AAPT2: Enable windows build and make sure it builds\n\nMingw32 4.8 is kind of picky with macros and some complicated template\nstuff. Luckily there was another way to represent the\nSFINAE code that works on all platforms. Yay!\n\nChange-Id: Idc2e38f47bfdc57b394550bfa0f53cc0b825df25\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": "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": "74605cd40256ca75b44cc3182eeeb886c92d737c",
      "tree": "aeaba146e014328caa3eafc257b3c6bad73bb53e",
      "parents": [
        "626a69f34536d01db0847df0051199beaecce060"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 03 15:39:50 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 04 20:06:05 2016 -0800"
      },
      "message": "AAPT2: Emit proper doclava comments in R.java\n\nBug:25958912\nChange-Id: I663f2eb5bd54e3c3288ce9bc186c928f0a014f93\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": "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": "24b8ff0faf7c59323d0171cdd825ca09e712aa1e",
      "tree": "f1350009e8e3aa03ab93b088619635991aeb989a",
      "parents": [
        "7ff3ee19f4b831a526baf4b928d1ac172d070d82"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Dec 16 14:01:57 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Dec 17 11:01:55 2015 -0800"
      },
      "message": "AAPT2: Fix references to private parent\n\nChange-Id: Id4697551b6c8cb6167f562de593006ae3c6158c0\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": "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": "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": "3b4cd94034ff3e5567a2ba6da35d640ff61db4b9",
      "tree": "83c604b9a3b0d1b25769a6afd16578fd97e6effe",
      "parents": [
        "104e028c3a180a4a151160299ad2e1a4185d6c50"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 30 16:31:42 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 02 11:53:47 2015 -0800"
      },
      "message": "AAPT2: Add support for comments in R.java\n\nChange-Id: Iaa5f3b75bf7de9dbf458fa5c452f7312989f4c4f\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"
    }
  ]
}
