)]}'
{
  "log": [
    {
      "commit": "58e2fbf16970d9e0c1e93f60b881765e87bfc7a6",
      "tree": "4ac5c6568a8dd55a61d12346121ebd1dddeed5f7",
      "parents": [
        "2e8c7670b12ce7075bcc34c1502d268a71f99a0d"
      ],
      "author": {
        "name": "Chris Warrington",
        "email": "cmw@google.com",
        "time": "Mon Jul 23 14:12:20 2018 +0000"
      },
      "committer": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Mon Jul 23 17:23:25 2018 +0100"
      },
      "message": "Revert \"AAPT2: Automatic Static Library Namespacing.\"\n\nThis reverts commit 481f027ddc3e0ff0e1838a9375c1286e8ad70d70.\n\nReason for revert: Not needed any more\n\nBug: 111543815\nTest: existing unit and integration tests\nChange-Id: I87b039192682636d81c2d33512495cb005c9504d\n"
    },
    {
      "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": "5fa2bb14ec6e2a824559909f25e6ea82a2842f5a",
      "tree": "0544bf2e6da16b978251407e581a0ad7502c4cb5",
      "parents": [
        "89c9a12826b5d0c52edb97c17ee55c317425d5b8"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Jul 12 11:24:51 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Jul 13 23:41:46 2018 +0000"
      },
      "message": "AAPT2: Fix long version code bugs\n\nRefactoring areas in AAPT2 that use android:versionCode to also use\nabdroid:versionCodeMajor. Does not add versionCodeMajor command line flag yet.\n\nBug: 109883459\nTest: aapt2_tests\nChange-Id: I573fbea37491cf8c5742f9e385c66ee64c4e5166\n"
    },
    {
      "commit": "833a1a6c4a7b57431ae620fc83f4c17f6fbf6a06",
      "tree": "acac93a67f807052f0b77700195377f904ed20fa",
      "parents": [
        "53208af20d501b892b9cc9971033a9f2e2d7cf35"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue Jul 10 13:51:36 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Jul 13 14:26:06 2018 -0700"
      },
      "message": "AAPT2: Refactor flags into commands\n\nRefactors the flag based command invocation into classes that make using\nsubcommands easier.\n\nTest: manual tests of printing\nChange-Id: Ic8df6af0be30db552e32150afebecbfeec7e1075\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": "d86ea58bddea7d5608e3539fc77e3d805c0af1d1",
      "tree": "59aee68a419d4d4a4559ed50a3589abeaee3a258",
      "parents": [
        "af5753836912a1c76ac35071b8343a6d00782d9e"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Jun 27 11:57:18 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Mon Jul 02 14:14:33 2018 -0700"
      },
      "message": "AAPT2: Encode 4-byte strings in Modified UTF-8\n\nCodepoints that are encoded to 4 bytes in UTF-8 are not allowed in\nModified UTF-8. They instead should be encoded as surrogate pairs in the\nsame way that CESU-8 allows for surrogate pairs. This will also cause 4\nbyte UTF-8 codes to be represented in 6 bytes.\n\nBug: 37140916\nTest: aapt2_tests\nChange-Id: I155dc24f166139d1d36a16bac088dcfcd59eb321\n"
    },
    {
      "commit": "d6ace01c5a58d896435d87ff2ef3a632cad0550a",
      "tree": "436182ae8035a4c9010e55c8931b3051c7367e91",
      "parents": [
        "79e27cd27d0d0403da1d0ba22d7cb7e65d0ec8af",
        "cb76d734fef789bf7246c3c687f3a2d394fe284a"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Mon Jun 25 16:10:59 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 25 16:10:59 2018 +0000"
      },
      "message": "Merge \"AAPT2: Fix unrecognized CDATA\""
    },
    {
      "commit": "cb76d734fef789bf7246c3c687f3a2d394fe284a",
      "tree": "08fbe6e3ae9d727ea9a9030aa1752b9826ce0c55",
      "parents": [
        "e42868974bda97f00dfd63559074bb02c1fc6531"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue Jun 05 10:15:04 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Jun 22 14:06:02 2018 -0700"
      },
      "message": "AAPT2: Fix unrecognized CDATA\n\nThis change adds support for resources that have CDATA blocks within\ntheir values. The blocks should allow any character to occur without\nbeing escaped. It also should not effect the current state of quote\nprocessing.\n\nBug: 80326349\nTest: Created tests in aapt2_tests\nChange-Id: Ie1a00e50cffc877e2eb5f788f8d7a1bda839c0cf\n"
    },
    {
      "commit": "fdc40f52d89769709c264a0c8f081ffc0ca8c87b",
      "tree": "740cc4ae1ba80333c0cfe74905777317b5aa6f1f",
      "parents": [
        "381f62878d238f59b9b3bc39204c8141d80c337e",
        "fae24f5aa239e81ca5cf911698fbb8e71d9a986e"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Jun 18 13:38:11 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jun 18 13:38:11 2018 -0700"
      },
      "message": "Merge \"Fix ManifestMerger issues\" into stage-aosp-master am: 669c4d7ae7\nam: fae24f5aa2\n\nChange-Id: I66e9b74a7db9ae9a0c4040e37a3f2807b24aa391\n"
    },
    {
      "commit": "ff311dd893f66b873ee00d5ca176ff3ab2e0fa53",
      "tree": "0322cdeb7df37ac1e0c28454bbe7495818840562",
      "parents": [
        "abdaa314f885b5a889e48676b7b2b0460a5332f7"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jun 14 15:23:21 2018 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Jun 15 23:03:46 2018 +0000"
      },
      "message": "Fix ManifestMerger issues\n\nSet LOCAL_MIN_SDK_VERSION in aapt2 integration test libraries so that\nthe build system doesn\u0027t raise the minSdkVersion value specified in\nthe manifest, which causes ManifestMerger to error when trying to\nmerge it into a package that specifies a lower minSdkVersion.\n\nBug: 78447299\nTest: m java\nChange-Id: If5d4f97bb2d8a503bd3c20f2ea8aea2519c51e85\n"
    },
    {
      "commit": "1b327db1affc2e20198a0ab3b2847fe3d03435fc",
      "tree": "e7b7e44ce09a5948532dc99c072ef2f241aba5f5",
      "parents": [
        "62b8bc041f6f6a7c75e90b647e55f25ce31582d3",
        "633d796623f84046ebf9baeccd1ba5bcefc16313"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue Jun 12 20:51:33 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 12 20:51:33 2018 +0000"
      },
      "message": "Merge \"AAPT2: Fix raw string parsing\""
    },
    {
      "commit": "633d796623f84046ebf9baeccd1ba5bcefc16313",
      "tree": "731c899533c6a240825cffc2776ffc6791c42abc",
      "parents": [
        "e42868974bda97f00dfd63559074bb02c1fc6531"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Mon Jun 11 15:29:21 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Mon Jun 11 15:57:23 2018 -0700"
      },
      "message": "AAPT2: Fix raw string parsing\n\nTrim whitespace of raw strings when parsing xml values. This change\ntrims the whitespace of style items. For example:\n\n\u003citem name\u003d\"viewInflaterClass\"\u003ecom.helloworld.Inflater\n\u003c/item\u003e\n\nThis will be trimmed to not include a trailing whitespace.\n\nBug: 109666819\nTest: aapt2_tests\nChange-Id: I0c1fbb3abdc7e609316c92e59ccaf0573b07e5a7\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": "40c95320fd1c5ccbabadfcee0c3cb9454155e3d3",
      "tree": "1c2fbefc647dbd9463db233fe218cd5f2986ed2f",
      "parents": [
        "dd309ea63aa589294bbd02e16c7816618b69a2aa",
        "9a2f6e60c6a8aba61dadc66c20f13d00327dca46"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu May 31 21:32:39 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 31 21:32:39 2018 +0000"
      },
      "message": "Merge \"AAPT2: Add Proguard rules for nav fragments\""
    },
    {
      "commit": "da02feaca2db055df1f52493edc9fe3ddf2aa88b",
      "tree": "c026c098de0792f3da4c3d979b11506fd55003b6",
      "parents": [
        "1d09efefebab4915e78dd06ba977c7ded4a46ab7"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri May 25 22:46:35 2018 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed May 30 23:25:21 2018 +0000"
      },
      "message": "Add support for --replace-version to aapt2\n\nImplement --replace-version to match aapt1.\n\nBug: 79755007\nTest: aapt2_tests\nChange-Id: Iee2bd9a3981c7d4681509f18b735c6e9e6c1a336\nMerged-In: Iee2bd9a3981c7d4681509f18b735c6e9e6c1a336\n(cherry picked from commit dcd58c420771af75c625242985bd96ba828aca56)\n"
    },
    {
      "commit": "dcd58c420771af75c625242985bd96ba828aca56",
      "tree": "5eec0fc5731241d012c4d74d989100625175dabc",
      "parents": [
        "e59e48e9c1a14d1a22cf7bf32ae18d28f96cf3c2"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri May 25 22:46:35 2018 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed May 30 14:48:52 2018 -0700"
      },
      "message": "Add support for --replace-version to aapt2\n\nImplement --replace-version to match aapt1.\n\nBug: 79755007\nTest: aapt2_tests\nChange-Id: Iee2bd9a3981c7d4681509f18b735c6e9e6c1a336\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": "a593605dfaef91c36c4ba2b5671f0b9bc538f5ec",
      "tree": "68575f1cc39d1ff37a9ac9b49d3c85e9d731f05e",
      "parents": [
        "5cfe061ed5644de4addbf43775963c5c5306ef20"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed May 23 13:31:28 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu May 24 09:46:33 2018 -0700"
      },
      "message": "AAPT2: Accept density config as default\n\nWhen a resource does not have a default config value defined, and the\nresource only has config values defined for language translations, that\nresource should be removed; however, if the resource also contains a\ndensity specific config value, the resource should not be removed.\n\nThis is because a density specific value should have the same content as\nwhat the default value would have, just higher or lower quality.\n\nBug: 76413048\nTest: aapt2_tests\nChange-Id: I52fe37a7aa3aefb694d3af6c8adfd6269fa26f54\n"
    },
    {
      "commit": "3a20be789f8055356973e61d19e69cf9982429fe",
      "tree": "4a5ab891e6616636dede6ab93e27d8e269077882",
      "parents": [
        "b9a57f05a09a061917b86100571902de07f8409d",
        "78e0e6aa2ee266b41b04482ac85124db5a4c4358"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri May 11 08:41:00 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri May 11 08:41:00 2018 -0700"
      },
      "message": "Merge \"AAPT2: Insert platformBuild information\" into pi-dev am: 91d2f87d0e\nam: 78e0e6aa2e\n\nChange-Id: I6fb1af5b521c5a887ee494c745b83592e48228de\n"
    },
    {
      "commit": "7cb82a86beda55a178d76dc8dd90d0b01a4b9c91",
      "tree": "32d4b8fc40aea3087d36ef451761c015652e2a71",
      "parents": [
        "1822926cfbf55cc68a85cdfd588802f4a106cdb5"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu May 10 15:35:31 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu May 10 15:37:37 2018 -0700"
      },
      "message": "AAPT2: Insert platformBuild information\n\nInserts platformBuildVersionName and platformBuildVersionName when the\nattributes are not currrently present. The attributes are set to\nthe values of versionName and versionCode.\n\nBug: 77541121\nTest: Build apk using aapt and appt2 and dumped using xmltree to confirm\nthe presence of the attributes\nChange-Id: I5330381905c878fb877214b42f83d7e2e48cd062\n"
    },
    {
      "commit": "461b3001f6b731932b3625a9efe2d58e85361adf",
      "tree": "ca8969775f7b72aa8f8d7d0f24253c67f6fbc7fb",
      "parents": [
        "3278aa86fcbf1cc868c1a629b65bfd3d0edc3dd2",
        "cc6e856522e57f17d3ebf382289cf967275fa670"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed May 02 17:49:08 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 02 17:49:08 2018 -0700"
      },
      "message": "Merge \"AAPT2: Fix quoted text in res/xml assets\" into pi-dev am: 150bafd217\nam: cc6e856522\n\nChange-Id: Ie22b644b07da19fcc51e59529f5e38ee2f1f9137\n"
    },
    {
      "commit": "60f06b7770199fadddb3a5c5853c1f5232860c6a",
      "tree": "b8e4193959ad52ed3015ad37fca97c76e359f4f3",
      "parents": [
        "8a88fc3db62fb9c486ab4c81d55b1ad73ca2fac1",
        "932c44d3297c94646ac7b0a24dc923f18c9e2fe9"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed May 02 13:55:05 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 02 13:55:05 2018 -0700"
      },
      "message": "Merge \"AAPT2: Fixed id parsing error\" into pi-dev am: f4c089dd90\nam: 932c44d329\n\nChange-Id: I661784fcabac19d4d9bae137904b9282d9765d79\n"
    },
    {
      "commit": "0dcb20c72742a1de30b4984c4b8996d76cb7a428",
      "tree": "d6d925dbf4fffd271e851d12720c5718cbc3a2eb",
      "parents": [
        "12f404e3e33c21a4f0d634698bef94c219ec48ab"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Apr 27 14:53:04 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed May 02 17:53:21 2018 +0000"
      },
      "message": "AAPT2: Fix quoted text in res/xml assets\n\nAAPT2 aggressively processed xml nodes and regressed from the behavior\nof AAPT. This change restores AAPT\u0027s processing of xml nodes with\nquotations.\n\nBug: 71805084\nTest: Created tests in XmlFlattener_test.cpp and ran the test in the\nAndroid Studio project given in the bug\n\nChange-Id: Idedb4f1002e9fd705ceb5feae35289235b754b02\n"
    },
    {
      "commit": "f4c089dd905fab6bccd83285581ab9ee074d8a42",
      "tree": "1bac5e70a6bf8a52a35cf912c14f42067f203c5c",
      "parents": [
        "33b57e845ff6b12f62898341dbf3a96766a93f0b",
        "eaf77e1d3a6ad4995ddd92a429802cffbf0f0209"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed May 02 16:27:03 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 02 16:27:03 2018 +0000"
      },
      "message": "Merge \"AAPT2: Fixed id parsing error\" into pi-dev"
    },
    {
      "commit": "d51efe818b92ef83eb0539e63fb9d22b37e53696",
      "tree": "79ef94b35acd522b0fe038323abc3e6c63800827",
      "parents": [
        "db70b1764e46b2e4c8652e7b453f7ebefea1c7cf"
      ],
      "author": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Tue Apr 24 18:18:29 2018 +0100"
      },
      "committer": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Wed May 02 13:14:33 2018 +0100"
      },
      "message": "AAPT2: add flag for strict visibility\n\nWill only detect whether a resource was defined as both \u0027public\u0027 and\n\u0027private\u0027 (but will allow overriding \u0027undefined\u0027 visiblity for now).\n\nTest: TableMerger_test + manual\nBug: 72735798\n\nChange-Id: If0749559c91c4d8820a6286fc9ddc80209c1e5e9\n"
    },
    {
      "commit": "eaf77e1d3a6ad4995ddd92a429802cffbf0f0209",
      "tree": "17a7b20a176b55367acf6655c0f77cc998b48864",
      "parents": [
        "dc34eb605520a7f4f9401c4569a2573171111e9d"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Apr 25 15:00:50 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue May 01 11:11:55 2018 -0700"
      },
      "message": "AAPT2: Fixed id parsing error\n\nA previous change, editied the logic for parsing ids to allow for ids to\nreference other ids. This change though caused a regression that made\nids in the form \u0027\u003cid name\u003d\"name\" /\u003e\u0027 cease to parse. This changes fixes\nthat regression.\n\nBug: 78513618\nTest: Updated tests in ResourceParser_test.cpp\nChange-Id: I3608bb764464e951a50910be55e199c6ec575d09\n"
    },
    {
      "commit": "0a81745b487bb8301dc403e07a5d4fac323fffcb",
      "tree": "a865f3ec65fc56fc6167ad95ee2339becfd6f5e9",
      "parents": [
        "ffc63a35becb80220f966f1ebb249dfb3393392e",
        "c323122e9380865374b65e7431b3601b6268d97b"
      ],
      "author": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Thu Apr 26 15:27:00 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 26 15:27:00 2018 -0700"
      },
      "message": "Merge \"Allow using reserved package IDs\" into pi-dev am: 13588dc9e4\nam: c323122e93\n\nChange-Id: I0addf146d9519a93bc2f8f73898a3454cb1cfb56\n"
    },
    {
      "commit": "13588dc9e4e21c0802202db9c1617cb75a88c9cf",
      "tree": "841217f4bcbc2e8839cca9382d239bcd5cf018d1",
      "parents": [
        "8049afc395e19fee9fb28c23a44fee8b5b230831",
        "325129964e5b0a9794cf5bb63a2d2d8774ea6a1b"
      ],
      "author": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Thu Apr 26 21:29:17 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 26 21:29:17 2018 +0000"
      },
      "message": "Merge \"Allow using reserved package IDs\" into pi-dev"
    },
    {
      "commit": "325129964e5b0a9794cf5bb63a2d2d8774ea6a1b",
      "tree": "6916dd14dd937ad9650558c8afca42929acd26f2",
      "parents": [
        "a93ab56ed802f320cbf1ac9452cae75acbef47c3"
      ],
      "author": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Wed Apr 25 16:45:59 2018 -0700"
      },
      "committer": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Thu Apr 26 10:27:30 2018 -0700"
      },
      "message": "Allow using reserved package IDs\n\nPre-O, the platform treats negative resource IDs [those with\na package ID of 0x80 or higher] as invalid.  In order to work\naround this limitation, we allow the use of traditionally\nreserved resource IDs [those between 0x02 and 0x7E].\n\nBug: 78041707\nTest: ./out/host/linux-x86/nativetest64/aapt2_tests/aapt2_tests\nTest: ./out/host/linux-x86/nativetest/libandroidfw_tests/libandroidfw_tests\nTest: Manual. Create a feature split with a package ID of 0x7E and see it runs and can reference base resources.\n\nChange-Id: I3d9782cc05d3a55e1a2467bf39566788847e1160\n"
    },
    {
      "commit": "4cb8826c287286cab1d89a4f44fa117c31391e43",
      "tree": "b6c31a6583d8545307f9b48a6bd245d08d882dfc",
      "parents": [
        "c8f462eaa62bd80870b0b1e4fc9692497a443e31",
        "e31a4421400ee75478658b34d8260e5cb195ea9a"
      ],
      "author": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Mon Apr 23 20:30:05 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Apr 23 20:30:05 2018 -0700"
      },
      "message": "Merge \"Allow overriding the compile SDK\" into pi-dev am: fd5166ddac\nam: e31a442140\n\nChange-Id: Iaaaee5337ba37a24d409c2e453995e314c562bce\n"
    },
    {
      "commit": "fd5166ddac5fceb3942cef9f95ff2920eac1ac84",
      "tree": "a656bc5aa6b53f3e83d3a2e23af718f1301b29fd",
      "parents": [
        "ab416a115a9b736270fcefbde7b21dcc34f2dae1",
        "9f6dec11e6fe003609f4c5908d3a965b1f196c47"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 24 03:14:04 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 24 03:14:04 2018 +0000"
      },
      "message": "Merge \"Allow overriding the compile SDK\" into pi-dev"
    },
    {
      "commit": "9f6dec11e6fe003609f4c5908d3a965b1f196c47",
      "tree": "7cc213656e21060287a4b194e0efe8070074409a",
      "parents": [
        "dbdf5df96e2b8d97de89720da256c8296dbbec4f"
      ],
      "author": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Fri Apr 20 12:29:29 2018 -0700"
      },
      "committer": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Fri Apr 20 22:41:52 2018 +0000"
      },
      "message": "Allow overriding the compile SDK\n\nWe automatically pull the compile SDK from the platform. But,\nin certain circumstances the platform\u0027s SDK codename is\nincorrect. Allow the name to be overridden on the command line.\n\nChange-Id: I398f1b00b29db42e4ce202b94cda483c98971a14\nFixes: 78324052\nTest: ./out/host/linux-x86/nativetest64/aapt2_tests/aapt2_tests\n"
    },
    {
      "commit": "07c0fc37fb889c07a7571cb67d2144103a218c43",
      "tree": "e7e879ee2042d96cd2a72bb65537e8494f9d27fd",
      "parents": [
        "85767df8cffd919d1ff0d78683424c5df370472a",
        "4dcb9b082b37a9bf6ae77b515aaff103b9d3e3a3"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Fri Apr 20 12:39:11 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Apr 20 12:39:11 2018 -0700"
      },
      "message": "Merge \"Fix fraction and dimension type in Resource.proto\" into pi-dev am: 1a12311433\nam: 4dcb9b082b\n\nChange-Id: I5068164f7904d21b3de56be20c37092faac751be\n"
    },
    {
      "commit": "1a12311433a0ebce2d0c383ac886a257ae32e3d6",
      "tree": "7ca0d9bbe657804e0c5ca8f273f2085a5e10bebe",
      "parents": [
        "686fab14645298ca04f23f0e10a64e839e32703f",
        "8b74927e9ecf4d14898d09c168d0d38f164a92bc"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 20 18:59:11 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 20 18:59:11 2018 +0000"
      },
      "message": "Merge \"Fix fraction and dimension type in Resource.proto\" into pi-dev"
    },
    {
      "commit": "8b74927e9ecf4d14898d09c168d0d38f164a92bc",
      "tree": "c2f69546b0a90e38264a944a4b4adcbd58979276",
      "parents": [
        "1074688a265db2d44b244f2f57b9ac081f825e99"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Wed Apr 18 18:52:47 2018 -0700"
      },
      "committer": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Fri Apr 20 10:46:47 2018 -0700"
      },
      "message": "Fix fraction and dimension type in Resource.proto\n\nChange fraction and dimnesion type from float to uint32\n\nChange-Id: I641dc42cf7b6bdd8bc16c8cdbd573ec3281a084a\nFixes: 78182701\nTest: aapt2_tests\n"
    },
    {
      "commit": "027453d6fb3581cee81f6b3c49c3ec653c0a82f7",
      "tree": "9f08a8f8e1daca18c2a31d80296f4ceadc560e63",
      "parents": [
        "ee3558584b66b001c8ca1258225bbb5dea33f7b7",
        "e9bbefa7dc44a666c0cba72fdbd7825cc1f89dac"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Apr 19 15:20:51 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 19 15:20:51 2018 -0700"
      },
      "message": "Merge \"AAPT2: Support id reference chaining from AAPT\" into pi-dev am: 247ecfa498\nam: e9bbefa7dc\n\nChange-Id: Ic40b9e08352e561e21284d72592860b868f6edc1\n"
    },
    {
      "commit": "247ecfa4989c4a2a1096a9960831286cca7eaab5",
      "tree": "a7a3f9bc9f52db8d468641a86959ee089c82e6c0",
      "parents": [
        "bb35e9e0e978ab6ff518462e9483dcb24232cf7b",
        "9efbbef2e060cd5e05f5b652ba5c7aaf687f64d6"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Apr 19 21:35:59 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 21:35:59 2018 +0000"
      },
      "message": "Merge \"AAPT2: Support id reference chaining from AAPT\" into pi-dev"
    },
    {
      "commit": "cf05869e24bdda8649bc3350d00b1e2536232d6d",
      "tree": "9c9261f84d038f57e89a408afd4a4e12ff6e985c",
      "parents": [
        "f1ebb6fd24ba2edeaa920105f23ca3ca7fd828de",
        "8751b6ee4ef9d2a35789535d9158ec1b4cb3a8c9"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Apr 18 15:49:17 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Apr 18 15:49:17 2018 -0700"
      },
      "message": "Merge \"AAPT2: Modified StringPool uniqueness detection #2\" into pi-dev am: b2182c412c\nam: 8751b6ee4e\n\nChange-Id: I36e19f3e0013bdcaa8fc2ce110a78cc544168ef6\n"
    },
    {
      "commit": "4602926f83d7aa3b52b190122955b5b0d6d8089d",
      "tree": "4b483cd443fb3b1b9f7eb03d4d326c22da213998",
      "parents": [
        "34a0b18a5c730e4fa16e27c63ed0cd79a6df188e"
      ],
      "author": {
        "name": "y",
        "email": "rtmitchell@google.com",
        "time": "Mon Apr 16 18:13:14 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Apr 18 20:58:50 2018 +0000"
      },
      "message": "AAPT2: Modified StringPool uniqueness detection #2\n\nb/77862560 detected that when converting an apk to binary using aapt2,\nall resource ids of attributes that have been replaced with resource\nidentifiers become set to the identifier of the first attribute. This is\nbecause the attribute names are all empty because the names are not necessary\nsince the resource ids are present. The empty attribute names all map to\nthe same string pool reference and cause all the ids to be the first\nempty string into the string pool.\n\nThe ag/3897499 approach to fix the specified bug was extremely inefficient\nand caused hour long builds. This change takes advantage of the multimap\ndata structure to do lookups efficiently.\n\nBug: 77862560\nTest: Converted apk in listed bug from proto to binary and observed\ncorrect resource ids and correct badging. Also built the Android tree to\ncheck for regressions in build time.\n\nChange-Id: I27a9ee4ffbed8b9ff6f238ad315cdf87b588947c\n"
    },
    {
      "commit": "9efbbef2e060cd5e05f5b652ba5c7aaf687f64d6",
      "tree": "a906595eedebc28b14a4e86e135b225eb1d5d79b",
      "parents": [
        "34a0b18a5c730e4fa16e27c63ed0cd79a6df188e"
      ],
      "author": {
        "name": "y",
        "email": "rtmitchell@google.com",
        "time": "Wed Apr 18 11:29:09 2018 -0700"
      },
      "committer": {
        "name": "y",
        "email": "rtmitchell@google.com",
        "time": "Wed Apr 18 11:46:53 2018 -0700"
      },
      "message": "AAPT2: Support id reference chaining from AAPT\n\nAAPT would allow for ids to be declared in the form:\n\n\u003citem name\u003d\"name\" type\u003d\"id\u003e@id/other\u003c/item\u003e\n\n@id/name should hold a reference to @id/other. When\ngetResources().getValue() is called on R.id.name with resolveRefs\nenabled, the resuling reference should be R.id.other.\n\nBug: 69445910\nTest: Created tests for correct parsing of id references and correct\nresolving of deep references\n\nChange-Id: Id1feb37b2565c213dc6a19b4c401906260d7fc14\n"
    },
    {
      "commit": "1056019c2dcdce86d3ca78e96871363375bdc926",
      "tree": "971d5305f298ad93075efe458cabec673319ace1",
      "parents": [
        "bf813dbdb2ddac50c59995e1cb610efb12c39179"
      ],
      "author": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Fri Apr 13 11:56:35 2018 +0100"
      },
      "committer": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Wed Apr 18 14:27:52 2018 +0100"
      },
      "message": "AAPT2: include package name in styleable children\n\nWhen writing partial R files, also include the package of the styleable\nchild:\n\u003cdeclare-styleable name\u003d\"ds1\"\u003e\n    \u003cattr name\u003d\"font\"/\u003e\n    \u003cattr name\u003d\"android:font\"/\u003e\n    \u003cattr name\u003d\"tools:font\"/\u003e\n    \u003cattr name\u003d\"com.foo.bar:font\"/\u003e\n\u003c/declare-styleable\u003e\nwill produce:\ndefault int styleable ds1_font\ndefault int styleable ds1_android_font\ndefault int styleable ds1_tools_font\ndefault int styleable ds1_com_foo_bar_font\n\nBug: 73927419\nTest: manual, see description\nChange-Id: Ica493408c7c6d9e7fae2b693c96fbc20a723ce08\n"
    },
    {
      "commit": "b5e66d85169f29145708e35bafc670d15029ae62",
      "tree": "bdd47db2dd436406823dfb4686c09e1b993c1a84",
      "parents": [
        "6f9ffd3b7481ad927408e2d7928f26f17a8f8542",
        "312a3ff350f7bb2f8f0ed029127f7af67a693821"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Mon Apr 16 13:02:15 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Apr 16 13:02:15 2018 -0700"
      },
      "message": "Merge \"Revert \"AAPT: Modified StringPool uniqueness detection\"\" into pi-dev am: 61ac57283f\nam: 312a3ff350\n\nChange-Id: I956eefccec0613ed3b6caf0ec665c8079b6a41bf\n"
    },
    {
      "commit": "61ac57283fecb20d4287b81b293a2579d0386c15",
      "tree": "7e775dd544f0beaa76474c3af1712e6e1f371bee",
      "parents": [
        "116e05cbba0f851c0d5c0da3e1c664444ea5b6f2",
        "61ffd4029032862c871c98ac04f12d4141d59383"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Mon Apr 16 19:28:43 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 19:28:43 2018 +0000"
      },
      "message": "Merge \"Revert \"AAPT: Modified StringPool uniqueness detection\"\" into pi-dev"
    },
    {
      "commit": "61ffd4029032862c871c98ac04f12d4141d59383",
      "tree": "b49449dd559ce7c717750d9da9684fdfce5ce481",
      "parents": [
        "35ecb89a8aa68f24d2e991df5bb9964ad15075dc"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Mon Apr 16 18:21:14 2018 +0000"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Mon Apr 16 18:21:14 2018 +0000"
      },
      "message": "Revert \"AAPT: Modified StringPool uniqueness detection\"\n\nThis reverts commit 35ecb89a8aa68f24d2e991df5bb9964ad15075dc.\n\nReason for revert: \u003cLong make duration (infinite loop)\u003e\n\nChange-Id: I10d1cf53ca3054d40e23b06368ebaff6af69beab\n"
    },
    {
      "commit": "ac7c9dda2c5584ce30c91fa4bc68e73e767840b1",
      "tree": "0cc532b40f5d44297cb951ca8e27ed6ea842b953",
      "parents": [
        "c5e6a080bbf6abb9c707856f876ea2cc2b10a87a",
        "789ffb45c56eae5ce5b738cd6c0bc7ca40649598"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Mon Apr 16 10:47:31 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Apr 16 10:47:31 2018 -0700"
      },
      "message": "Merge \"AAPT: Modified StringPool uniqueness detection\" into pi-dev am: 356feb53b6\nam: 789ffb45c5\n\nChange-Id: I577bd1b6a7de0a81fbb5f23a0f31e3f5f5352d4b\n"
    },
    {
      "commit": "356feb53b6b16c08e9adf37243e755f03c4f947e",
      "tree": "8de7b38f8647c344e1d22e492e0924ec04a28e7c",
      "parents": [
        "1c70ecb455069b2497ab2f95ce29c9686afc9c21",
        "35ecb89a8aa68f24d2e991df5bb9964ad15075dc"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Mon Apr 16 17:15:53 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 17:15:53 2018 +0000"
      },
      "message": "Merge \"AAPT: Modified StringPool uniqueness detection\" into pi-dev"
    },
    {
      "commit": "605007578e3ae41d448b899b9c95a07ab929bb0d",
      "tree": "bc1e98b906de0034e58d97ded79ff525aeaa909e",
      "parents": [
        "60027038a14cb555c2d516e3b4f8cb2bc371cd2e",
        "fc89e7f17a1cb68402f0582c1ff873bc0c487d32"
      ],
      "author": {
        "name": "Wale Ogunwale",
        "email": "ogunwale@google.com",
        "time": "Sat Apr 14 16:04:49 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Apr 14 16:04:49 2018 -0700"
      },
      "message": "Finalizing P SDK am: 3da5f3b2dd\nam: fc89e7f17a\n\nChange-Id: I85aaa6fb6de6cc76a2ac004c7e575737537401fc\n"
    },
    {
      "commit": "35ecb89a8aa68f24d2e991df5bb9964ad15075dc",
      "tree": "4a6694c3430fea5d6ae5b0bd3680aab24a303232",
      "parents": [
        "a668c663019dcabe62d1f667ec5402806a22b0a8"
      ],
      "author": {
        "name": "y",
        "email": "rtmitchell@google.com",
        "time": "Fri Apr 13 11:25:12 2018 -0700"
      },
      "committer": {
        "name": "y",
        "email": "rtmitchell@google.com",
        "time": "Fri Apr 13 16:15:42 2018 -0700"
      },
      "message": "AAPT: Modified StringPool uniqueness detection\n\nb/77862560 detected that when converting an apk to binary using aapt2,\nall resource ids of attributes that have been replaced with resource\nidentifiers become set to the identifier of the first attribute. This is\nbecause the attribute names are all empty because the names are not necessary\nsince the resource ids are present. The empty attribute names all map to\nthe same string pool reference and cause all the ids to be the first\nempty string into the string pool.\n\nBug: 77862560\nTest: Converted apk in listed bug from proto to binary and observed\ncorrect resource ids and correct badging.\n\nChange-Id: I635c13cd1ad7a395fe40a57198cfe5ec91602d01\n"
    },
    {
      "commit": "3da5f3b2ddf35ed436cd9a0c6a349c59c97f8d78",
      "tree": "df1d8625e3297350e40d450835c2e24a8cb5ca28",
      "parents": [
        "79634c7025f66e26444df12c12db2ebbf2d81bfe"
      ],
      "author": {
        "name": "Wale Ogunwale",
        "email": "ogunwale@google.com",
        "time": "Wed Apr 11 15:12:31 2018 -0700"
      },
      "committer": {
        "name": "Wale Ogunwale",
        "email": "ogunwale@google.com",
        "time": "Thu Apr 12 15:26:31 2018 -0700"
      },
      "message": "Finalizing P SDK\n\nBug: 77588754\nTest: builds\nChange-Id: Ic06cad790a3dc53d012a7c43dfac911fc6dc61e7\n"
    },
    {
      "commit": "a086da2cd0bd938142e461c8bb46e30fc3474882",
      "tree": "740f2ad0311b6465041f20d2271844398c6386ab",
      "parents": [
        "f8817064c1a07fcd41110034f56042e5fa5725b4",
        "68dc7ca5689b920c97db566387b1423384bb46e6"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Apr 12 11:51:16 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 12 11:51:16 2018 -0700"
      },
      "message": "Merge \"AAPT: Multiple period legacy support and errors\" into pi-dev am: f845891031\nam: 68dc7ca568\n\nChange-Id: I9da94ea0e84ff3caf28597b1038ed6e4ac158280\n"
    },
    {
      "commit": "d6b83299a6d636c67fee8bd4ae07555a9ae2269a",
      "tree": "3ba4327af7207a6a57c2375f87cdda1804651d08",
      "parents": [
        "65317bac02e993d1313a1958a8497ff5f2a2ecd5"
      ],
      "author": {
        "name": "y",
        "email": "rtmitchell@google.com",
        "time": "Wed Apr 11 09:54:56 2018 -0700"
      },
      "committer": {
        "name": "y",
        "email": "rtmitchell@google.com",
        "time": "Wed Apr 11 15:52:43 2018 -0700"
      },
      "message": "AAPT: Multiple period legacy support and errors\n\nAAPT would accept files with multiple periods in the filename as input.\nThis lead to cases explained in b/74999475. This change adds error\nmessages for files with multiple periods unless the legacy flag is\npresent. With the legacy flag present, AAPT2 will behave like AAPT\nrather than throwing an error.\n\nTest: Added tests to aapt2_tests\nBug: 73071563\nBug: 74999475\nChange-Id: I28dfceeea7b39f8e4b9e6671e0fc8793cf388f52\n"
    },
    {
      "commit": "57ffac7f1002f39a3f029a103224512a261a9447",
      "tree": "f9f6d98cb19576d29e845b54128805819b846362",
      "parents": [
        "c66c34bbcf9cfb6089d33919fcaa6ecefa1bbcd4",
        "d3c5fb64e3c7ecdb7def3c278588d49243bd2e50"
      ],
      "author": {
        "name": "Mohamed Heikal",
        "email": "mheikal@google.com",
        "time": "Mon Apr 09 14:57:04 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 09 14:57:04 2018 +0000"
      },
      "message": "Merge \"AAPT2: Adds config support for manipulating resources\""
    },
    {
      "commit": "d3c5fb64e3c7ecdb7def3c278588d49243bd2e50",
      "tree": "e2a188c7d5dd61ba19c49a51e9af31cf55e34496",
      "parents": [
        "f42a1080d51887fdffcec1da3de3cdd9ab8ab93c"
      ],
      "author": {
        "name": "Mohamed Heikal",
        "email": "mheikal@google.com",
        "time": "Fri Jan 12 11:37:26 2018 -0500"
      },
      "committer": {
        "name": "Mohamed Heikal",
        "email": "mheikal@google.com",
        "time": "Fri Apr 06 15:03:23 2018 -0400"
      },
      "message": "AAPT2: Adds config support for manipulating resources\n\naapt2 optimise command can now take a resources config file as an\nargument. The config has the name of each resource and a list of\ndirectives. Currently implemented is the \"remove\" directive which marks\nthe resource for deletion.\n\nThe obfuscation whitelist code and argument name was changed to prevent\nconfusion.\n\nTest: make aapt2_tests\nBug: b/27523794\n\nChange-Id: I2d8e1985e5ea2286131c25231e2c411f3d9610ce\n"
    },
    {
      "commit": "6a23deef5d6d9f9fae40dbe1775f5cf5556421fc",
      "tree": "ab7d54a79f90754a9f49f4cb98efb9eba0231c59",
      "parents": [
        "1d513fc5d04ce6bd27953fe5854c3cb3234f9a99",
        "9beaa9cfe3bd8c7c59eed053ff6ca18951c34a86"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Apr 05 00:14:38 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 05 00:14:38 2018 +0000"
      },
      "message": "Merge \"Changed AAPT2 to abide by AAPT resource whitespace triming.\" into pi-dev"
    },
    {
      "commit": "498baa82e645619ddf7e79bd3930ff519ad4526d",
      "tree": "c1ce506fcc27673d92b321277c991479ccc23973",
      "parents": [
        "49668cd130b57e3ba2f98c7613b215773b4246fa",
        "e5b38a676ce0fe6ee08635a7167ee5d76a225a06"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Apr 04 21:21:28 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 04 21:21:28 2018 +0000"
      },
      "message": "Merge \"Added --debug-mode flag to AAPT2\" into pi-dev"
    },
    {
      "commit": "70414f22dcab1d4ce3c2e9d981f3256a9ba62515",
      "tree": "4f16c1c60a077ba21af55e0df26d791143afa9cf",
      "parents": [
        "a926126a8bc89c1a6bd7fa8a76332476eba0d954"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Mon Mar 26 11:05:31 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Apr 04 15:54:43 2018 +0000"
      },
      "message": "Check the size of the strings in the StringPool before flattening.\n\nTest: Tested for normal functionality when string does not exceed\nmaximum length and tests for detection of string that is too lonhg for\nUTF8i\nBug: b/74176037\n\nChange-Id: Ic71d3671a069e7012e8ca107e79e071499eebbf6\n(cherry picked from commit a15c2a8957b9883cb293fdacaeabd7f2e037a0a5)\n"
    },
    {
      "commit": "9beaa9cfe3bd8c7c59eed053ff6ca18951c34a86",
      "tree": "0a14c76b75c770328fadb68b75d83751121637e7",
      "parents": [
        "a926126a8bc89c1a6bd7fa8a76332476eba0d954"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Mar 28 18:22:57 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Apr 04 15:54:05 2018 +0000"
      },
      "message": "Changed AAPT2 to abide by AAPT resource whitespace triming.\n\nBug: b/74331008\nTest: Created tests in ResourceParser_test.cpp\nChange-Id: Id7b387692b795774cd77452ca8cf06a8447bf3be\n(cherry picked from commit a04880771254f5169a1fe460ff40b565d9dceb0d)\n"
    },
    {
      "commit": "e5b38a676ce0fe6ee08635a7167ee5d76a225a06",
      "tree": "ca4c69d4f3f9c60225e9b28ff4572708a249b2b2",
      "parents": [
        "a926126a8bc89c1a6bd7fa8a76332476eba0d954"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Mar 23 13:35:00 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Apr 04 15:51:53 2018 +0000"
      },
      "message": "Added --debug-mode flag to AAPT2\n\nBug: 74968793\nTest: Tested for correct debuggable attribute presense with and without\nflag\n\nChange-Id: I0148d1caba62db8cf258926f1d9e87a849aa283f\n(cherry picked from commit 444f9bb6a18ff34b69cba504c8658b7013eaa53a)\n"
    },
    {
      "commit": "68c02569ef6a2dea1852e07a309f3c328044f890",
      "tree": "ad7d48069d5773ddeb38572dd610df6ea38c278f",
      "parents": [
        "1f481277cdb407bc91d45aed06606f75ad972e56",
        "a15c2a8957b9883cb293fdacaeabd7f2e037a0a5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 30 00:15:39 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 30 00:15:39 2018 +0000"
      },
      "message": "Merge \"Check the size of the strings in the StringPool before flattening.\""
    },
    {
      "commit": "a15c2a8957b9883cb293fdacaeabd7f2e037a0a5",
      "tree": "0a133e8bfeb6a4d2f55be12a76a427e01f1cd7c9",
      "parents": [
        "3730b6bab6db741170471c2bd2755e3b31293a93"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Mon Mar 26 11:05:31 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Mar 29 15:42:13 2018 -0700"
      },
      "message": "Check the size of the strings in the StringPool before flattening.\n\nTest: Tested for normal functionality when string does not exceed\nmaximum length and tests for detection of string that is too lonhg for\nUTF8i\nBug: b/74176037\n\nChange-Id: Ic71d3671a069e7012e8ca107e79e071499eebbf6\n"
    },
    {
      "commit": "a04880771254f5169a1fe460ff40b565d9dceb0d",
      "tree": "70718679737950ac98a9798a7b26ac2d5538ed9b",
      "parents": [
        "f4c660e38d96d895e2897d2d8112086f9ba6ee69"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Mar 28 18:22:57 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Mar 29 09:05:40 2018 -0700"
      },
      "message": "Changed AAPT2 to abide by AAPT resource whitespace triming.\n\nBug: b/74331008\nTest: Created tests in ResourceParser_test.cpp\nChange-Id: Id7b387692b795774cd77452ca8cf06a8447bf3be\n"
    },
    {
      "commit": "97ffbfe26695e6ba8321fc00b7069af9c6389378",
      "tree": "ce11a6a75abce632363f0c41be7ac7db4f25cfbe",
      "parents": [
        "bd626aa9cb18a4e806db74c57cc8eaddd0c3ec26",
        "444f9bb6a18ff34b69cba504c8658b7013eaa53a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 28 17:46:19 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 28 17:46:19 2018 +0000"
      },
      "message": "Merge \"Added --debug-mode flag to AAPT2\""
    },
    {
      "commit": "c7ac3a1f4dbdb79171e274661d1521c704f1e063",
      "tree": "0b1f1649d52455f4e5609d48e714ed9c35cce89d",
      "parents": [
        "6d976f82b79c856051a80799cc3d547408a9c868"
      ],
      "author": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Tue Mar 27 14:46:52 2018 +0100"
      },
      "committer": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Tue Mar 27 18:29:36 2018 +0100"
      },
      "message": "AAPT2: add flag for forcing visibility level\n\nTest: manual\nBug: 72735798\nChange-Id: I29480e66384dd2da27e17ab454ac1fe8a033ee3e\n"
    },
    {
      "commit": "444f9bb6a18ff34b69cba504c8658b7013eaa53a",
      "tree": "71af93c737f75904da9fb0e49d254a91581c40e6",
      "parents": [
        "3730b6bab6db741170471c2bd2755e3b31293a93"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Mar 23 13:35:00 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Mar 23 13:35:00 2018 -0700"
      },
      "message": "Added --debug-mode flag to AAPT2\n\nBug: 74968793\nTest: Tested for correct debuggable attribute presense with and without\nflag\n\nChange-Id: I0148d1caba62db8cf258926f1d9e87a849aa283f\n"
    },
    {
      "commit": "34b10c529a1b90ef2a4e56f3ebf611c6aa41582f",
      "tree": "8b0da7c1cd9b2484a83250b3081586453e589a48",
      "parents": [
        "d1457eea49a423d21fe398d921c216d039fd4ec4",
        "6a43bd634edce1e56c9f2193fd0fe3910eb1f03a"
      ],
      "author": {
        "name": "Cory Smith",
        "email": "corysmith@google.com",
        "time": "Sun Mar 18 23:29:45 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sun Mar 18 23:29:45 2018 +0000"
      },
      "message": "Merge \"Writes the resource table proto out when writing a LoadedApk.\" into pi-dev am: 449be81065\nam: 6a43bd634e\n\nChange-Id: I3e84028a1e74b28d2804d66971cf4610874ae349\n"
    },
    {
      "commit": "f7db43ee354a9cbda937e642952d8b3ac4ca66c4",
      "tree": "15bebe8d955e3a66bee671a1a07f3b75780add36",
      "parents": [
        "6b4e6a17e93198ffedfb6a447ff49364da9307f3"
      ],
      "author": {
        "name": "corysmith@google.com",
        "email": "corysmith@google.com",
        "time": "Tue Mar 13 12:04:10 2018 -0400"
      },
      "committer": {
        "name": "corysmith@google.com",
        "email": "corysmith@google.com",
        "time": "Sun Mar 18 14:30:13 2018 -0400"
      },
      "message": "Writes the resource table proto out when writing a LoadedApk.\n\nSmall fixes for consistancy to use constants instead of strings.\n\nChange-Id: I33439c376e1634b7957730ce16e241b0f5bb92f8\nFixes: 74594854\nTest: Manual, tested against blaze test //javatests/com/google/devtools/build/android:UnitTests\n"
    },
    {
      "commit": "481f027ddc3e0ff0e1838a9375c1286e8ad70d70",
      "tree": "7df70b9bb3a5f42917ee8ea9bfa7bee8e6616ad2",
      "parents": [
        "f1a183b0a0e027abc4d0dc8286392c0620ccbe73"
      ],
      "author": {
        "name": "Chris Warrington",
        "email": "cmw@google.com",
        "time": "Tue Feb 06 14:03:39 2018 +0000"
      },
      "committer": {
        "name": "Chris Warrington",
        "email": "cmw@google.com",
        "time": "Wed Mar 14 15:05:39 2018 +0000"
      },
      "message": "AAPT2: Automatic Static Library Namespacing.\n\nIntroduces a link flag --auto-namespace-static-lib for use when linking\nstatic libraries.\n\nWhen linking a static library with compiled sources that have references\nto resources in provided libraries without an explicit package name,\nthe flag enables automatic inference of the package.\n\nIf a resource is present in the package that is being compiled, that is\nused, otherwise the reference is rewritten to the highest precedence\nresource with matching name and type.\n\nTest: m out/host/linux-x86/nativetest64/aapt2_tests/aapt2_tests \u0026\u0026 \\\n      $ANDROID_HOST_OUT/nativetest64/aapt2_tests/aapt2_tests\nTest: m frameworks/base/tools/aapt2/integration-tests\nChange-Id: I6c6017e054654d1f60782d0a428a7a2a47f8952b\n"
    },
    {
      "commit": "e4cd7271aa27357cf58315e1a0027e75deaae903",
      "tree": "1b7341b2caa839d08c7b470b815b67e621b0ed30",
      "parents": [
        "649366f9a1b89bb6aa37601cd8b81cc4e0d339a0",
        "ed972116bb8961c037ccae850f7ef92f27b68447"
      ],
      "author": {
        "name": "Anton Hansson",
        "email": "hansson@google.com",
        "time": "Wed Mar 07 14:10:48 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Mar 07 14:10:48 2018 +0000"
      },
      "message": "Merge \"frameworks/base: Set LOCAL_SDK_VERSION where possible.\" into pi-dev am: d740e43bf7\nam: ed972116bb\n\nChange-Id: I72ce7f1c6242ddf9a5b36075761f3f1f1138cea1\n"
    },
    {
      "commit": "d137c872cdc5e157c0ff65076689f7c4552a9013",
      "tree": "3c2dffe6115c25dc65faf975c7d3bc12f397bde4",
      "parents": [
        "aa79f03ca6c4c5a3a262aeaf2b608ffd4807ab13"
      ],
      "author": {
        "name": "Anton Hansson",
        "email": "hansson@google.com",
        "time": "Fri Feb 23 12:57:51 2018 +0000"
      },
      "committer": {
        "name": "Anton Hansson",
        "email": "hansson@google.com",
        "time": "Wed Mar 07 11:42:04 2018 +0000"
      },
      "message": "frameworks/base: Set LOCAL_SDK_VERSION where possible.\n\nThis change sets LOCAL_SDK_VERSION for all packages where\nthis is possible without breaking the build, and\nLOCAL_PRIVATE_PLATFORM_APIS :\u003d true otherwise.\n\nSetting one of these two will be made required soon, and this\nis a change in preparation for that. Not setting LOCAL_SDK_VERSION\nmakes the app implicitly depend on the bootclasspath, which is\noften not required. This change effectively makes depending on\nprivate apis opt-in rather than opt-out.\n\nTest: make relevant packages\nBug: 73535841\nExempt-From-Owner-Approval: Global cleanup\nChange-Id: I26458e41ecb84de91ac9a356a5d4bafb44f463c1\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": "6f34e0dff676dab60d4f31bc45a0af1460648de3",
      "tree": "024807f8a1d7f053500c9a7d87673bdec056f3e1",
      "parents": [
        "a597260ba2bd75851c38ec300b68d973025e2b16"
      ],
      "author": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Mon Mar 05 14:19:43 2018 +0000"
      },
      "committer": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Mon Mar 05 14:21:36 2018 +0000"
      },
      "message": "AAPT2: add flag for not compressing resources\n\nOption and behaviour was already implemented, just missing the flag.\n\nTest: N/A\nBug: 70118728\nChange-Id: Ib1902cf547b4961395e6c6c99e02f32556981f48\n"
    },
    {
      "commit": "f3c951fd528ae240ef149b815d644ddef3a1c361",
      "tree": "ab7a5714e8707cf37b65a472d4fa3702995a8067",
      "parents": [
        "51aed1c8b9f395cdd2ac7b0aa8ed7a6bf183d214",
        "a95e841846c3add37cab0ca228e1e1a4eb0a1455"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 02 22:38:46 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 02 22:38:46 2018 +0000"
      },
      "message": "Merge \"Change ownership of AAPT2 and libandroidfw\""
    },
    {
      "commit": "51aed1c8b9f395cdd2ac7b0aa8ed7a6bf183d214",
      "tree": "b7230ca97902f54105351830ba6b9cdd978d0659",
      "parents": [
        "a3767f0747c5b64068faa54a86f3cdd8550f8927",
        "c9a2926e661df75ba2517da166bf3b561fd678ec"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 02 22:36:22 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 02 22:36:22 2018 +0000"
      },
      "message": "Merge \"AAPT2: Allow to inline XML into custom attribute\""
    },
    {
      "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": "a95e841846c3add37cab0ca228e1e1a4eb0a1455",
      "tree": "1f9694d068249d7dc4c1b9a0b81db0f3bb4f6f26",
      "parents": [
        "8e4419a087a6112d1a656636175fe765d0cd1916"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 02 12:10:25 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 02 12:11:03 2018 -0800"
      },
      "message": "Change ownership of AAPT2 and libandroidfw\n\ntoddke@ is now the new owner of these projects.\n\nTest: none\nChange-Id: Ie92b020e0ba063f48ce8a76ebaef768fe0d554f1\n"
    },
    {
      "commit": "c9a2926e661df75ba2517da166bf3b561fd678ec",
      "tree": "f0f074fc40f9d17d06352930ed7f6938e30e59f9",
      "parents": [
        "b437f30f286131cc3a01bca7b56ca7dcab37cf74"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 01 20:04:00 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 01 20:04:00 2018 -0800"
      },
      "message": "AAPT2: Allow to inline XML into custom attribute\n\nPreviously, doing something like\n\n\u003cparent xmlns:app\u003d\"http://schemas.android.com/apk/res-auto\"\n        xmlns:aapt\u003d\"http://schemas.android.com/aapt\"\u003e\n    \u003caapt:attr name\u003d\"app:foo\"\u003e\n        \u003cchild /\u003e\n    \u003c/aapt:attr\u003e\n\u003c/parent\u003e\n\nwould result in something like:\n\n\u003cparent xmlns:app\u003d\"http://schemas.android.com/apk/res-auto\"\n        xmlns:aapt\u003d\"http://schemas.android.com/aapt\"\n        foo\u003d\"@generated_name\" /\u003e\n\nwhile it should result in:\n\n\u003cparent xmlns:app\u003d\"http://schemas.android.com/apk/res-auto\"\n        xmlns:aapt\u003d\"http://schemas.android.com/aapt\"\n        app:foo\u003d\"@generated_name\" /\u003e\n\nBug: 36809755\nTest: make aapt2_tests\nChange-Id: I72ea4b402e196ca05b53b788e4768a265190a0dc\n"
    },
    {
      "commit": "34a1687a67cfc08dd2baca6e92180e0930006c6f",
      "tree": "5f2d9f08a58c44faab6377bf02dc412dbf18daf3",
      "parents": [
        "c2c1d7094b9b4d22d99c62df234054b37548092b"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 23 16:18:10 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 01 11:18:23 2018 -0800"
      },
      "message": "AAPT2: Remove resources that define locales but no default values.\n\nAccording to our docs:\nhttps://developer.android.com/guide/topics/resources/localization.html#defaults-r-important\n\nSome resources *require* that there is a default definition. So far,\nthe pain is felt when doing translations for strings that have been\nrenamed, etc.\n\nThis CL strips out resources that don\u0027t have a default value and define\na resource for a locale. This is conservative, but should be expanded\nto other configuration properties moving forward.\n\nBug: 36572857\nTest: make aapt2_tests\nChange-Id: Ife94a1f8a2ee221f8532ffa856541a9c8c4e7143\n"
    },
    {
      "commit": "2eed52ecc0c2fa3e96530e4b5556eaa82f7c2dfc",
      "tree": "4e0a49770f684a2ca823d958c0f1a2b3adabcab9",
      "parents": [
        "e1094a2e232277a719025aa5c97c492502c34f5b"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 21 15:55:58 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 27 11:39:10 2018 -0800"
      },
      "message": "AAPT2: Fix styled string whitespace processing\n\nChange styled string whitespace processing to be like AAPT\u0027s was.\n\nMain changes:\n- whitespace around tags is preserved.\n- tags start exactly where they are supposed to, not off by one.\n\nBug: 72406283\nTest: make aapt2_tests\nChange-Id: I4d12728c493efd8c978e2e3d2718b56534ff52ef\n"
    },
    {
      "commit": "e1094a2e232277a719025aa5c97c492502c34f5b",
      "tree": "8b3c1a4edfcac8198689716386d93da17e93be6b",
      "parents": [
        "3e946e9309e62f6d0405ded1e96a362cf3d9dbde"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Feb 22 17:27:17 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 23 14:59:37 2018 -0800"
      },
      "message": "AAPT2: Fix issue with String flattening in XmlFlattener\n\nCompiled Strings (previously not encountered) in an XML resource\nwere using a different StringPool than the one being referred to\nin the XmlFlattener, and so the indices were all wrong.\n\nBug: 72700446\nTest: make aapt2_tests\nChange-Id: I663924f8fad50fd4c69cfa196318dc63fb641a25\n"
    },
    {
      "commit": "3ac786d2177388cfa7adf1dfd3f04f87e8a61f5a",
      "tree": "f0390f717c35cdec4f47dcc64a56419ccbd96e35",
      "parents": [
        "29ff057e1a2d7d3421d2d551818b36cc44c302cb",
        "d31bc123a06d2ffc2ca1b76a591a07865744ae12"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Feb 19 10:42:35 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 19 10:42:35 2018 +0000"
      },
      "message": "Merge \"AAPT2: normalize Manifest java identifiers.\""
    },
    {
      "commit": "983bacb959f45fbe098ab99ddcef40ccc9de4652",
      "tree": "3c89096c8a71ba8f0e7b37cecbaa2c50cc157282",
      "parents": [
        "3d9ae24567134a454132581908d182a51c242c5d",
        "a65bbdf43c2c29222e4067e97cc1ec1137fea516"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Feb 17 01:58:18 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 17 01:58:18 2018 +0000"
      },
      "message": "Merge \"AAPT2: Ensure output formats of files are correctly set\""
    },
    {
      "commit": "a65bbdf43c2c29222e4067e97cc1ec1137fea516",
      "tree": "5d86bfd1dde9364897dd09c4d79006a4655849fc",
      "parents": [
        "bbf429795d0558797e7ac8d1024fa5c16552e96c"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Feb 15 12:39:44 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Feb 15 16:44:15 2018 -0800"
      },
      "message": "AAPT2: Ensure output formats of files are correctly set\n\nWhen compiling straight to proto from source, the file types\nwere not set correctly (binary XML or proto XML).\n\nBug: 73406447\nTest: manual\nChange-Id: I68c1881a00a2ec1ad58f7ec485af2543d262d076\n"
    },
    {
      "commit": "f74309f5e213d57dc9c53bd4d9310bc1eeee4a96",
      "tree": "d8490d29b8c23040dfcb1b46fa2024a0a5ceaca2",
      "parents": [
        "67d9a90b63fb40320104f027d1e6979e033775d3",
        "bbf429795d0558797e7ac8d1024fa5c16552e96c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 15 06:39:21 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 15 06:39:21 2018 +0000"
      },
      "message": "Merge \"AAPT2: Fix issue with deserializing binary XML\""
    },
    {
      "commit": "237b1d0cf699c6e9fe3f59ac00d1167227e52a80",
      "tree": "d3ca94a50aa83003e77eda7c52606b301836e30b",
      "parents": [
        "6467e98270a96c2fe5ff3680804c5ffa90df946d",
        "d05b9130fdbff8062084b566a380c5b058273d75"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 15 05:46:47 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 15 05:46:47 2018 +0000"
      },
      "message": "Merge changes I2f594c22,I37a2b8b8\n\n* changes:\n  AAPT2: Fix compatible-screens element in AndroidManifest.xml\n  AAPT2: Add order attribute to groups\n"
    },
    {
      "commit": "bbf429795d0558797e7ac8d1024fa5c16552e96c",
      "tree": "987ac3c405f420e07ff2fdaec3bc3f7037eca487",
      "parents": [
        "da9eba300b0f84505fe094374c14d4bc910880d2"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 14 13:36:09 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 14 16:11:23 2018 -0800"
      },
      "message": "AAPT2: Fix issue with deserializing binary XML\n\nWe assumed that a raw text value set for an attribute meant there\nwere no compiled values set either.\n\nThis would only really happen for attributes that did not belong to any\nnamespace (no prefix:), since we always kept their raw string values\nin case some code relied on it.\n\nBug: 72700446\nTest: make aapt2_tests\nChange-Id: Icba40a1d4b181bfe7cad73131c4dbe5ba7f8b085\n"
    },
    {
      "commit": "d05b9130fdbff8062084b566a380c5b058273d75",
      "tree": "c841be557f76cf8be9ce9152860d4a47ff15f0bb",
      "parents": [
        "11cdc1cf7ab2e915611e2bb7264bd312012a9b64"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Wed Feb 14 15:40:35 2018 -0800"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Wed Feb 14 15:44:42 2018 -0800"
      },
      "message": "AAPT2: Fix compatible-screens element in AndroidManifest.xml\n\nFix an issue where the compatible-screens element was not being\npopulated correctly. The previous version was missing the screenSize\nattribute which is mandatory. The attributes were also missing the\nresource ID from the framework library as these are a part of the public\nAPI.\n\nChange-Id: I2f594c2259831dbbd96c58db4ba55e8288d4231e\nTest: unit tests\nTest: manually split an APK and dumped with aapt\n"
    },
    {
      "commit": "da9eba300b0f84505fe094374c14d4bc910880d2",
      "tree": "61f967b9c7ea92490db7b309ee3291dd52c32308",
      "parents": [
        "97661735aab95260f68d33896f76d071fe025fcd"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 13 16:44:10 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 14 10:49:32 2018 -0800"
      },
      "message": "Dump XML files in aapt2 dump\n\nTest: manual\nChange-Id: Id7f656c1385f6d1fec8eaa993c8e2b36bb1ae5b0\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": "e78a8169665c19b5539508f113093b6c2a4b80de",
      "tree": "0f645728f1a25f71a0db4046d96226bc3d77afb6",
      "parents": [
        "c8b76fe1f4d48aadf07c479dc9412d6b344bab1a"
      ],
      "author": {
        "name": "Nick Butcher",
        "email": "nickbutcher@google.com",
        "time": "Tue Jan 09 15:24:21 2018 +0000"
      },
      "committer": {
        "name": "Nick Butcher",
        "email": "nickbutcher@google.com",
        "time": "Fri Feb 09 11:36:27 2018 +0000"
      },
      "message": "Prevent AAPT from versioning \u003canimated-selector\u003e tags.\n\nBug: 69359529\nTest: Manually tested with ag/3178054\nChange-Id: I10ae4d96c2a31a0a7c363d7a9292ecdfd3bb526a\n"
    },
    {
      "commit": "1084432e1e15ffa96ea03045daaa2220dc21d566",
      "tree": "d9abdb849f002c16c32afee18a08525012af666a",
      "parents": [
        "ea8feabec59d4c4925a8ff8b3c35ff7ba909d671"
      ],
      "author": {
        "name": "Mohamed Heikal",
        "email": "mheikal@google.com",
        "time": "Wed Feb 07 15:17:38 2018 -0500"
      },
      "committer": {
        "name": "Mohamed Heikal",
        "email": "mheikal@google.com",
        "time": "Thu Feb 08 14:50:14 2018 -0500"
      },
      "message": "AAPT2: Fix silent failure when ContainerReader fails during Link\n\nCurrently in the link step ContainerReader is used to read files but the\nreader is not checked for errors prior to the read. This can lead to\nsilent failure when reading invalid resource files.\n\nChange-Id: I6420699ad30b5b84b0b2c696af8eb5a6cbd4111e\n"
    },
    {
      "commit": "11cdc1cf7ab2e915611e2bb7264bd312012a9b64",
      "tree": "80eafc89fd3c394718d6eb1e5d2023c4586fdb7a",
      "parents": [
        "d82eeb321b2f6ef504f7d5679ae2069997c70024"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Wed Jan 31 16:43:24 2018 -0800"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Fri Feb 02 12:11:18 2018 -0800"
      },
      "message": "AAPT2: Add order attribute to groups\n\nRequire explicit ordering of groups in the configuration file to ensure\nthat the correct version code is set. Ordering based on a single ABI is\nstraight forward to ensure Play Store delivers the correct APK, but when\nan APK needs more than one ABI things get messy quickly. This also goes\nfor screen density etc. The only thing that is easily sorted without\nthis attribute is android-sdk since an artifact can only reference a\nsingle SDK.\n\nTest: unit tests\nTest: manually split an APK with update config.xml\nChange-Id: I37a2b8b8a8409d6d6ff27c7142d4c8c8065a7a51\n"
    },
    {
      "commit": "22ed4122e7849a4538208c65f403298fe0fff891",
      "tree": "6989cf803cebd137da27b3b2bb2d858246362247",
      "parents": [
        "2043082f968a385c2ab976dffed4d02b027c50e4"
      ],
      "author": {
        "name": "Dave Ingram",
        "email": "dmi@google.com",
        "time": "Tue Jan 30 16:11:52 2018 -0800"
      },
      "committer": {
        "name": "Dave Ingram",
        "email": "dmi@google.com",
        "time": "Tue Jan 30 21:15:36 2018 -0800"
      },
      "message": "AAPT2: Fix typo in BinaryPrimitives oneofs\n\nFollow-up to ag/3449569\n\nBug: 69587794\nTest: aapt2_tests\nChange-Id: I95d2ba600c00bda2a8420794e43501f9bfca01df\n"
    }
  ],
  "next": "e5b3296316b49bda30b2753025632bd8d9c3bf2e"
}
