)]}'
{
  "log": [
    {
      "commit": "5a217b052d360d998ea809d894ebb164e436e5e4",
      "tree": "e0f81d930a0967c1e85962b3da4f337086bd3f70",
      "parents": [
        "9352e47db471dcbe659e6396797f09cebd455728"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 16 16:58:02 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 16 16:58:02 2017 -0800"
      },
      "message": "AAPT2: Fix debugging output\n\nTest: manual\nChange-Id: I3a362caf7bd691df399db00c6280e0a208a406da\n"
    },
    {
      "commit": "d8b4beaae90dd342b34396f2fe94f88b6cd5dbdd",
      "tree": "d59174241c00213df85d7ad155cdb746cb00edb4",
      "parents": [
        "9bdd372e27e0d46b6a350bb4a21c94fdd3e5db81"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Fri Nov 10 23:50:17 2017 +0000"
      },
      "committer": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Tue Nov 14 09:05:27 2017 +0000"
      },
      "message": "AAPT2 - Add ProtoApkSerializer implementation to convert from Binary to Proto.\n\nAlso new flag to choose the conversion direction:\n  --output_format [binary|proto].\n\nTest: Manual\n\nChange-Id: I61d381aa49869b0fd6bd9f017dda0cac5ca998bb\n"
    },
    {
      "commit": "514971a39ca961c9fc748f9fb9a97e34a1067b3f",
      "tree": "833087829e7d7b2a8086c8fe5ac242dcb4827fb4",
      "parents": [
        "8d6eb1fdf857272c4f94a35d172ccf33ba58fd2c",
        "d55bef78a5f2a0fe8068b26b463b161bd0398791"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Mon Nov 13 23:52:28 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 13 23:52:28 2017 +0000"
      },
      "message": "Merge \"AAPT2 - Convert command to copy all the files.\""
    },
    {
      "commit": "d55bef78a5f2a0fe8068b26b463b161bd0398791",
      "tree": "05a154606f720ac82bf85797faee537d0edc4fde",
      "parents": [
        "a591149cbce49306a6a5e127f077b3551873d490"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Fri Nov 10 22:31:01 2017 +0000"
      },
      "committer": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Mon Nov 13 21:07:34 2017 +0000"
      },
      "message": "AAPT2 - Convert command to copy all the files.\n\nTest: Manual\n\nChange-Id: I8705966cb34ff41eb362126a35956720147fae91\n"
    },
    {
      "commit": "3f89bd678334a1cfd24e387a3be6c2c395ff2856",
      "tree": "7d1d81a4f801f86d1e9602d3a56cd96bcc4ee76e",
      "parents": [
        "1c4ab704d14c047775b3e42f87ea4081fa204e37",
        "09ef94e918870a55907b20f35348cc7b77bdc148"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 13 20:02:41 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 13 20:02:41 2017 +0000"
      },
      "message": "Merge \"Change conditional keep rule syntax\""
    },
    {
      "commit": "288536b6bd230ab216b2d19f3a6eff8099cde0cf",
      "tree": "a41eae51327a1fd6097c4e69630b614fceecc246",
      "parents": [
        "c061b4384744c3e7227bfe13a04a0c13c0e5121b",
        "7e8549dd57c28bc797049109e82cda245d33df15"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Fri Nov 10 20:09:47 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 10 20:09:47 2017 +0000"
      },
      "message": "Merge \"Refactor Convert command to use a ISerializer interface.\""
    },
    {
      "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": "414e48a54143d78498dff381518c81e0c64ad56e",
      "tree": "e3e341036686ff730c146af7bf8062f155e26ffd",
      "parents": [
        "7cd3fa6fa2d0862e1ff2b8117a1d48238ad0a579"
      ],
      "author": {
        "name": "Donald Chai",
        "email": "dchai@google.com",
        "time": "Thu Nov 09 21:06:52 2017 -0800"
      },
      "committer": {
        "name": "Donald Chai",
        "email": "dchai@google.com",
        "time": "Thu Nov 09 21:47:20 2017 -0800"
      },
      "message": "AAPT2: whitelist alphanums instead of blacklisting hyphens in package names.\n\nBCP 47 uses plus signs for name mangling, and future qualifiers may\nstart using other reserved characters as well, so we might as well\nfutureproof the sanitizer.\n\nChange-Id: I1be7ee4234f8e30bb0ea832372b4dc932d30550c\nFixes: 69134786\nTest: UtilTest.SplitNamesAreSanitized\n"
    },
    {
      "commit": "7e8549dd57c28bc797049109e82cda245d33df15",
      "tree": "29f7f4c0bce99f0514c25564c0db3a729a705c9a",
      "parents": [
        "3b382900a81a10498fc35e927086982bc8e18437"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Fri Nov 10 01:22:12 2017 +0000"
      },
      "committer": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Fri Nov 10 05:04:48 2017 +0000"
      },
      "message": "Refactor Convert command to use a ISerializer interface.\n\nThis will allow for other implementations.\n\nTest: Manual\n\nChange-Id: Ibf9cf8f5ac2b5b8e51a5fb684b434a0f59a3cbee\n"
    },
    {
      "commit": "c8e3c7c816a4d9de42579df11d9302e117070ea1",
      "tree": "b6e4fd42be8b5a0cd6a9a43294906f37f1d6be10",
      "parents": [
        "600c006cde00dcd14bc6ee85dc576148ad5bd5c9",
        "490595a5fc1c3618dbbc2da5d421d10c025fabac"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 10 01:27:34 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 10 01:27:34 2017 +0000"
      },
      "message": "Merge \"AAPT2: Workaround for feature splits without namespacing\""
    },
    {
      "commit": "490595a5fc1c3618dbbc2da5d421d10c025fabac",
      "tree": "95b9f4a854da15241e2acc4b379693a9320c63f5",
      "parents": [
        "2dd3953ae00068a71da9f0a0d4e2fb9d8517424c"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Nov 07 17:08:07 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 09 14:57:49 2017 -0800"
      },
      "message": "AAPT2: Workaround for feature splits without namespacing\n\nAndroid Instant Apps in its current iteration does not use namespaces,\nbut due to limitations on the Android resource runtime, needs to make\nit look like it does.\n\nThis is due to a bug that treats any package ID that\u0027s not 0x01 or 0x7F\nas a shared library. Shared libraries require unique package names.\n\nAs a workaround, and since Android Instant Apps can not have a feature\ndepend on another feature, we can alter the resource package name of a\nfeature split just before writing it out to disk. This avoids using a\nunique package name while linking, thereby avoiding namespace issues.\n\nBug: 68820737\nTest: manual\nChange-Id: Ic553ed42656436bbb949393d0248ee7bb9d37860\n"
    },
    {
      "commit": "903ed1b6f9947ac919e9d110d4b82d25a3ff0de0",
      "tree": "157c6ed9b61fad7612d5b47b8437fc33715cae5c",
      "parents": [
        "6bd2b53f46b4ab786ab1f7b95fe836debdf446df",
        "96ea08f1e737e0d19e274e9a29f71c387d81b09a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 08 21:08:26 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 08 21:08:26 2017 +0000"
      },
      "message": "Merge \"AAPT2: Differentiate between Android and Java package names\""
    },
    {
      "commit": "96ea08f1e737e0d19e274e9a29f71c387d81b09a",
      "tree": "1e8f202dfd7f1dd1e46af2cebb1afb548fbd6890",
      "parents": [
        "b54be8de65b09c85992b30dbb1d52032f0498b6d"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 06 10:44:46 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Nov 07 11:31:17 2017 -0800"
      },
      "message": "AAPT2: Differentiate between Android and Java package names\n\nAndroid package names are more strict (ASCII only) than Java package names.\nAlso fixed an issue where trailing underscores were disallowed in Android\npackage names.\n\nBug: 68468089\nTest: make aapt2_tests\nChange-Id: I1052e9e82b6617db6065ce448d9bf7972bb68d59\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": "4ee829a707e15aca85793ef65d588be51ac58d40",
      "tree": "7515318e3c0af975cf87a3382b98084de8c978a7",
      "parents": [
        "c7b5f787654a604fa43b35c2ad0e0c3fffa4eaa7",
        "8780eb6e4918ae24fb1ae74d631042c32e41dc3d"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Nov 07 19:05:22 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 07 19:05:22 2017 +0000"
      },
      "message": "Merge \"AAPT2: Add convert command\""
    },
    {
      "commit": "2475c68edf36431aab487c8f188f2549dab8ce7a",
      "tree": "0a0e6775c4c884899854e2eec6f04ab360566aef",
      "parents": [
        "0b1b62d27f7a96af7eca739cb4e08e7caf8b6b3c",
        "3a725dc11f54cb68745ebdf3aa20908c58dc94f2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 03 22:10:35 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 03 22:10:35 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fix GetFileType for unicode and long paths on Windows\""
    },
    {
      "commit": "3a725dc11f54cb68745ebdf3aa20908c58dc94f2",
      "tree": "daa2299531d22d1a5b26ab534fff54a2524ce099",
      "parents": [
        "d46f87a9e2b444b6f9999d7ec86d347e2fe1b596"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 02 16:14:59 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 03 11:19:36 2017 -0700"
      },
      "message": "AAPT2: Fix GetFileType for unicode and long paths on Windows\n\nBug: 68262818\nTest: manual\nChange-Id: I4f02e544e45865984ff4e021a7d1e83f8baf24c3\n"
    },
    {
      "commit": "a544f25b1aa4f89389496decfdbacd11a0567d39",
      "tree": "bd0597b579da3c8a7f10b32cbebb1e2003156a8f",
      "parents": [
        "4c7db0543e062a5fb98c2e104379554a52fd7342",
        "ed37f4842ad838792b16bf19768ed9b2519b0194"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 03 11:13:33 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 03 11:13:33 2017 +0000"
      },
      "message": "Merge \"AAPT2: Better error messages for ManifestFixer\""
    },
    {
      "commit": "e20e09d184309ae442e8b1e63048f1e9126c8ca9",
      "tree": "04de33413d9abdce7a2c03e88cf88d07c3f0c67f",
      "parents": [
        "b7eac6f0a5a544e0027bef08c967025faf2711c2",
        "04465e7f252eb1531c9387bbb4bc5170e685087d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 03 01:18:16 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 03 01:18:16 2017 +0000"
      },
      "message": "Merge \"AAPT2: Introduce command to run unit tests\""
    },
    {
      "commit": "181799bc53c45282ffa50669430a5cb41f5c194d",
      "tree": "65018b2a6bffde3a249dd8c797a6861e6d782dd3",
      "parents": [
        "bd1bb1d9067ec32b3fd0914e7eb1ccd629ef25dc",
        "178e67835a954511a6567064f3081ecd7796f737"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 02 23:28:32 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 02 23:28:32 2017 +0000"
      },
      "message": "Merge \"AAPT2: Update tests to reflect new development API \u0027P\u0027\""
    },
    {
      "commit": "04465e7f252eb1531c9387bbb4bc5170e685087d",
      "tree": "cc28831dc1b4ed80f4a30df8fd2d09d26f226599",
      "parents": [
        "178e67835a954511a6567064f3081ecd7796f737"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 02 15:23:36 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 02 15:33:26 2017 -0700"
      },
      "message": "AAPT2: Introduce command to run unit tests\n\nThis command will execute the aapt2_tests with a parameter\nto emit XML test results into the out/dist directory.\n\nTest: manual\nChange-Id: I10cf119bb47b7698ddd91b1adf7323e51d169970\n"
    },
    {
      "commit": "178e67835a954511a6567064f3081ecd7796f737",
      "tree": "7c8d8ddd2161377d0aeab138001baefdbcacb5ec",
      "parents": [
        "4f340a4f8b50b29b562407e39563ee78a90bea3f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 02 14:12:38 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 02 14:12:38 2017 -0700"
      },
      "message": "AAPT2: Update tests to reflect new development API \u0027P\u0027\n\nBug: 68346913\nTest: make aapt2_tests\nChange-Id: Ic1435c529b6c80206d2326ac0da076777dffcc9a\n"
    },
    {
      "commit": "ed37f4842ad838792b16bf19768ed9b2519b0194",
      "tree": "8356e6a292ac53a5d7aebdab88576d771b4bbf9e",
      "parents": [
        "4f340a4f8b50b29b562407e39563ee78a90bea3f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 02 12:07:08 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 02 12:07:55 2017 -0700"
      },
      "message": "AAPT2: Better error messages for ManifestFixer\n\nAAPT2 will now print the XML hierarchy where it found an unexpected\nelement.\n\nTest: make aapt2_tests\nChange-Id: Iac7918b2f344fab874f0a3e7aa9c6936ecde8913\n"
    },
    {
      "commit": "8780eb6e4918ae24fb1ae74d631042c32e41dc3d",
      "tree": "938e18951a562fcd043ac779c7e758444b4bf0a8",
      "parents": [
        "4f340a4f8b50b29b562407e39563ee78a90bea3f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Oct 31 17:44:39 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Nov 01 10:58:28 2017 -0700"
      },
      "message": "AAPT2: Add convert command\n\nThis command allows a developer to convert their proto APK\n(generated from the link phase using --proto-format) into\na binary APK suitable for use on device.\n\n  aapt2 convert -o output.apk input.apk\n\nTest: manual + make aapt2_tests\nChange-Id: I10a7c33bb4b57006d01fe00a8bf92f78e04e7e50\n"
    },
    {
      "commit": "7b6b02bd13aea90b938c3ab3b1eaa3fb5043f931",
      "tree": "4bb3d2bd08947ef3ff84b084564a8073657ac29a",
      "parents": [
        "b235036e0a57b984503f3f74f5d772f141109f66"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Mon Oct 30 19:06:23 2017 -0700"
      },
      "committer": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Tue Oct 31 11:02:48 2017 -0700"
      },
      "message": "AAPT2: Allow for nested inline xmls\n\nAdd recursion to InlineXmlFormatParser::Consume for handling nested\naapt:attr\n\nChange-Id: Iabf98945b4f5ef22a3b8fdc4ca2bac092a377629\nFixes: 64385167\nTest: make aapt2_tests\n"
    },
    {
      "commit": "65d74c771f9f2fe1c389c12ab045c4c98788dc7b",
      "tree": "3a48227aec13ad4f97a82efdf67c02e12a4d0aab",
      "parents": [
        "c98b189f434414b7e3e54058a56dd44d7fc38ad3",
        "dc21dea9b8b1157a4a9347b68301da4307c51168"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 27 20:44:48 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 27 20:44:48 2017 +0000"
      },
      "message": "Merge \"AAPT2: Produce Conditional Proguard Keep Rules\""
    },
    {
      "commit": "461c80573b0ef0447f8757f1c32ae9e9be85c9b8",
      "tree": "8b582c8ce33280f1e1e0457b2bdce80e77b7a6f1",
      "parents": [
        "4f340a4f8b50b29b562407e39563ee78a90bea3f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Oct 26 17:18:19 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Oct 26 17:18:19 2017 -0700"
      },
      "message": "AAPT2: Fix issue where generated XML would be tagged with UNKNOWN type\n\nCompiledFiles with UNKNOWN type are copied through, leading to protobuf\noutputs in the final APK.\n\nTest: make aapt2_tests\nChange-Id: Ia0c464caa3951ff27436d1d50c2a8555bc89302b\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": "7fd74b5ad1df53b92f08a9aa2f3d445bf7b786fe",
      "tree": "03bbf941ec0fead1ad64ba2acd06113486a612c1",
      "parents": [
        "4bf7416a062af25574f548846e60e88df332cc55",
        "e59f0d80ec19249f72c07ae191ad673d040443e3"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 20 19:15:54 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 20 19:15:54 2017 +0000"
      },
      "message": "Merge changes I1a4b3ce5,Id7216e5b\n\n* changes:\n  AAPT2: Enable building proto artifacts\n  AAPT2: Define and Implement AAPT Container Format\n"
    },
    {
      "commit": "c2e67f4b5ca13a847689a6b36fc40efa9c0c5301",
      "tree": "d67e689da858981c284971ae27036a49073a586b",
      "parents": [
        "0f56a1014a794e06caf38b1d84a7bd6931e50853",
        "5fae742a1e5ff0dcfa870b4521a9db796d9db4f9"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Oct 19 22:23:58 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 19 22:23:58 2017 +0000"
      },
      "message": "Merge \"AAPT2: Ensure strings are sorted by configuration\" into oc-mr1-dev am: 8da74b1bfd\nam: 5fae742a1e\n\nChange-Id: I7dfb1a020b1c3da9e0af5a7096fda0775751eab3\n"
    },
    {
      "commit": "5fae742a1e5ff0dcfa870b4521a9db796d9db4f9",
      "tree": "bcf8bf8daa9104dac52ab956e837820327c18239",
      "parents": [
        "2cd25cfceea22ba221d137d8f3e8494778a4c8f6",
        "8da74b1bfdf4568788223e91c161591235b4ad42"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Oct 19 21:43:31 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 19 21:43:31 2017 +0000"
      },
      "message": "Merge \"AAPT2: Ensure strings are sorted by configuration\" into oc-mr1-dev\nam: 8da74b1bfd\n\nChange-Id: Ifd3555db424136fe8a8057504df414f41fb020a1\n"
    },
    {
      "commit": "8da74b1bfdf4568788223e91c161591235b4ad42",
      "tree": "81577dcae70709165a6b148f8729c9b710169695",
      "parents": [
        "4b7f43bcae20e5fe0f452098c70359e6d54885c5",
        "8a0b238b1344dae0042bbb17b71c0c3b9b881f22"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 19 21:31:10 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 19 21:31:10 2017 +0000"
      },
      "message": "Merge \"AAPT2: Ensure strings are sorted by configuration\" into oc-mr1-dev"
    },
    {
      "commit": "e59f0d80ec19249f72c07ae191ad673d040443e3",
      "tree": "8abc84d8e3739cab881a34a64d6459d9d187b48b",
      "parents": [
        "004511660671511ae88e0e837a6f92db28eadaef"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 13 09:36:53 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Oct 19 13:22:48 2017 -0700"
      },
      "message": "AAPT2: Enable building proto artifacts\n\n- This will allow the bundle tool to ingest the outputs of the aapt2 link\n  phase.\n\nBug: 64143208\nTest: manual\nChange-Id: I1a4b3ce5c2ffbbdc4bc642c3371a9ef2e7e9ad71\n"
    },
    {
      "commit": "004511660671511ae88e0e837a6f92db28eadaef",
      "tree": "f8999414faa4488e165a3f86b51c73f58609212b",
      "parents": [
        "d6912500c34506b0bfd1c0e472cefc60195a15eb"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Oct 03 07:44:08 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Oct 19 12:50:53 2017 -0700"
      },
      "message": "AAPT2: Define and Implement AAPT Container Format\n\nAAPT Container Format (.apc) is a simple container that\nenumerates the various intermediate files that AAPT2 generates\nduring the compile phase.\n\nThe format is defined in formats.md.\n\nFor now, continue using the .flat extension for the container file,\nand keep making use of the .flata zip for storing multiple files.\nThis will allow easier integration with existing build systems and allow\nthe evolution of the APC format to better handle arbitrarily large\nfiles.\n\nTest: make aapt2_tests\nChange-Id: Id7216e5b76316bdd683f0fa4eaf2d2da273ba815\n"
    },
    {
      "commit": "d6912500c34506b0bfd1c0e472cefc60195a15eb",
      "tree": "fb8f88559e09aeef2b1a2649744293854c45af3a",
      "parents": [
        "9a164691d7b3cd644b1b3692e01703c75977fb95",
        "b8f078c9a0c9f32ad84c475c26299ecb00962ffa"
      ],
      "author": {
        "name": "Donald Chai",
        "email": "dchai@google.com",
        "time": "Thu Oct 19 19:33:56 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 19 19:33:56 2017 +0000"
      },
      "message": "Merge \"AAPT2: Sanitize resource qualifiers before using in split names.\""
    },
    {
      "commit": "b8f078c9a0c9f32ad84c475c26299ecb00962ffa",
      "tree": "bc803682529c864d2475150920207e77c565ac27",
      "parents": [
        "96a30ab84c9e856cd7152d66d603205c3daff36e"
      ],
      "author": {
        "name": "Donald Chai",
        "email": "dchai@google.com",
        "time": "Wed Oct 18 23:51:18 2017 -0700"
      },
      "committer": {
        "name": "Donald Chai",
        "email": "dchai@google.com",
        "time": "Wed Oct 18 23:58:42 2017 -0700"
      },
      "message": "AAPT2: Sanitize resource qualifiers before using in split names.\n\nFixes: 67960909\nTest: UtilTest.SplitNamesAreSanitized\nChange-Id: I9ba1b8430a00cc7ce981075a60388f275c41dbea\n"
    },
    {
      "commit": "8a0b238b1344dae0042bbb17b71c0c3b9b881f22",
      "tree": "08e3b0916bdee1b41d98a58e9049b9938ee6b10b",
      "parents": [
        "85e7dbc93ee35d134a75a352093baf29127715ea"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Oct 18 15:07:33 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Oct 18 15:12:42 2017 -0700"
      },
      "message": "AAPT2: Ensure strings are sorted by configuration\n\nKeep strings sorted by configuration so that strings likely\nto be selected (all match the same locale, for instance) are\nclose together.\n\nBug: 67958501\nTest: make aapt2_tests\nChange-Id: Id17d93bf2e03ce408a6f619d3ea6dc313e393b76\n"
    },
    {
      "commit": "f60d30b6829b84223c680b7b6f9669975c708a27",
      "tree": "6f814f8c62c11a128af5b1c28c53a0bf1d247ed9",
      "parents": [
        "a3edc551c0b7873f5843b3b1dda89b20ae74f950",
        "3bdfe1a2517c4e2b6e9c7b7fe6b91eff77e4bd00"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Oct 18 00:57:26 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Oct 18 00:57:26 2017 +0000"
      },
      "message": "Merge \"AAPT2: Flatten AndroidManifest.xml stringpool in UTF16\" into oc-mr1-dev\nam: 3bdfe1a251\n\nChange-Id: I3295e61dcf29a7cb242b4ee0017f2fd94a0cfd65\n"
    },
    {
      "commit": "9c40250cdfcd289435a23a783de628a4cf2ca173",
      "tree": "ec155e4cfd16c20207b733c4b8c67387630e105d",
      "parents": [
        "85e7dbc93ee35d134a75a352093baf29127715ea"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 13 12:40:37 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Oct 17 15:16:41 2017 -0700"
      },
      "message": "AAPT2: Flatten AndroidManifest.xml stringpool in UTF16\n\nA few OEM devices have introduced a memory corruption bug\nthat is only triggered when an application\u0027s AndroidManifest.xml\nuses UTF8 string pools. Workaround this by only encoding\nAndroidManifest.xml with UTF16 strings.\n\nBug: 64434571\nTest: manual\nChange-Id: I2ee50d1b2b5942d971ef2a544c878de63f67c652\n"
    },
    {
      "commit": "f4165c4cf7a4152a5ef34856a53f7a7757483020",
      "tree": "d8a799a1548fbaee94ca3a0ac461d6e0829601a4",
      "parents": [
        "00d31c2760629e18088bcbfe2fe1c01e266bb866",
        "ab2a38c03d54fad1ed0873ac091959ee38823cd6"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 16 19:30:04 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Oct 16 19:30:04 2017 +0000"
      },
      "message": "Merge \"AAPT leave \u003cgradient\u003e alone for VDC\""
    },
    {
      "commit": "ab2a38c03d54fad1ed0873ac091959ee38823cd6",
      "tree": "5a360c6adc7e4e733e2a5d1d326a9b993ba5f20d",
      "parents": [
        "404f23d6d0950754f4d4d65606379889c922a3eb"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Oct 13 15:56:08 2017 -0700"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Mon Oct 16 10:34:27 2017 -0700"
      },
      "message": "AAPT leave \u003cgradient\u003e alone for VDC\n\nbug: 62421666\nTest: Tested with changes for Gradient of VDC.\n\nChange-Id: I07b39721aeaaafd888416a0f71f6cbd5fce97732\n"
    },
    {
      "commit": "8e1c391791f65d4314b003dd0a748927de4ff312",
      "tree": "620d2d773e6947cc59b5b25bbc7d6c43d1e2d78c",
      "parents": [
        "990735ee4cceb941638cb19c3ae4781723c34d0d",
        "ea13c1a234077203977a6234863c0cb36c43e02f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Oct 14 02:40:16 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Oct 14 02:40:16 2017 +0000"
      },
      "message": "Merge \"AAPT2: Flatten AndroidManifest.xml stringpool in UTF16\""
    },
    {
      "commit": "ea13c1a234077203977a6234863c0cb36c43e02f",
      "tree": "92065882bafe7aa68988436065252a8af5d7bec6",
      "parents": [
        "8a0f0ed4d84573a2f9eec0753404b5cf44f51827"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 13 12:40:37 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 13 12:42:47 2017 -0700"
      },
      "message": "AAPT2: Flatten AndroidManifest.xml stringpool in UTF16\n\nA few OEM devices have introduced a memory corruption bug\nthat is only triggered when an application\u0027s AndroidManifest.xml\nuses UTF8 string pools. Workaround this by only encoding\nAndroidManifest.xml with UTF16 strings.\n\nBug: 64434571\nTest: manual\nChange-Id: I2ee50d1b2b5942d971ef2a544c878de63f67c652\n"
    },
    {
      "commit": "ec58a0063591ad3aca1a1f7c701a2e83f37942a2",
      "tree": "c48a85429367905f02139994ee3fbe72b2815f2a",
      "parents": [
        "8a0f0ed4d84573a2f9eec0753404b5cf44f51827"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Oct 04 14:20:06 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 13 12:31:34 2017 -0700"
      },
      "message": "AAPT2: Update SDK development codename to P\n\nAlso deleted unused method of finding attribute API levels.\n\nTest: none\nChange-Id: I92c1dd398bde3b19da2d274b6abda12636aa3d4f\n"
    },
    {
      "commit": "4670805ea441edb8b280f9312571e7799f1284cf",
      "tree": "593cfa51011a51f443e9dbaa5934ea159e7ae1d7",
      "parents": [
        "65e91ce6c3aac8e350cbf5e1de2d2b13c78d792b"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Sep 29 14:49:15 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Oct 04 14:26:55 2017 -0700"
      },
      "message": "AAPT2: Move format related files under same directory\n\nTest: make aapt2_tests\nChange-Id: Id72cdfc12ba3add294048e60c55f2461344464bf\n"
    },
    {
      "commit": "897f6ddd31585d77789ef38afcb4987d2c329491",
      "tree": "cd27adff4abc4dd2a5a9f9b50e272c0d107615a4",
      "parents": [
        "a9361e91157f13d42dc677b41f2a5783478856c0",
        "8284349fc9e03fb11c85a7dbdc8096d79be46279"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Oct 03 22:07:18 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 03 22:07:18 2017 +0000"
      },
      "message": "Merge \"AAPT2: Preserve line numbers when deserializing from binary XML\" into oc-mr1-dev am: 9b581c7bc1\nam: 8284349fc9\n\nChange-Id: Iadd7362ae8456279ebec3a4577ba5be0c8bf19d7\n"
    },
    {
      "commit": "8e43e0d0ad41027318e97869174acaa5d6b577e3",
      "tree": "6129fac7b994c69626222104037188e8dd608cb5",
      "parents": [
        "8284349fc9e03fb11c85a7dbdc8096d79be46279",
        "b986ebce7583e1409f59d975981f9bdf6aa34151"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Oct 03 22:02:20 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 03 22:02:20 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fix R.java styleable + indices ordering\" into oc-mr1-dev\nam: b986ebce75\n\nChange-Id: I16382162fecf323074c13b376a23fccab1da092b\n"
    },
    {
      "commit": "8284349fc9e03fb11c85a7dbdc8096d79be46279",
      "tree": "2113f43be944ff7497a4990a4a9d944cbb4a3985",
      "parents": [
        "ce29a4c77a041c5073200fa36d534165dc674400",
        "9b581c7bc176c67a1281560148c17e6d76c068de"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Oct 03 21:51:09 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 03 21:51:09 2017 +0000"
      },
      "message": "Merge \"AAPT2: Preserve line numbers when deserializing from binary XML\" into oc-mr1-dev\nam: 9b581c7bc1\n\nChange-Id: I55d8c73df0ce751472e58a9ae505c94edc90c68e\n"
    },
    {
      "commit": "b986ebce7583e1409f59d975981f9bdf6aa34151",
      "tree": "5995072fdc88372b1a5f9504f9b378f3f197b416",
      "parents": [
        "9b581c7bc176c67a1281560148c17e6d76c068de",
        "1ee1a106c5b8d41597a889224b1125b568b6a3a3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 03 21:24:48 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 03 21:24:48 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fix R.java styleable + indices ordering\" into oc-mr1-dev"
    },
    {
      "commit": "e17993597e149ddaf27e9b9604c9f10a9d1a16a9",
      "tree": "16c6f2a2341a4855900ecdaeea8aac96a98b25e3",
      "parents": [
        "810fd184356a76fc0fa35d07212df10b7e058063"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Mon Sep 25 14:19:03 2017 -0700"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Tue Oct 03 16:14:07 2017 +0000"
      },
      "message": "AAPT2: Set compatible-screens in manifest for multi-APK\n\nIf an artifact in a multi-apk set is for a scpecific set of screen\ndensities then update the manifest to set the compatible-screens element\nto match.\n\nTest: ran unit tests\nTest: manually ran optimize command\n\nChange-Id: I07e90850ab2f4647a8623acbeaccbebbe81c3a6a\n"
    },
    {
      "commit": "810fd184356a76fc0fa35d07212df10b7e058063",
      "tree": "e498746de043cc4a0cfbbdf7057275ee519e471d",
      "parents": [
        "3edd47264335cf609ac6e733db77522f7c959c3f"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Thu Sep 21 14:37:44 2017 -0700"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Tue Oct 03 16:13:04 2017 +0000"
      },
      "message": "AAPT2: Update versionCode in multi-APKs.\n\nSet versionCode in the AndroidManifest.xml so each artifact has a unique\nversion code. This will allow the play store to serve up the correct\nAPKs.\n\nThe versionCode is determined by taking the versionCode from the input\nAPK and adding the configured version to that. If an artifact does not\nhave a version, the next version is used based on the order in the\nconfiguration file. If the firs artifact does not have a version, it\nstarts at 1, so that all artifacts have a different version code to the\nbase APK.\n\nBug: 64972562\n\nTest: unit tests\nTest: manually optimized an APK into multiple APKs and confirmed versions:\n  aapt dump badging ${apk} | grep versionCode\n\nChange-Id: Ie12b3e42bbd8ce9a2819712c2c56b24c0a901e6b\n"
    },
    {
      "commit": "3edd47264335cf609ac6e733db77522f7c959c3f",
      "tree": "bedc420b9d9f980ff1e2c349be4a2b39348a6209",
      "parents": [
        "2310403031f4bb6224cdd3aeefc80585c5b5f362"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Fri Sep 01 14:34:22 2017 -0700"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Tue Oct 03 16:02:38 2017 +0000"
      },
      "message": "AAPT2: Set the minSdkVersion when generating multiple APKs.\n\nWhen generating multiple APKs from a configuration file, check to see if\nwe have filtered resource by minSdkVersion and update the manifest to\nreflect this. We only want to inflate and modify the manifest file if\nthere is an update to be applied.\n\nBug: 37944703\nBug: 67005138\n\nTest: Ran unit tests\nTest: Manually split an APK and verified the manifest by dumping with\n      AAPT (both xmltree and badging).\n\nChange-Id: I64a0e4889d7d9e57373369b044a091287b06cc35\n"
    },
    {
      "commit": "08e76846b680316b1cf09dd156726e7b5d27e7ed",
      "tree": "87cceba30de911d0f732b8ff5c0cb290f252553d",
      "parents": [
        "84820ec7b319db7920930f864fc6f6553e3c804d",
        "61879522fe1ee10e4d09ffb530dff17d5b4fef65"
      ],
      "author": {
        "name": "Yunlian Jiang",
        "email": "yunlian@google.com",
        "time": "Tue Oct 03 04:44:37 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 03 04:44:37 2017 +0000"
      },
      "message": "Merge \"Replace strcpy with memcpy.\" am: bb115bac41 am: 16951dcb54 am: 23f6dca5fd\nam: 61879522fe\n\nChange-Id: Iaf1e0edbb3902714621492d6dd53458c1ad50b01\n"
    },
    {
      "commit": "61879522fe1ee10e4d09ffb530dff17d5b4fef65",
      "tree": "e87da0ce483f25242f80b3281105b407b5938055",
      "parents": [
        "c153d7a23be0e196e9f48d25b6169ad6b1196374",
        "23f6dca5fda7e53f3ab08a630ce7c62d06127ac1"
      ],
      "author": {
        "name": "Yunlian Jiang",
        "email": "yunlian@google.com",
        "time": "Tue Oct 03 04:38:07 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 03 04:38:07 2017 +0000"
      },
      "message": "Merge \"Replace strcpy with memcpy.\" am: bb115bac41 am: 16951dcb54\nam: 23f6dca5fd\n\nChange-Id: I446973c3b96f253e3c3fc2dfda7647cd3e625916\n"
    },
    {
      "commit": "16951dcb54463244216147baaa0ebef6a01e6c5f",
      "tree": "00ac3b4fcdde40f1eea3683ef62a7b48579130ab",
      "parents": [
        "b8fb4e35ba46ca1efbdbdd6449f63a1dd7e24792",
        "bb115bac418107c0b2e90514ed525a4f9217695b"
      ],
      "author": {
        "name": "Yunlian Jiang",
        "email": "yunlian@google.com",
        "time": "Tue Oct 03 04:20:17 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 03 04:20:17 2017 +0000"
      },
      "message": "Merge \"Replace strcpy with memcpy.\"\nam: bb115bac41\n\nChange-Id: I28c118a609d999fe1ef6bd126557e63076f452c6\n"
    },
    {
      "commit": "bb115bac418107c0b2e90514ed525a4f9217695b",
      "tree": "a0ef5f7bbaa8c225bb704cc530ef0a427e1fd868",
      "parents": [
        "1704df64ceaa282c8f91f886204261af1f4395a2",
        "d32ae10f4cdcff2351c9f34ce477089111093d32"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 03 04:09:48 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 03 04:09:48 2017 +0000"
      },
      "message": "Merge \"Replace strcpy with memcpy.\""
    },
    {
      "commit": "0da683bd8da55a0cfa46dfe8076b729b945d6650",
      "tree": "cbfd404fadce2b7e664ec8ddba5aad6b8881a900",
      "parents": [
        "96b9ddbcb26f39bc26010d44856998967e384930"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Oct 02 16:37:20 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Oct 02 17:00:07 2017 -0700"
      },
      "message": "AAPT2: Preserve line numbers when deserializing from binary XML\n\nBug: 65827146\nTest: make aapt2_tests\nChange-Id: Idbfea640eb8727fe209ebc6eb072296845d9f282\n"
    },
    {
      "commit": "1ee1a106c5b8d41597a889224b1125b568b6a3a3",
      "tree": "6f89cc752ae7013225143664d1b00f015f6fd6ef",
      "parents": [
        "56afee3c1f69978c4aed0c1fcc62856745d7f176"
      ],
      "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": "Mon Oct 02 15:42:24 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\nMerged-In: Ia59ba58427ade386d075ca9fc9eb5b53e35beca0\nTest: make aapt2_tests\n\n(cherry picked from commit af85c4deb667843a227d62275fe6992005f4c38d)\n\nChange-Id: Ia59ba58427ade386d075ca9fc9eb5b53e35beca0\n"
    },
    {
      "commit": "466df70cc58c97497fa4ab27c5b3ba473a1f2b3a",
      "tree": "583d98190a8062ec2b6e424fdba2f13bc4e23b76",
      "parents": [
        "4ba2c3b7cdb202318093c5c4a021a53053b09a68",
        "761d4341fcbb711f55d73a31e79098837146236d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 02 09:43:01 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Oct 02 09:43:01 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fix R.java styleable + indices ordering\""
    },
    {
      "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": "8cdca1bd722049facf5bbec44ec3ca67cade5288",
      "tree": "f5c1cbc7940d47b60cfdef1cd602e96ac1adefc7",
      "parents": [
        "d3ffa844f5a07756009f019e13806e253d1bb119"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Sep 28 15:50:03 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Sep 28 20:43:22 2017 -0700"
      },
      "message": "AAPT2: Cleanup proto classes/methods and add XML serialization\n\nTest: make aapt2_tests\nChange-Id: I01ac2285af6771a683533c033a59ae6cfe875d93\n"
    },
    {
      "commit": "d3ffa844f5a07756009f019e13806e253d1bb119",
      "tree": "75ebb146979439d850dd97b9645bae231923c5ca",
      "parents": [
        "43ddc05bbdbf8da73da2415b3ab4d68a0180f9b2"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Sep 28 13:34:35 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Sep 28 14:08:50 2017 -0700"
      },
      "message": "AAPT2: Cleanup Visitors for XML and Values\n\nTest: make aapt2_tests\nChange-Id: Ib61f64c155a380115610edeaf2d65e60258a2426\n"
    },
    {
      "commit": "d32ae10f4cdcff2351c9f34ce477089111093d32",
      "tree": "5e21a2fdab6f1d10e8e7dd8c5cc60248b8bce471",
      "parents": [
        "2cdd1ce6001e642f65456f6504cbb7d11cd1469d"
      ],
      "author": {
        "name": "Yunlian Jiang",
        "email": "yunlian@google.com",
        "time": "Wed Sep 13 12:01:15 2017 -0700"
      },
      "committer": {
        "name": "Yunlian Jiang",
        "email": "yunlian@google.com",
        "time": "Tue Sep 26 16:02:11 2017 -0700"
      },
      "message": "Replace strcpy with memcpy.\n\nThis fixes the warning\nCall to function \u0027strcpy\u0027 is insecure as it does not provide bounding of\nthe memory buffer. As a side effect, it sliences the warning\nframeworks/base/tools/aapt/Images.cpp:1270:50: warning: Potential leak\nof memory pointed to by field \u0027data\u0027 [clang-analyzer-unix.Malloc]\nframeworks/base/tools/aapt2/compile/Png.cpp:562:42: warning: Potential\nleak of memory pointed to by field \u0027data\u0027 [clang-analyzer-unix.Malloc].\n\nBug: None\nTest: The warning is gone.\n\nChange-Id: I25f68ff85bea7069c21549c7deb7920d1877069e\n"
    },
    {
      "commit": "b58c3ef023acf3851e4a0557d04d65d52835d2df",
      "tree": "03f0ac320e0604d56a6aa4d8bf4b2a96b9180999",
      "parents": [
        "5bd44237102d11802f27f1bbf030399f88e4c15b"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Sep 12 17:39:52 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Sep 26 14:48:35 2017 -0700"
      },
      "message": "AAPT2: Convert binary ResTable_config to proto\n\nTest: make aapt2_tests\nChange-Id: I8641f13ce41cd58ac8bc3da31c4e15a7b3f06092\n"
    },
    {
      "commit": "5bd44237102d11802f27f1bbf030399f88e4c15b",
      "tree": "910b051c756db6ba6ba04037d171678d0909f220",
      "parents": [
        "6833a07a078af8eeb868aee269bbb1860c01f244"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Sep 07 09:39:07 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Sep 26 12:07:51 2017 -0700"
      },
      "message": "AAPT2: Move to proto3\n\nWe\u0027re going to be using the Any proto field in ConfigDescription,\nso migrate to proto3.\n\nTest: make aapt2_tests\nChange-Id: I43b91f4dfc448251f4352e48586b3b15502c033d\n"
    },
    {
      "commit": "e33de76a16f6acc42858766460976f44e629657d",
      "tree": "ce962def3f718730407e6863a14aaf0df9a66787",
      "parents": [
        "d2d6c257f141ed38da2cf0d0a2f84c6f7f055e92",
        "e02983681ae85212c2263055fd4bcfd8097f19bc"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Sep 15 16:57:21 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 15 16:57:21 2017 +0000"
      },
      "message": "Merge changes Id8bdb14e,I573a6735,Ia804777f,Ia68122cb,Ia1997800, ... into oc-mr1-dev\nam: e02983681a\n\nChange-Id: I42369e6fb7bd121e45b5a002cd5f00e05221ead3\n"
    },
    {
      "commit": "689ce3f658f6862baf9951513c3330b5a3638267",
      "tree": "88a9cb6f54d7f8ef93fbb48ab28a4e94fadb03a8",
      "parents": [
        "a91d5c39ed3fd9f96a6aba90eb5b02877271c7a2"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Sep 13 14:46:00 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Sep 15 08:49:24 2017 +0000"
      },
      "message": "AAPT2: Bump to version 2.19\n\nTest: manual\nBug: 65645766\nChange-Id: Id8bdb14e498bd79ff642f9ad56ef05ec7a5825af\nMerged-In: Id8bdb14e498bd79ff642f9ad56ef05ec7a5825af\n"
    },
    {
      "commit": "a6f1cf4764716d22942b29dfc86a0e7f0ebdc70c",
      "tree": "db1c65effe7711807564240d748984915a124a64",
      "parents": [
        "6c0736c835ea8edc387054974bbc2d73fa8f2fa8",
        "3420eed6991a94cff158fc5069730f6d50377a7e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 15 02:31:35 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 15 02:31:35 2017 +0000"
      },
      "message": "Merge \"AAPT2: Bump to version 2.19\""
    },
    {
      "commit": "3420eed6991a94cff158fc5069730f6d50377a7e",
      "tree": "7dba5e83dc5cbc87eee552c48224581b09ac9d4e",
      "parents": [
        "e2ad4634f2116b5ae236584b4c44b0c3e6815d29"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Sep 13 14:46:00 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Sep 14 17:00:56 2017 -0700"
      },
      "message": "AAPT2: Bump to version 2.19\n\nTest: manual\nBug: 65645766\nChange-Id: Id8bdb14e498bd79ff642f9ad56ef05ec7a5825af\n"
    },
    {
      "commit": "a91d5c39ed3fd9f96a6aba90eb5b02877271c7a2",
      "tree": "d66e52f4d4e95f22601df752e6c2e994ad198076",
      "parents": [
        "40e869e2a5207281653be40d030e92c3b664ee31"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Aug 30 16:12:05 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Sep 14 11:31:48 2017 -0700"
      },
      "message": "AAPT2: Fix issue with resource deduping\n\nResource deduping relies on the definitions of\nConfigDescription.ConflictsWith, ConfigDescription.IsCompatibleWith,\nand ConfigDescription.Dominates.\n\nConflictsWith is supposed to ignore range-based qualifiers, like\nversion, density, smallest width, screen size, etc.\n\nThis was not the case for screen size, and was assumed that the\nchoice of screen size is mutually exclusive.\n\nThis CL fixes the assumption and includes screen size (small, normal, large, xlarge)\nas a qualifier that does not conflict.\n\nBug: 64397629\nBug: 65645766\nTest: make aapt2_tests\nChange-Id: I573a6735fedd7721a10ba32902bc5d27ef99b88e\nMerged-In: I573a6735fedd7721a10ba32902bc5d27ef99b88e\n"
    },
    {
      "commit": "f1a7e04851ecbb707e7e18eace31b5eaf95bcc48",
      "tree": "4ee90bcf51660612a009dde98f9bae0a55bc5a5f",
      "parents": [
        "96ed7c3b17b307e0983962c0d2355ab066674713"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Aug 24 15:17:05 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Sep 14 11:31:30 2017 -0700"
      },
      "message": "AAPT2: Change the daemon mode to be line based\n\nAccept a set of arguments separated by newlines.\nThis avoids path separator conflicts with the argument\nformat for passing splits.\n\nTest: manual\nBug: 65645766\nChange-Id: Ia68122cb77b7dde2292a0fd953e79f02996ac01c\nMerged-In: Ia68122cb77b7dde2292a0fd953e79f02996ac01c\n"
    },
    {
      "commit": "96ed7c3b17b307e0983962c0d2355ab066674713",
      "tree": "c819fd718a45256fe66517464c01667cc2f0abaa",
      "parents": [
        "6e241e7e5408aae655362905a78d29e6c52ca305"
      ],
      "author": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Thu Aug 24 16:19:45 2017 +0100"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Sep 14 11:31:22 2017 -0700"
      },
      "message": "AAPT2: better error handling for daemon mode\n\nTest: manual\nBug: 65645766\nChange-Id: Ia1997800ad94f386dbbb4195011395ecee1ba91f\nMerged-In: Ia1997800ad94f386dbbb4195011395ecee1ba91f\n"
    },
    {
      "commit": "6e241e7e5408aae655362905a78d29e6c52ca305",
      "tree": "de7714461353c5796fc2eb74d42e5e1c85e60d88",
      "parents": [
        "b791721cd1a6154e5582d824f5d20b2c8b8d5ac5"
      ],
      "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": "Thu Sep 14 11:31:13 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\nBug: 65645766\nTest: make aapt2_tests\nChange-Id: I17b9dc7e8d8bd80db98869394c93695cb453bebd\nMerged-In: I17b9dc7e8d8bd80db98869394c93695cb453bebd\n"
    },
    {
      "commit": "b791721cd1a6154e5582d824f5d20b2c8b8d5ac5",
      "tree": "363ba007cc0cd5d4ae55b7516696ac7064907feb",
      "parents": [
        "44ec315e06560a5fc0e2cc462ef67c2a47e894b1"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Aug 10 15:37:28 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Sep 14 11:31:04 2017 -0700"
      },
      "message": "AAPT2: Define intermediate compiled XML proto\n\nThis proto format is meant to encapsulate more information\nthat is specific to Android and allows for easier validation\nand manipulation across tools.\n\nTest: make aapt2_tests\nBug: 65645766\nChange-Id: I13bc34a460671fc0a36246be0d287a3d37d244d6\nMerged-In: I13bc34a460671fc0a36246be0d287a3d37d244d6\n"
    },
    {
      "commit": "44ec315e06560a5fc0e2cc462ef67c2a47e894b1",
      "tree": "fc2f952beea64aea7b959b6c3ec364b7a764716d",
      "parents": [
        "68b5e8a4399ef822790d1a498258e69b5b2d0a4f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jul 25 10:59:26 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Sep 14 11:30:56 2017 -0700"
      },
      "message": "AAPT2: Add a daemon mode\n\nGradle and other build tools that need to frequently interact with aapt2\ncan use the daemon mode to issue regular CLI commands without paying\nthe process start cost for each invocation.\n\nTest: manual\nBug: 65645766\nChange-Id: I543858ed46496278bad643f0dae688c924ec6c3f\nMerged-In: I543858ed46496278bad643f0dae688c924ec6c3f\n"
    },
    {
      "commit": "68b5e8a4399ef822790d1a498258e69b5b2d0a4f",
      "tree": "e8ecd0786a98e3efeec8b7642775c7f625268d85",
      "parents": [
        "5c33fb5408d6c02dc2c73f53d89d1494fe04f208"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Aug 18 19:33:03 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Sep 14 11:30:48 2017 -0700"
      },
      "message": "AAPT2: Fix mkdirs implementation\n\nOnce switched to using std::string, the mkdirs implementation was\ntrying to create an empty string when an absolute file path on\nlinux or macOS was used.\n\nBug: 62336414\nBug: 65645766\nTest: manual\nChange-Id: I52f3050b410a923ca48f353b0983667c16d00ee8\nMerged-In: I52f3050b410a923ca48f353b0983667c16d00ee8\n"
    },
    {
      "commit": "5c33fb5408d6c02dc2c73f53d89d1494fe04f208",
      "tree": "b95bdb2f9855ebdc4fea99672c81c3b4f4a00509",
      "parents": [
        "5b54ca2d72c410aa34363b0f3bb0fe1666954aea"
      ],
      "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 Sep 14 11:30:38 2017 -0700"
      },
      "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\nBug: 65645766\nChange-Id: Ib97ff1c4252b7907e2cc1f13a448dc4ca3b809a4\nMerged-In: Ib97ff1c4252b7907e2cc1f13a448dc4ca3b809a4\n"
    },
    {
      "commit": "5b54ca2d72c410aa34363b0f3bb0fe1666954aea",
      "tree": "ec1da3d9faf69a18dc3cd04a3cbbe0e093c058ca",
      "parents": [
        "cb1e6f95ae02a8670a85d50db8dc95a8bbb3622d"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Aug 02 14:57:43 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Sep 14 11:30:29 2017 -0700"
      },
      "message": "AAPT2: Fix windows unicode path issues\n\nMingw64 was being difficult, so instead of defining a wmain entrypoint,\nthe command line parameters are parsed manually using built-in Windows\nmethods that support Unicode. The results are converted to UTF8 and\nhandled just like the rest of the linux/mac version of the code.\n\nThis also removes dependencies on std::istream in favour of a\nFileInputStream which calls the appropriate unicode version of\nopen to read a file.\n\nNo speed regressions found on Linux or MacOS.\n\nBug: 62336414\nBug: 63830502\nBug: 65645766\nTest: manual\nChange-Id: I597da51e33729ed1b98bf246e7e773337fd3fee8\nMerged-In: I597da51e33729ed1b98bf246e7e773337fd3fee8\n"
    },
    {
      "commit": "cb1e6f95ae02a8670a85d50db8dc95a8bbb3622d",
      "tree": "73bb8dde0b8e5a6316c600323afe27dd6f0ceae6",
      "parents": [
        "e116ebe0bcd2f078fedb526ba1e8570a6885f469"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Aug 07 10:32:18 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Sep 14 11:30:18 2017 -0700"
      },
      "message": "AAPT2: Fix typo in Config parsing\n\nThe \u0027any\u0027 syntax of a configuration is rarely used so this has not been\nan issue in the field.\n\nTest: none\nBug: 65645766\nChange-Id: Icb9cb2d5ad061e3ea1c43dc1cd7ca2f222965cdc\nMerged-In: Icb9cb2d5ad061e3ea1c43dc1cd7ca2f222965cdc\n"
    },
    {
      "commit": "e116ebe0bcd2f078fedb526ba1e8570a6885f469",
      "tree": "79da0a92a1d186b82c368f4f4c53f7862033879b",
      "parents": [
        "ee0e486d3617bdc31ae6e42414bbf2316dee164c"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Aug 04 16:15:17 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Sep 14 11:29:47 2017 -0700"
      },
      "message": "AAPT2: Change proto format to reduce usage of StringPool\n\nThe StringPool class is a binary blob and makes it difficult to\nmodify the proto files from external tools (like bundle-tool).\n\nSize increase of full build is negligible.\n\nTest: make aapt2_tests\nBug: 65645766\nChange-Id: I984755170c315730ab751b51133f8fb2f614f6af\nMerged-In: I984755170c315730ab751b51133f8fb2f614f6af\n"
    },
    {
      "commit": "ee0e486d3617bdc31ae6e42414bbf2316dee164c",
      "tree": "6158def576b4541debd6062d2cecaf7c69a693c9",
      "parents": [
        "18fc9f65d040f7b9ff9960217d9e02b1827ecd00"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jul 25 17:15:42 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Sep 14 11:29:34 2017 -0700"
      },
      "message": "AAPT2: Add navigation type\n\nTest: build succeeds\nBug: 65645766\nChange-Id: I7d49366c7cc4a93c29bad4cb9f13eec23ad05bd2\nMerged-In: I7d49366c7cc4a93c29bad4cb9f13eec23ad05bd2\n"
    },
    {
      "commit": "18fc9f65d040f7b9ff9960217d9e02b1827ecd00",
      "tree": "02c12e7196e5daa9ba3fd17a9feea8ee79ee3da4",
      "parents": [
        "3349e619418a75503e9dd550c4f55075264c0555"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jul 10 05:40:39 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Sep 14 11:29:24 2017 -0700"
      },
      "message": "AAPT2: Document Format.proto\n\nTest: none\nBug: 65645766\nChange-Id: I6b05bcdece5a310201d3ab0790a4ea1d23698e96\nMerged-In: I6b05bcdece5a310201d3ab0790a4ea1d23698e96\n"
    },
    {
      "commit": "fa6058118e5fca1150fbe259cba89ebae64cdcd1",
      "tree": "ecda4fbaaefaac37a1030b360766980ac03bf2e3",
      "parents": [
        "a90205492ff2eb1b20dfdc9fb114efdd78d387d1"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jun 29 17:53:36 2017 -0700"
      },
      "committer": {
        "name": "Dmitry Shmidt",
        "email": "dimitrysh@google.com",
        "time": "Mon Sep 11 13:05:38 2017 -0700"
      },
      "message": "AAPT2: Fix processing of quotes in XML\n\nWhen processing attributes in XML, quotes can\u0027t be used to mark a\nsection as whitespace preserving, so the assumption should be that the\nentire string is whitespace preserving, which makes quote characters\nliterals.\n\nBug: 62840718\nBug: 62840406\nTest: make aapt2_tests\nChange-Id: I4afff02148b5b8e78833abf1f323c2f5325d6155\n"
    },
    {
      "commit": "4b8ca8be4d6b0e867f5a421197fa4b5d006fd311",
      "tree": "29a31792f304f43b8869af631cd151cd49548608",
      "parents": [
        "40d2d2b3770a637f542b015cd0aafcc0e9b5cef8"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Fri Sep 08 12:17:05 2017 -0700"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Mon Sep 11 19:45:33 2017 +0000"
      },
      "message": "AAPT2: Handle inflating compiled attributes.\n\n* Added the resource ID pulled from the XML parser into the compiled\nattribattribue. This allows binary attributes such as the version code\nand min SDK values to be available whern flattening the XmlResource back\ninto an APK file.\n\n* Only add a compiled value if the attribute value was not a string.\nThis allows string values like the package name and version name to be\nflattened back into an APK file.\n\nBefore making this change, aapt would segfault when dumping the manifest\nand dumping badging would be missing values. After making this change,\nthe manifest and badging are dumping correctly.\n\nTest: ran unit tests\nTest: manually ran optimize against an APK\nChange-Id: I885bb06557b032b9f702e8065d637d359c2b519b\n"
    },
    {
      "commit": "848755812040389041fdaee5f75be6348c79a6a1",
      "tree": "7cb7f2be6af29f141114649ab9c1ffa3e8b86088",
      "parents": [
        "c80623a641c5b633b077bea2d7f2e2aeae7bf020",
        "eb211c23d572422e80e5e1159c28d7bed2283da2"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Sat Sep 09 20:03:39 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Sep 09 20:03:39 2017 +0000"
      },
      "message": "Merge changes Ia3bcece1,Icd26dc1e am: ec462238f6 am: c201a6bb7d am: 9539d236e7\nam: eb211c23d5\n\nChange-Id: I0b4d324af3a1d7dad4648a9d0ffe0d8c44bee6a9\n"
    },
    {
      "commit": "eb211c23d572422e80e5e1159c28d7bed2283da2",
      "tree": "876d5f0b19f09a044476b606614c826223126136",
      "parents": [
        "f1ae466af8988d82e884dfcf126a1a8a24f36ffe",
        "9539d236e73326888f921cce301923d6d0bbde85"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Sat Sep 09 19:54:02 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Sep 09 19:54:02 2017 +0000"
      },
      "message": "Merge changes Ia3bcece1,Icd26dc1e am: ec462238f6 am: c201a6bb7d\nam: 9539d236e7\n\nChange-Id: I2a5c73a54004c1aa378d25776de0d2080544137d\n"
    },
    {
      "commit": "fa5923157ff0efc3d2adaf18337ac246ae224694",
      "tree": "847e549007bfa7105cb006844087310de8c42486",
      "parents": [
        "b29045ce9d3be5de600b5ab80354c6eee36d8937",
        "0b4a0272c7a2e62681ed3ae1100daa7111e8bc06"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Sat Sep 09 19:42:52 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Sep 09 19:42:52 2017 +0000"
      },
      "message": "Rename aapt_defaults to aapt2_defaults am: 7544b9cbb9 am: 6737dc9448\nam: 0b4a0272c7\n\nChange-Id: Idf3f767e2a978a752b68e22114c2371f29eb1ce7\n"
    },
    {
      "commit": "0b4a0272c7a2e62681ed3ae1100daa7111e8bc06",
      "tree": "064cbcbde21bb3e53144feff7a9b9cb153043b3b",
      "parents": [
        "2dae0e246e885d885bf99f6f133bb19abc2456b4",
        "6737dc944880d0820278b83658da6173e18c5694"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Sat Sep 09 19:33:53 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Sep 09 19:33:53 2017 +0000"
      },
      "message": "Rename aapt_defaults to aapt2_defaults am: 7544b9cbb9\nam: 6737dc9448\n\nChange-Id: I78debad7c68e37bd935b881ad791a771c8ee86c7\n"
    },
    {
      "commit": "c201a6bb7dfb267056cefcc7544c1e0fe1c4be21",
      "tree": "f0d5e1bf2d63cf71273f3c317874cf14fcfc5e8d",
      "parents": [
        "a97f4d4ac3a930285cb3e8beb1ead25c3ccfa2d6",
        "ec462238f68e4be2baf59b841bc96ba0d2a7fb36"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Sat Sep 09 19:28:33 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Sep 09 19:28:33 2017 +0000"
      },
      "message": "Merge changes Ia3bcece1,Icd26dc1e\nam: ec462238f6\n\nChange-Id: Ied36c517ed7fa80dc85b07b1532821dc93628d40\n"
    },
    {
      "commit": "1cb5ab2dc14fb35359525479a7c7356d84904ce1",
      "tree": "5eb3b7f4d8faaa92f434481c86a098a1a2a18d07",
      "parents": [
        "896f01879b424e4f37e65bcf546dc9d5cd712e25"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Fri Sep 08 22:44:51 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Sat Sep 09 06:17:24 2017 +0000"
      },
      "message": "Rename aapt_defaults to aapt2_defaults\n\nSo that tools/aapt/Android.bp can have aapt_defaults.\n\nTest: m aapt2\nChange-Id: I32e438efb3516d73b347e67297aa09bee91520b1\nMerged-In: I32e438efb3516d73b347e67297aa09bee91520b1\n"
    },
    {
      "commit": "7544b9cbb9f0843cd306372087f5b6150021eed5",
      "tree": "2cab2aa08304156560ad5a0b5d83288724749fb4",
      "parents": [
        "be7ccdf6e91bb173e5bc9e5081ccea3b25335d8f"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Fri Sep 08 22:44:51 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Fri Sep 08 23:11:49 2017 -0700"
      },
      "message": "Rename aapt_defaults to aapt2_defaults\n\nSo that tools/aapt/Android.bp can have aapt_defaults.\n\nTest: m aapt2\nChange-Id: I32e438efb3516d73b347e67297aa09bee91520b1\n"
    },
    {
      "commit": "85aee73e98118e68c13c17dbef26b3b73dcaec40",
      "tree": "36d10684cd2afa0a7284b8f59c4d548f2b64e8bb",
      "parents": [
        "8157ab2a0e1ae9d84debe7ad3ef8d889a4a203b4"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Fri Sep 08 21:26:31 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Fri Sep 08 22:44:19 2017 -0700"
      },
      "message": "aapt: Always use our libz\n\nInstead of using the system libz (-lz), include our copy as a static\nlibrary. This is safer in case the system version isn\u0027t compatible.\n\nAlso removes references to -ldl -lrt -lpthread, which are now implied.\n\nTest: m -j\nTest: out/host/linux-x86/nativetest64/libaapt_tests/libaapt_tests\nTest: out/host/linux-x86/nativetest64/aapt2_tests/aapt2_tests\nTest: out/host/linux-x86/nativetest64/libsplit-select_tests/libsplit-select_tests\nChange-Id: Icd26dc1e0d011e5b5f158e562640533c5ac34e33\n"
    },
    {
      "commit": "29670d981f20e7b19771b9458b2d7d0d63f97355",
      "tree": "8ff6f4603d77e95f5c6689e29cdc88dc71745973",
      "parents": [
        "8a70ee2d67688a82dd46db7985481dcb671af748",
        "46c4d72bf0c30d3bc2071b84e2741e404c45e2b7"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Sep 07 18:32:17 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 07 18:32:17 2017 +0000"
      },
      "message": "Merge \"AAPT2: Add \u003coverlayable\u003e tag support\""
    },
    {
      "commit": "6ed4061abf6a2b2719e916ffa9498786f01fc6b0",
      "tree": "4763d27c70d51014089de210821d4de994ec29c3",
      "parents": [
        "9e16e1dd17d944d7a06aac1380c0f54415b04982"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Wed Sep 06 10:00:07 2017 -0700"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Wed Sep 06 10:21:02 2017 -0700"
      },
      "message": "AAPT2: Debug::DumpXml display compiled attribute values.\n\nTest: manually dumped a compiled  AndroidManifest.xml file.\n\nChange-Id: I14f022fd1f95693b21d07b7b8c1886f23738242a\n"
    },
    {
      "commit": "84be36e7b5655aade511b2b0864c720e0e0e09a2",
      "tree": "1a8023e7ae78d1b43cea23a45a0dabffff53c83a",
      "parents": [
        "bfe2580b2479391cfc194e538264d79794d077a2",
        "1e22b33f34d7cd72fa11388e65a1cca8a1d41452"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Sep 05 18:59:39 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Sep 05 18:59:39 2017 +0000"
      },
      "message": "Merge \"AAPT2: Make sure to fail when XML linking fails\" into oc-mr1-dev\nam: 1e22b33f34\n\nChange-Id: Ic32bb2076e65d66fbba2c59f29f31d132b12fa0a\n"
    },
    {
      "commit": "1e22b33f34d7cd72fa11388e65a1cca8a1d41452",
      "tree": "e8683357fdd89b74da44713265d84e2014a852f5",
      "parents": [
        "88aa3d0f3e2d53ef99ac7caed838ab02c0d85d80",
        "de7b74233513b3b962737d95bf1a73be4282452c"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Sep 05 18:53:44 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 05 18:53:44 2017 +0000"
      },
      "message": "Merge \"AAPT2: Make sure to fail when XML linking fails\" into oc-mr1-dev"
    },
    {
      "commit": "9e16e1dd17d944d7a06aac1380c0f54415b04982",
      "tree": "a13225e713fe5b32b26fc5d5a37c4b75617b7028",
      "parents": [
        "e341d061edb34cbec9b95cb37f772caf9f8b6d4c",
        "efe45392c300f922e8328281a0aab8260c1d171d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 01 20:57:53 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 01 20:57:53 2017 +0000"
      },
      "message": "Merge \"AAPT2: Multi APK generator by version\""
    },
    {
      "commit": "f43fb61ab66c79dd2f6e39767c3242cce320e9dc",
      "tree": "18981d9785fa5797ab96ff5fca470346550af897",
      "parents": [
        "73114a400df13dea21f31c45a43aff1b93a13e4c",
        "5d94fb7040c710af38119eebb60e0ecae122d650"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Sep 01 20:46:08 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 01 20:46:08 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fix issue with resource deduping\""
    },
    {
      "commit": "efe45392c300f922e8328281a0aab8260c1d171d",
      "tree": "a747038c898f6fd25680054bb328bcd9674d58e2",
      "parents": [
        "44bc284d96eb551117564ca004a6f2f7bc6aeddd"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Mon Aug 21 14:39:28 2017 -0700"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Thu Aug 31 16:30:38 2017 -0700"
      },
      "message": "AAPT2: Multi APK generator by version\n\n- Added an additional axis for generating a multi-apk split by minimum\nAndroid SDK version. This removes any resources that will not be used\nfor the desired minimum SDK version. If there are multiple resources\nthat would be valid for any version newer than the requested minimum,\nthen all would be kept so that the best match can be found.\n\n- Added a context wrapper to set the appropriate Android SDK version for\neach generated artifact.\n\n- Split out the FilterTable method to allow it to be directly tested\nwithout the need to mock the APK writing steps.\n\nTest: Unit tests\nTest: manually run optimize command\n\nChange-Id: I7e6018df081af9ed5d9e8aaf40ed216c1275f138\n"
    },
    {
      "commit": "58396d4e4903f0e9f7801d6c94e6284bfa387a0c",
      "tree": "1ba1e2ca2ac9e375696fff562b0ceee6f1753a71",
      "parents": [
        "bf5daf4565aa367017561b3768b9b1194f89d904",
        "4f4a3414028e97810af191a3628ec03ce0c3a609"
      ],
      "author": {
        "name": "Mårten Kongstad",
        "email": "marten.kongstad@sony.com",
        "time": "Thu Aug 31 23:18:09 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 31 23:18:09 2017 +0000"
      },
      "message": "Merge changes I7218f17a,I96b7340a am: 111c955d1d am: 96e763fe71 am: 38f0f5687f\nam: 4f4a341402\n\nChange-Id: Ibe4fdcdfaa1948001d884eaa099cc84258ad68bc\n"
    }
  ],
  "next": "4f4a3414028e97810af191a3628ec03ce0c3a609"
}
