)]}'
{
  "log": [
    {
      "commit": "b0643302c78d00db3036707a0df0ae5ce923ae15",
      "tree": "a77389c644eff8b5ef167c8e88f831a65a73e739",
      "parents": [
        "dcc0da281b4a7e250a732da524f90cbb954516eb"
      ],
      "author": {
        "name": "Luke Nicholson",
        "email": "lukenicholson@google.com",
        "time": "Fri Dec 01 15:29:03 2017 -0800"
      },
      "committer": {
        "name": "Luke Nicholson",
        "email": "lukenicholson@google.com",
        "time": "Mon Dec 04 17:54:05 2017 -0800"
      },
      "message": "Enable obfuscation of resource names, with whitelisting support.\n\nTest: Built aapt2, ran optimize on gmail apk with sample whitelist\nconfig file, and flags enabled. Added two unit tests to TableFlattener\ncovering obfuscation logic.\n\nChange-Id: Iad6329d75ff440121bf1a2cdf09c5f4bf4199d9d\n"
    },
    {
      "commit": "1da6e70b7eb8b72908131534a15877dea3db3f42",
      "tree": "82d8a3b3b13839b01cf05484285de8c03bf00301",
      "parents": [
        "d583858adc586aee445cf9885b17f9c6b3aa64f6",
        "e2a0c1d062527cb06aa53e3f8e7274d77f3abe02"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Thu Nov 30 23:51:04 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Nov 30 23:51:04 2017 +0000"
      },
      "message": "Merge \"Fix warning from clang+mingw\" am: 7fce15dc5e am: 31bcd7acea\nam: e2a0c1d062\n\nChange-Id: I9212bf71035641d5efedf8f06627a62e9694806c\n"
    },
    {
      "commit": "e2a0c1d062527cb06aa53e3f8e7274d77f3abe02",
      "tree": "3a4284c3bdb2ae57e74c11e92bc0520405e00318",
      "parents": [
        "54a7cba93448ba2f8f809d8883706a1b390be2aa",
        "31bcd7acea8aa81d1364f04bb259c9f37418a63a"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Thu Nov 30 23:26:44 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Nov 30 23:26:44 2017 +0000"
      },
      "message": "Merge \"Fix warning from clang+mingw\" am: 7fce15dc5e\nam: 31bcd7acea\n\nChange-Id: Ibb5c891fe3c219d75be8c124c9be215a31b2a241\n"
    },
    {
      "commit": "31bcd7acea8aa81d1364f04bb259c9f37418a63a",
      "tree": "8aab869221efd58c3f5787d9112089709f229ca0",
      "parents": [
        "4f9f278341edff643540d0da5c6dd53ae92ee23c",
        "7fce15dc5e190859ceef8e6a46f3cd4133eb9c7d"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Thu Nov 30 23:18:38 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Nov 30 23:18:38 2017 +0000"
      },
      "message": "Merge \"Fix warning from clang+mingw\"\nam: 7fce15dc5e\n\nChange-Id: I1b318913c3ead77369bdb62c10e5e08803cb10b8\n"
    },
    {
      "commit": "621ef3fa1c09c306508ab688881ca0d694351c65",
      "tree": "05053477d4038f2eaa5d2a9ee55d3a38eb6177c6",
      "parents": [
        "f01dd5e6261b032fb0728fafc595e6c8dff0610f",
        "20ac034086b641dbd93df3e4c63b2600cc3aa260"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 30 21:01:00 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 30 21:01:00 2017 +0000"
      },
      "message": "Merge \"AAPT2: Specify the output APK in log messages\""
    },
    {
      "commit": "20ac034086b641dbd93df3e4c63b2600cc3aa260",
      "tree": "71cfee08f4aededea6c816522dd271f718cf0bdb",
      "parents": [
        "41499dfe188cbd038005b8a07cc31ce2bca8cf5e"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Wed Nov 29 16:55:05 2017 -0800"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Thu Nov 30 10:24:18 2017 -0800"
      },
      "message": "AAPT2: Specify the output APK in log messages\n\nExtend the context wrapper to allow it to also know the current artifact\nthat is being generated and to use that as a source for diagnostics\nmessages.\n\nTest: ran unit tests\nTest: manually ran optimize to split and APK and verified log messages\n\nChange-Id: I1d66dacb38db58d57d2fffaa19f5fdaff9f908df\n"
    },
    {
      "commit": "fb4ed78bde052502861c913e1853f888ea297d2a",
      "tree": "f544fdfea82abf64851266041247a5d53550ad6f",
      "parents": [
        "06e314f6cc0d629f59579f8bd549915580f79b4b"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Nov 29 18:17:08 2017 -0800"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Nov 29 18:17:08 2017 -0800"
      },
      "message": "Fix warning from clang+mingw\n\nI suspect this is showing up in this configuration because we\u0027re now building\nwith -std\u003dgnu++14, but still using libstdc++.\n\nframeworks/base/tools/aapt2/link/ProductFilter_test.cpp:76:24: error: chosen constructor is explicit in copy-initialization\n  ProductFilter filter({});\n                       ^~\nprebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8/x86_64-w64-mingw32/include/c++/4.8.3/bits/unordered_set.h:132:7: note: explicit constructor declared here\n      unordered_set(size_type __n \u003d 10,\n      ^\nframeworks/base/tools/aapt2/link/Linkers.h:114:58: note: passing argument to parameter \u0027products\u0027 here\n  explicit ProductFilter(std::unordered_set\u003cstd::string\u003e products) : products_(products) {\n                                                         ^\n\nBug: 69933068\nTest: mmma frameworks/base/tools/aapt2\nTest: out/host/linux-x86/nativetest[64]/aapt2_tests/aapt2_tests\nChange-Id: I2133e364dd11f64fd13239125f8a3eff70ebb69c\n"
    },
    {
      "commit": "23034b911c60d4a24ca036436b3a3c138d904255",
      "tree": "fccd1980dfd69073cdb5da6ca65cc8ce23d9c272",
      "parents": [
        "bd03daf5a44818d9fb7e51ebf532c53b9e2e0697"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Nov 29 16:27:44 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Nov 29 16:29:08 2017 -0800"
      },
      "message": "AAPT2: Fix overzealous AndroidManifest fully qualified class names\n\nManifestFixer would go and fully qualify all elements with the attribute\n\u0027android:name\u0027, which is not correct, especially for cases like\n\n  \u003cuses-split android:name\u003d\"foo\" /\u003e\n\nTest: make aapt2_tests\nChange-Id: I4bea2550d0025179d2d48dca8c64e0cbf4451e99\n"
    },
    {
      "commit": "70fdf76c52224217179529be868c47b3194f1551",
      "tree": "9ca3710214c5e292136989e0332681a293b1cc46",
      "parents": [
        "15176cd986b0970c636036f60e97d5be53f3ce91"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Mon Nov 27 19:29:42 2017 +0000"
      },
      "committer": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Mon Nov 27 19:33:47 2017 +0000"
      },
      "message": "AAPT2 - Make raw files of type unknown.\n\nBug: 69791607\nTest: Manual.\n\nChange-Id: I6ee5ef37fb447ab79d46b57e0dc4eaad84eec723\n"
    },
    {
      "commit": "f85eec8403226be8cb7584b95ea185616d2e017b",
      "tree": "7bdb41112e8a2d97dd9f1e64e690385dcf823e6a",
      "parents": [
        "de3766e95d880ea6c9f3e9280a8ac921effe47a8"
      ],
      "author": {
        "name": "Adam Koski",
        "email": "adamkoski@google.com",
        "time": "Wed Nov 15 12:48:49 2017 -0800"
      },
      "committer": {
        "name": "Adam Koski",
        "email": "adamkoski@google.com",
        "time": "Mon Nov 20 14:54:28 2017 -0800"
      },
      "message": "Fix conditional keep rules for new semantics\n\nNew conditional syntax is a logical AND, not OR. This means if a\nresource should be conditionally kept by multiple ids, we need to\ngenerate a separate rule for each condition (which will be interpreted\nas OR).\n\nTest: unit tests\nBug: 69341430\nChange-Id: I0786c65561d36fbf43d181a2dfd0c7eaf1d96b8c\n"
    },
    {
      "commit": "f84b4204c3109e7f9feabe2536247193301a698d",
      "tree": "bc7a86b87837e85a61094f367c04b236272eef63",
      "parents": [
        "06b73ece42cb6775224763763a1322ac0c68a4fa",
        "e7b0a330db58c21366390c39896a4d1ca306495e"
      ],
      "author": {
        "name": "Donald Chai",
        "email": "dchai@google.com",
        "time": "Sat Nov 18 03:19:30 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Nov 18 03:19:30 2017 +0000"
      },
      "message": "Merge \"AAPT2: whitelist alphanums instead of blacklisting hyphens in package names.\" into oc-mr1-dev\nam: e7b0a330db\n\nChange-Id: I7943dc35ceeca0c3fdb4df668a761889cd0add2d\n"
    },
    {
      "commit": "e7b0a330db58c21366390c39896a4d1ca306495e",
      "tree": "472b36c6795f55deb9637448dfdd25325080769a",
      "parents": [
        "16277b2ac05540902036184b72c069a572004e40",
        "2ba1bc579fcc9085f95ca2061eabe2cd7ebe4613"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Nov 18 03:03:19 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Nov 18 03:03:19 2017 +0000"
      },
      "message": "Merge \"AAPT2: whitelist alphanums instead of blacklisting hyphens in package names.\" into oc-mr1-dev"
    },
    {
      "commit": "f7b3a7e908ec612abe33f14c51c7b9693e4d70c5",
      "tree": "e216d7a552798b91807d515b3e6681da6a0f99e8",
      "parents": [
        "ff3a8080f69a95787ce24e2218b8f091a1d38a19",
        "5a217b052d360d998ea809d894ebb164e436e5e4"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 17 19:25:28 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 17 19:25:28 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fix debugging output\""
    },
    {
      "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": "a693c4a32ebed4e96dcc1cf6a706e8ebbb004db2",
      "tree": "902f4d5abd493ccb8087b941676e2562c8db128b",
      "parents": [
        "60303333dc8ad61e640992cee2b5c601be73faf8"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 09 11:29:39 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 16 12:06:17 2017 -0800"
      },
      "message": "AAPT2: Move all file output to FileOutputStream\n\nFileOutputStream is safe to use on Windows, as it opens\nfiles using our compatibility API.\n\nBug: 68262818\nTest: make aapt2_tests\nChange-Id: Ib0b27e93edd609b49b1327db7d9867a002198ebb\n"
    },
    {
      "commit": "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": "cc8aa11f6c08ed621776dffc91bbbd6b21c6b6de",
      "tree": "d4489d7d4606485988653bebbd8d8f39ac2b2061",
      "parents": [
        "24f9ac4ecf1d0497d8175ba61b62d7fcfd9036b6",
        "07d8249c4bc1ac50ba1e81d99b39ce87ef4ed62c"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 10 17:50:49 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Nov 10 17:50:49 2017 +0000"
      },
      "message": "Merge \"AAPT2: Differentiate between Android and Java package names\" into oc-mr1-dev\nam: 07d8249c4b\n\nChange-Id: I0a3235052cea9041cf6c944f71879d304bce5a56\n"
    },
    {
      "commit": "07d8249c4bc1ac50ba1e81d99b39ce87ef4ed62c",
      "tree": "41ba55f3fe3c94fed1e517d26bc6bfbe50c4e54f",
      "parents": [
        "430ed075960430030270f55fa33fcdf6e0952b5f",
        "81e9ecfc0049883871ba72ecaf0908834e6ae3d5"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 10 17:32:52 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 10 17:32:52 2017 +0000"
      },
      "message": "Merge \"AAPT2: Differentiate between Android and Java package names\" into oc-mr1-dev"
    },
    {
      "commit": "2ba1bc579fcc9085f95ca2061eabe2cd7ebe4613",
      "tree": "d310c55369de6eaef9f80b61c1e13288e65aa86a",
      "parents": [
        "9e628b60ba92448045e28e920e482915c27d4d79"
      ],
      "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": "Fri Nov 10 17:23:26 2017 +0000"
      },
      "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(cherry picked from commit 414e48a54143d78498dff381518c81e0c64ad56e)\n"
    },
    {
      "commit": "6385bbd860b8837da6f307658cb7516790823250",
      "tree": "10299b8684dd65f244b93466404dc8ec425504d0",
      "parents": [
        "222f4a2c81d512a53e27fd012d6c549d9deccf81",
        "751e69b38b19398c221e9ef364e21d812763b3e2"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 10 10:13:26 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Nov 10 10:13:26 2017 +0000"
      },
      "message": "Merge \"AAPT2: Workaround for feature splits without namespacing\" into oc-mr1-dev\nam: 751e69b38b\n\nChange-Id: I8791a0cbfb32c25a0c73552c47509cce1d5f06e2\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": "1210e8c81bc3fafd49a18dee0ca26ae63d713c71",
      "tree": "85a6e65280f1b217641df617fe5fbd1f3e48cfbc",
      "parents": [
        "97ff9f9d27277b4d94eef0caf1afaae691e0ba6d"
      ],
      "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 23:00:56 2017 +0000"
      },
      "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\nMerged-In: Ic553ed42656436bbb949393d0248ee7bb9d37860\nChange-Id: Ic553ed42656436bbb949393d0248ee7bb9d37860\n"
    },
    {
      "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": "81e9ecfc0049883871ba72ecaf0908834e6ae3d5",
      "tree": "7c30097ed6ffce65efd3dc09e82deca3a335b198",
      "parents": [
        "97ff9f9d27277b4d94eef0caf1afaae691e0ba6d"
      ],
      "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": "Thu Nov 09 01:49:58 2017 +0000"
      },
      "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\nMerged-In: I1052e9e82b6617db6065ce448d9bf7972bb68d59\nChange-Id: I1052e9e82b6617db6065ce448d9bf7972bb68d59\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": "114616b27dd4f3da313e933a51980e68f5c5cce7",
      "tree": "11897358ca90d547a6f32872e9cfedc764545b1a",
      "parents": [
        "42884cf71da00b54ce86a6f2ca5f3eb61e2e7e09",
        "c8f5fc284cc635f7056307e55121e439b21ac83a"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Wed Nov 01 15:49:39 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Nov 01 15:49:39 2017 +0000"
      },
      "message": "AAPT2: Allow for nested inline xmls\nam: c8f5fc284c\n\nChange-Id: Ie80ba078d893d1b894d289645dae84fa2af58c40\n"
    },
    {
      "commit": "c8f5fc284cc635f7056307e55121e439b21ac83a",
      "tree": "5076d7cc590aa4cb8d7bada63302642d49acc421",
      "parents": [
        "49767aa7f70462cf4b6a1bcdf3832eb6e74f9d65"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Mon Oct 30 19:06:23 2017 -0700"
      },
      "committer": {
        "name": "Tenghui Zhu",
        "email": "ztenghui@google.com",
        "time": "Tue Oct 31 23:13:03 2017 +0000"
      },
      "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(cherry picked from commit 7b6b02bd13aea90b938c3ab3b1eaa3fb5043f931)\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": "fa1d67a6f88fcbfdb3d91e59a2ceac1f9003cda6",
      "tree": "c87c3554cfac0ca44484cdf78f81e16820698789",
      "parents": [
        "b08aa082a400274606093a4b163560cf31914b1c",
        "81831f89ce65ee275652f95322cc167f54da7c85"
      ],
      "author": {
        "name": "Tenghui Zhu",
        "email": "ztenghui@google.com",
        "time": "Tue Oct 24 16:36:28 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 24 16:36:28 2017 +0000"
      },
      "message": "Merge \"AAPT leave \u003cgradient\u003e alone for VDC\" into oc-mr1-dev\nam: 81831f89ce\n\nChange-Id: I0ee4801c31a63b8e617adb053a773456814b65ff\n"
    },
    {
      "commit": "81831f89ce65ee275652f95322cc167f54da7c85",
      "tree": "d4e1c6aaca7b0e8da4cd6baf1b860fb6ec6030fc",
      "parents": [
        "72b3d46794cf1630f5938bd6c50568d96037abe9",
        "f49cce3aa6f625cfc7288886c044992e1580dbbc"
      ],
      "author": {
        "name": "Tenghui Zhu",
        "email": "ztenghui@google.com",
        "time": "Tue Oct 24 16:22:49 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 24 16:22:49 2017 +0000"
      },
      "message": "Merge \"AAPT leave \u003cgradient\u003e alone for VDC\" into oc-mr1-dev"
    },
    {
      "commit": "b08aa082a400274606093a4b163560cf31914b1c",
      "tree": "7e103839fd2146c92f118c1b443b4408bbf99fb2",
      "parents": [
        "bbb2eb3f59e05bdb3d5a01afd8c44bcf41aacb5b",
        "72b3d46794cf1630f5938bd6c50568d96037abe9"
      ],
      "author": {
        "name": "Donald Chai",
        "email": "dchai@google.com",
        "time": "Tue Oct 24 11:31:04 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 24 11:31:04 2017 +0000"
      },
      "message": "Merge \"AAPT2: Sanitize resource qualifiers before using in split names.\" into oc-mr1-dev\nam: 72b3d46794\n\nChange-Id: I1f87fce18c665433ad916ac47cd3f78ae007c776\n"
    },
    {
      "commit": "72b3d46794cf1630f5938bd6c50568d96037abe9",
      "tree": "1d69e62e629a3b057ca3420414d2f4c8ee88d246",
      "parents": [
        "6575d483cc12747e8f6790e369ed59c15e3ff91a",
        "50bae79111afcdb8d36d73cac15155cb61df2dc0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 24 11:16:03 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 24 11:16:03 2017 +0000"
      },
      "message": "Merge \"AAPT2: Sanitize resource qualifiers before using in split names.\" into oc-mr1-dev"
    },
    {
      "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": "50bae79111afcdb8d36d73cac15155cb61df2dc0",
      "tree": "6a3553b683236880a512e72575887b4746b830a2",
      "parents": [
        "db768d45e0f9d3fb9928257324249a9cdad7b539"
      ],
      "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": "Thu Oct 19 19:49:01 2017 +0000"
      },
      "message": "AAPT2: Sanitize resource qualifiers before using in split names.\n\nFixes: 67960909\nTest: UtilTest.SplitNamesAreSanitized\nChange-Id: I9ba1b8430a00cc7ce981075a60388f275c41dbea\n(cherry picked from commit b8f078c9a0c9f32ad84c475c26299ecb00962ffa)\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": "f49cce3aa6f625cfc7288886c044992e1580dbbc",
      "tree": "65c5fd21daf585acf09e6ba546513b3fe9edb1b6",
      "parents": [
        "2806975bfbf83e1ff0617ccb8cdb793af3721b0f"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Oct 13 15:56:08 2017 -0700"
      },
      "committer": {
        "name": "Tenghui Zhu",
        "email": "ztenghui@google.com",
        "time": "Mon Oct 16 20:24:51 2017 +0000"
      },
      "message": "AAPT leave \u003cgradient\u003e alone for VDC\n\nbug: 62421666\nTest: Tested with changes for Gradient of VDC.\n\nChange-Id: I07b39721aeaaafd888416a0f71f6cbd5fce97732\n(cherry picked from commit ab2a38c03d54fad1ed0873ac091959ee38823cd6)\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"
    }
  ],
  "next": "6e241e7e5408aae655362905a78d29e6c52ca305"
}
