)]}'
{
  "log": [
    {
      "commit": "0a5b201156f1dd01a7da7b7674798ed57cfafc5a",
      "tree": "c2682b213bb6f5c3bc390631dbc7e71ea6f527e2",
      "parents": [
        "8dbbdf0c370c56426ffde06ccdbe55d2ffb9fb8d"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Thu Jun 22 12:24:12 2017 -0700"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Wed Aug 16 19:19:54 2017 +0000"
      },
      "message": "AAPT2: Add a APK filtering.\n\nAllow resource files to be removed from the final artifact based on the\ndensity and locale configuration in the config file. The APK is split\nalong the density, locale and ABI axis. Each split is generated from the\noriginal APK without modifying the original. The new resource table is\nwritten back to the file system with unneeded assets etc removed.\n\nTest: Unit tests\nTest: Manually run optimize command against an APK and inspect results\nTest: Installed split searchlite APK (after resigning) and ran on N6\n\nChange-Id: If73597dcfd88c02d2616518585d0e25a5c6a84d1\n"
    },
    {
      "commit": "38ef937bada0cf8e633c0319c4e550c335cce504",
      "tree": "645eab7c72598899ae669517bb5824a6a48be3ca",
      "parents": [
        "1583a4f9c8b789d5b7016dc64e68698a46cbb4eb",
        "c0a5e1e6004229cd53a6c3c271d5d657e93bf7ef"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Aug 15 18:33:47 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 15 18:33:47 2017 +0000"
      },
      "message": "Merge \"AAPT2: Make sure to fail when XML linking fails\""
    },
    {
      "commit": "f32af48069f590a998f7dde188ea5afd3ffe2d96",
      "tree": "04153a73d51d50142072fb275b45e5f935797f52",
      "parents": [
        "ef2d2c60603c12884fb580beab226c6bc4dc9272"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Fri Aug 11 15:00:49 2017 -0700"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Fri Aug 11 17:28:12 2017 -0700"
      },
      "message": "Fix parsing enum types in incident report tool as well as adding\nsome additional loggings\n\nTest: manually flashed to device and test calling IncidentManager.java\nfunctions\nChange-Id: I69610414edde865b20ba632837f037fbe43f99db\n"
    },
    {
      "commit": "a27ca01955521629b10d812d2d90567a397498aa",
      "tree": "47a3163999e7510413d1bbeccaf4162397782664",
      "parents": [
        "0f44b63cd5251a1353c2e7978fd419ba3290ad9b",
        "09f4d706d9438980465faabe81ed143fc299343e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 09 18:32:13 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 09 18:32:13 2017 +0000"
      },
      "message": "Merge \"AAPT2: Forward @TestApi in resource comments to JavaDoc\""
    },
    {
      "commit": "49f0aa41f1df61f5899786f07704b75584417d6d",
      "tree": "7154d13991f9e3eefadf8b1401aeef3d25cbc4df",
      "parents": [
        "bfcff7be3099338fffca4af65967c030d47dd0e4",
        "efeb7af13be4446ce4a511a2ca707691e9a67c1e"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Aug 08 22:18:55 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 08 22:18:55 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fix windows unicode path issues\""
    },
    {
      "commit": "09f4d706d9438980465faabe81ed143fc299343e",
      "tree": "ec9f2f045d10ebe37198af36aab02b5ccf31a62a",
      "parents": [
        "b76b3056f57be4abf9fae1375861a5e7c897b074"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Aug 08 10:39:55 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Aug 08 10:51:23 2017 -0700"
      },
      "message": "AAPT2: Forward @TestApi in resource comments to JavaDoc\n\nBug: 37894597\nTest: make aapt2_tests\nChange-Id: I357fb84941bfbb3892a8c46feb47f55b865b6649\n"
    },
    {
      "commit": "e2ba325d278881dc3b3eabab74b75299368e9ac8",
      "tree": "d131a9cbfb3264df1edaa8ad6b71ad6736e5368d",
      "parents": [
        "bf567be4e0cfe260f8be51080556cef826173061",
        "13c0c748884d796e7d8e9c104033013e925966da"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Aug 08 17:41:00 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 08 17:41:00 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fix typo in Config parsing\""
    },
    {
      "commit": "1c9f0fb7ecfd9532d48520dd412b7aa4bffad7a2",
      "tree": "a0c0512e1d275a2ff441a2a485c506ba0d026aa6",
      "parents": [
        "3bec59a7779f2395f82aad9262f91690150ef43b",
        "0853500201651a3cd2efd44a6317a82f7f4c05e8"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 08 00:26:31 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 08 00:26:31 2017 +0000"
      },
      "message": "Merge \"AAPT2: Change proto format to reduce usage of StringPool\""
    },
    {
      "commit": "c0a5e1e6004229cd53a6c3c271d5d657e93bf7ef",
      "tree": "89562c7b1ccbace4c94cc443922d576bfd8d953a",
      "parents": [
        "b76b3056f57be4abf9fae1375861a5e7c897b074"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Aug 07 11:56:32 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Aug 07 11:56:32 2017 -0700"
      },
      "message": "AAPT2: Make sure to fail when XML linking fails\n\nBug: 64367402\nTest: manual\nChange-Id: I3082887f5e449d8d0dac2aad93a834eb346008ba\n"
    },
    {
      "commit": "0853500201651a3cd2efd44a6317a82f7f4c05e8",
      "tree": "3bf3e592bcf89e557862b85cd6e8bd7b92661aa9",
      "parents": [
        "b76b3056f57be4abf9fae1375861a5e7c897b074"
      ],
      "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": "Mon Aug 07 11:45:46 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\nChange-Id: I984755170c315730ab751b51133f8fb2f614f6af\n"
    },
    {
      "commit": "13c0c748884d796e7d8e9c104033013e925966da",
      "tree": "386f44d966e9c54a92cdf86b99eff79435682691",
      "parents": [
        "b76b3056f57be4abf9fae1375861a5e7c897b074"
      ],
      "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": "Mon Aug 07 10:53:55 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\nChange-Id: Icb9cb2d5ad061e3ea1c43dc1cd7ca2f222965cdc\n"
    },
    {
      "commit": "61cf5b68b5a65ef955ed2c57fd1f3cce8f6f9fcb",
      "tree": "5f693733e2f2805bb0f43795472f946e37399996",
      "parents": [
        "028dd39daf353ee28cf11fe84ce844f66fe4cc9b",
        "4dc5812dc065df9ce7427fdb270120cdf44025c3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 04 17:17:45 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 04 17:17:45 2017 +0000"
      },
      "message": "Merge \"Fix clang-tidy performance warnings in aapt2.\""
    },
    {
      "commit": "028dd39daf353ee28cf11fe84ce844f66fe4cc9b",
      "tree": "d25af25cdee1f8c4da74d2d3048c36206b3ccb51",
      "parents": [
        "daa2a7f4bdfd86a3588661a1470ee56b098f7d14",
        "fd3326f3d3a41f7876a2868ba96851c5951527c9"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Aug 04 16:43:35 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Aug 04 16:43:35 2017 +0000"
      },
      "message": "Merge \"Move inserted method after end of try block\" am: b080b22a17 am: a413870ef5 am: 4a3caf1719 am: 3a40330f3f\nam: fd3326f3d3\n\nChange-Id: I63f13e5957180e4bc332d8f8c1e29508806a49f0\n"
    },
    {
      "commit": "fd3326f3d3a41f7876a2868ba96851c5951527c9",
      "tree": "c898f6da7d8338db0c64f4044aecf07bb40b7805",
      "parents": [
        "0b5d4d671bfcd1552811aa7dc5ccf06782244161",
        "3a40330f3f628b1c10f7fe57333c24f50be9849c"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Aug 04 16:31:31 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Aug 04 16:31:31 2017 +0000"
      },
      "message": "Merge \"Move inserted method after end of try block\" am: b080b22a17 am: a413870ef5 am: 4a3caf1719\nam: 3a40330f3f\n\nChange-Id: Iae9e94011fe4ad232e049a7e18defed9c2cc2ce6\n"
    },
    {
      "commit": "3a40330f3f628b1c10f7fe57333c24f50be9849c",
      "tree": "74494d91a5072a0b62d6e6eec78fae0252e22f88",
      "parents": [
        "569b01b83a5980a74693e6ec874b647d2a3f1185",
        "4a3caf17196d0ae21e67d6c4292d39fd8dd41716"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Aug 04 16:18:57 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Aug 04 16:18:57 2017 +0000"
      },
      "message": "Merge \"Move inserted method after end of try block\" am: b080b22a17 am: a413870ef5\nam: 4a3caf1719\n\nChange-Id: Ib6c4527df0f575217bad0c7e1f2a6b50f203beb7\n"
    },
    {
      "commit": "a413870ef5d1cd69afb16eccdb36e7a2a8b980a0",
      "tree": "a9c3239866d8dd65463a158b9c290964d988b7a9",
      "parents": [
        "008ddd928d1fbb670d3b7376a1564bbf1d9d81ef",
        "b080b22a178071dcdd10e931d69d9c8b59c58aaf"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Aug 04 16:06:02 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Aug 04 16:06:02 2017 +0000"
      },
      "message": "Merge \"Move inserted method after end of try block\"\nam: b080b22a17\n\nChange-Id: Ie23cd33f1910de23bb651fb27fcca71507269bdf\n"
    },
    {
      "commit": "cebc382d5f52eca2f16e3747e28d1f67fccc44b4",
      "tree": "3cf5a0cd95cda491a186cfbbecdd4f363e622db9",
      "parents": [
        "49e2a9a612ca15044f5e8b08d0399ee4c8f7a935"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Aug 03 15:58:45 2017 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Aug 03 20:55:37 2017 -0700"
      },
      "message": "Move inserted method after end of try block\n\nMethods inserted at the end of a synchronized {} block also need to\nbe outside of the implicit try{} block.  Make sure the next\ninstruction is the virtual end label for the try block, and put\nthe inserted method after the label.\n\nBug: 64301866\nTest: locked_region_code_injection test\nTest: m -j checkbuild\nChange-Id: I6626aa45580b4df692e02fc6127a2947a6075e2e\n"
    },
    {
      "commit": "efeb7af13be4446ce4a511a2ca707691e9a67c1e",
      "tree": "36dc0651bcad4b81faf41fe730754d96d6eea465",
      "parents": [
        "f0f9fa330772f5f6a13673bd1204251c464ce67b"
      ],
      "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 Aug 03 17:33:52 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\nTest: manual\nChange-Id: I597da51e33729ed1b98bf246e7e773337fd3fee8\n"
    },
    {
      "commit": "079f8e802bef94bf9b2d54088b13f876fc1188d6",
      "tree": "6e581e64ee0a3a4c9738bf124c8a958864cdda43",
      "parents": [
        "98f8cdac41dea6ba9e4291a40e5e1f3fb8e8d829",
        "d3cafac64dc0405aed93774d134cb9abf219b657"
      ],
      "author": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Fri Aug 04 00:12:38 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Aug 04 00:12:38 2017 +0000"
      },
      "message": "Merge \"Bit: Don\u0027t ignore errors and crashes\" into oc-mr1-dev am: 437e43ed1f\nam: d3cafac64d\n\nChange-Id: I2723ca82a18e3c9ac507e6a7113618c1850f577a\n"
    },
    {
      "commit": "4dc5812dc065df9ce7427fdb270120cdf44025c3",
      "tree": "a4e4c495dc800d3a6fab0fe86e558a86eada6a19",
      "parents": [
        "d02180fa204347407c45ff0dbb93a878a663fc08"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Aug 03 16:28:10 2017 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Aug 03 16:28:10 2017 -0700"
      },
      "message": "Fix clang-tidy performance warnings in aapt2.\n\n* Use const reference parameter type to avoid unnecessary copy.\n* Use more efficient overloaded string methods.\n\nBug: 30407689\nBug: 30411878\nTest: build with WITH_TIDY\u003d1\nChange-Id: Iaa0a6f18f64cf573bee49dd1466281ea4d37b410\n"
    },
    {
      "commit": "6fb2c9718cde124f10edfbf45893b5a0cd537e11",
      "tree": "474928936daf5857d1cc341861b1577c107a28ba",
      "parents": [
        "f6764fb7f7a26e202b1ebb861e095979b0f9560a"
      ],
      "author": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Wed Aug 02 14:40:12 2017 -0700"
      },
      "committer": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Wed Aug 02 14:49:30 2017 -0700"
      },
      "message": "Bit: Don\u0027t ignore errors and crashes\n\nBit used to only see success results and failures (\u003d\u003d assertion failures?),\nand didn\u0027t see \"errors\" (other exceptions) and test process crashes.\n\nFixed it.\n\nNow it also returns an error status code if there was a test failure.\n\nBug 64292779\nTest: manual\n\nChange-Id: Iaba93910d32abfc615ae595746a0e9be1108583a\n"
    },
    {
      "commit": "292cece3b2e5a73f503501190f0e69b12c3ecd1f",
      "tree": "6f8f3603ef110e2935ae4ae9dbf64a63a416fd31",
      "parents": [
        "bb7d4f58b9e808fc87fcdc041f20acd6a6770143",
        "060b53d0287f9e685fb5b49b52a864ef85315a22"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Aug 01 19:56:09 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 01 19:56:09 2017 +0000"
      },
      "message": "Merge \"AAPT2: Ensure style strings are always first in StringPool\""
    },
    {
      "commit": "060b53d0287f9e685fb5b49b52a864ef85315a22",
      "tree": "f6011faf3724d6db46fafd68fd73dcdcb462928c",
      "parents": [
        "b74691663d0c181e171b7157d57359d5ce789853"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jul 28 17:10:35 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jul 31 17:46:28 2017 -0700"
      },
      "message": "AAPT2: Ensure style strings are always first in StringPool\n\nMove the styled strings to a separate section of the StringPool so\nthat sorting can never mess up the order of Styles.\n\nBug: 63570514\nTest: make aapt2_tests\nChange-Id: Id2ce1355b92be1bb31ce0daa7e54ae9b5b6c2ffe\n"
    },
    {
      "commit": "18dc03a9fd87b544eef9ef701f676a7c5306594c",
      "tree": "643a4edae66997f2f3e7d554f205bb6db26eb07b",
      "parents": [
        "7ceb8eff19f8f01f5a6fa1d1a6fe8f094d42d9da"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jul 24 18:19:36 2017 -0700"
      },
      "committer": {
        "name": "Andrew Solovay",
        "email": "asolovay@google.com",
        "time": "Thu Jul 27 17:22:09 2017 -0700"
      },
      "message": "Cherry-pick from master: AAPT2: Fix JavaDoc first sentence extraction.\n\nThe old algorithm for detecting the first sentence of a JavaDoc comment\nlooked for the first occurence of \u0027.\u0027. This does not work when code or a\n{@link android.R.styleable} link is encountered in the first sentence.\n\nSwitch to checking for whitespace characters after the \u0027.\u0027 character.\n\nBug: 62900335\nTest: make aapt2_tests , make ds-docs\nOriginal change-Id: I8238f6a6304c9c2f92e2e576ca8962a59c2b20ea\n\nChange-Id: Ie272d0d793d157f2a30f3ead20b2b53976661d33\n"
    },
    {
      "commit": "74468583b32bf45aadcbc2aecb4831ea0a02f62c",
      "tree": "ff227f653549669bfc38fd23b11981e0ddd242c9",
      "parents": [
        "cea12d8d4da70fa4dff71a8a4ae1e01cba3670cf",
        "16cfd497f51de88847f1a565198fd19b26cf30ca"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jul 27 20:04:15 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 27 20:04:15 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fix processing of quotes in XML\" into oc-dr1-dev\nam: 16cfd497f5\n\nChange-Id: Ibe24c4b8750d02774456d6c2d638655ece4c7ffd\n"
    },
    {
      "commit": "7e638bceb939a9aeb5a5571e8bef067258e4f161",
      "tree": "fa48b29d5090f9c392dd58760641e8019cc818c0",
      "parents": [
        "8dddb1a4c257ee2b463b3bd5920724a7afc59ce1",
        "e967d3f6ac2e1e1f612f99b9c76abcb9e13bb7a2"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jul 27 18:15:18 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 27 18:15:18 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fix JavaDoc first sentence extraction.\""
    },
    {
      "commit": "c89568848886d952dfc0fefc020c3e5486ddf716",
      "tree": "572b0c51df7dde08b781d62d043ccb809f9a2b38",
      "parents": [
        "d11e14b42812734068d11fbb11be6c3567072ceb"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jun 29 17:53:36 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jul 26 20:41:34 2017 +0000"
      },
      "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": "7ad5d91eb0a04f7db38956c3abea105edadafd9e",
      "tree": "606e1f6eb365a2e4a642bbdce9206d57e1b78a41",
      "parents": [
        "bdbe65deb8b066b8f8a0eec31c4e936c06f3dd39",
        "3b84124edcd05f8aa61357165cb4a7ffd0c2e9b9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 26 02:13:09 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 26 02:13:09 2017 +0000"
      },
      "message": "Merge \"AAPT2: Add navigation type\""
    },
    {
      "commit": "3b84124edcd05f8aa61357165cb4a7ffd0c2e9b9",
      "tree": "567499f924bc361cb8949e3d43cb3bf64cdacccf",
      "parents": [
        "3370d3230d4e3084ca95eb6d6bb63f27c3cb6f63"
      ],
      "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": "Tue Jul 25 17:16:53 2017 -0700"
      },
      "message": "AAPT2: Add navigation type\n\nTest: build succeeds\nChange-Id: I7d49366c7cc4a93c29bad4cb9f13eec23ad05bd2\n"
    },
    {
      "commit": "7a757a0f08eb3b1df8eb7ee2e915682ee4dca555",
      "tree": "ca1e2b4e430c9a33ea0843b8106e03b2d405c7b8",
      "parents": [
        "72376405054e5ba25b9b6e969eb03aa689b2fd16"
      ],
      "author": {
        "name": "Yunlian Jiang",
        "email": "yunlian@google.com",
        "time": "Tue Jul 25 16:03:05 2017 -0700"
      },
      "committer": {
        "name": "Yunlian Jiang",
        "email": "yunlian@google.com",
        "time": "Tue Jul 25 16:19:19 2017 -0700"
      },
      "message": "fix a memory leak.\n\nThis fixes a memory leak\n warning: Potential leak of memory pointed to by \u0027buffer\u0027 [clang-analyzer-unix.Malloc]\n\nBug:None\nTest: The warning is gone.\nChange-Id: I50bfd9f7d70964da0f1808b73fc6554831020214\n"
    },
    {
      "commit": "e967d3f6ac2e1e1f612f99b9c76abcb9e13bb7a2",
      "tree": "57a3a90478daeaf536af29463e3ac3866777511c",
      "parents": [
        "3370d3230d4e3084ca95eb6d6bb63f27c3cb6f63"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jul 24 18:19:36 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jul 25 15:53:15 2017 -0700"
      },
      "message": "AAPT2: Fix JavaDoc first sentence extraction.\n\nThe old algorithm for detecting the first sentence of a JavaDoc comment\nlooked for the first occurence of \u0027.\u0027. This does not work when code or a\n{@link android.R.styleable} link is encountered in the first sentence.\n\nSwitch to checking for whitespace characters after the \u0027.\u0027 character.\n\nBug: 62900335\nTest: make aapt2_tests\nChange-Id: I8238f6a6304c9c2f92e2e576ca8962a59c2b20ea\n"
    },
    {
      "commit": "6d72a4ea80322fa5efbad9a9ff4858eff2e3b346",
      "tree": "21356a437a08f589fa7df993a8e3c32f146d74b6",
      "parents": [
        "16e2ab5310374ce3eb6224c1601f006fcb649c49",
        "3d6323961c46b608dfb842f170b40b8b18082cfb"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 25 03:18:27 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 25 03:18:27 2017 +0000"
      },
      "message": "Merge \"AAPT2: Add targetConfig to AndroidManifest.xml\""
    },
    {
      "commit": "3d6323961c46b608dfb842f170b40b8b18082cfb",
      "tree": "8a5f0703b58bbfad24d66b3f22d1069cb0e569a7",
      "parents": [
        "3370d3230d4e3084ca95eb6d6bb63f27c3cb6f63"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jul 24 17:08:32 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jul 24 17:08:32 2017 -0700"
      },
      "message": "AAPT2: Add targetConfig to AndroidManifest.xml\n\nSplits may include more/different configurations than they\nwere originally specified to include. This happens, for instance,\nwhen a particular requested density doesn\u0027t exist. A fallback density\nresource is chosen for the split.\n\nThis makes programmatic configuration targetting difficult, as the APK\nmay report that it has resources for multiple densities, while it was\nmeant to target only a specific density.\n\nThis change encodes a comma separated list of the intended configurations\nfor the split in an attribute called \u0027targetConfig\u0027 on the \u003cmanifest\u003e tag of\nAndroidManifest.xml.\n\nTest: manual\nChange-Id: I3167e9341a434abc34ed2ddb8f740762b40b1ab7\n"
    },
    {
      "commit": "1a21b8c04153b5b73a477ebd0622b24f3bbfc603",
      "tree": "8d5c576c1ff90db4f232805749115101497193d2",
      "parents": [
        "bad49cc0f765250336b674bcf3d7b10531a8278c"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Fri Jul 21 09:42:42 2017 -0700"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Tue Jul 25 00:01:18 2017 +0000"
      },
      "message": "AAPT2: Update ReplacePlaceholder for artifact name parser\n\nUpdate the artifact name parser to ensure that duplicate placeholders\nare treated as an error.\n\nAlso applied suggested changes from ag/2447777.\n\nTest: ran unit tests\nChange-Id: Iab8fd9d9b81aa3008177141256ecd16ef04b0c34\n"
    },
    {
      "commit": "ac6efa3ae20f777387dbd7b640ffb958f085a121",
      "tree": "f498a354e43c3af657392227411b4cfc404d933d",
      "parents": [
        "2f7378262f64cf7bf7eee764369c27ec2ef94e95",
        "0c80895c203640148da94bf04a57f1965a1c0d3d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 24 19:29:38 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 24 19:29:38 2017 +0000"
      },
      "message": "Merge \"AAPT2: Document Format.proto\""
    },
    {
      "commit": "6d626c24e3a0f2ee41cbb0abed77c162dafedacb",
      "tree": "de86401967521f3dcca14cb2aecc2cecdf5960f0",
      "parents": [
        "bd77b8e920c72fc8ba922747a543cb1d55a67afa",
        "7beabc264b371be485b136319d54e3cfac75dc41"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@google.com",
        "time": "Thu Jul 20 03:20:22 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 20 03:20:22 2017 +0000"
      },
      "message": "Merge \"Let\u0027s get a constant for O_MR1.\""
    },
    {
      "commit": "7beabc264b371be485b136319d54e3cfac75dc41",
      "tree": "29ae2658f732033538f1a1ec2ec86749d5dff599",
      "parents": [
        "1d47c55407f539d7d57ed16bd088de0a79a6ad82"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Jul 19 13:57:35 2017 -0600"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@google.com",
        "time": "Thu Jul 20 03:19:33 2017 +0000"
      },
      "message": "Let\u0027s get a constant for O_MR1.\n\nTest: none\nExempt-From-Owner-Approval: HULK SMASH!\nChange-Id: I440ebae4d0891d9044bbbfb5beaaaa98639aea98\n"
    },
    {
      "commit": "9f0e7f1dbade4b35b85e23954fa2b7c31d5f2009",
      "tree": "96b29ed091ce96131997ea3814e46838c63efb77",
      "parents": [
        "91936a1d06641c26158bf074a135363082fd4213"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Thu Jun 22 12:26:44 2017 -0700"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Tue Jul 18 20:32:54 2017 +0000"
      },
      "message": "AAPT2: Parse artifact names from template.\n\nAdd a helper method to convert a templated artifact name to file name\nbased on the values present in an Artifact struct. The Artifact\nvalidates that all required template paramters are present.\n\nTest: Unit tests\nChange-Id: Id97ff606bb41c72a31c2d769104966be9cbca1a0\n"
    },
    {
      "commit": "0c80895c203640148da94bf04a57f1965a1c0d3d",
      "tree": "e359adf7997f5a5aa0d805ba428ab6368d6abd09",
      "parents": [
        "f7f48b17cbdfffa130cdb8991a9c2b09f7659664"
      ],
      "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 Jul 13 09:40:03 2017 -0700"
      },
      "message": "AAPT2: Document Format.proto\n\nTest: none\nChange-Id: I6b05bcdece5a310201d3ab0790a4ea1d23698e96\n"
    },
    {
      "commit": "bb94f32a0042c8e2ab3d6e0de1b693713d2a6eab",
      "tree": "db48ae6d8e3dd04f28fa5b17ff1c0efcf1cd36a6",
      "parents": [
        "f7f48b17cbdfffa130cdb8991a9c2b09f7659664"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jul 12 07:41:55 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jul 12 07:42:01 2017 -0700"
      },
      "message": "Revert \"AAPT2: Auto-version adaptive-icon XML\"\n\nThis reverts commit 5b7337f77cf036dda2c7218ccf22dedc774dcf76.\n\nBug: 63579299\nTest: none\nChange-Id: Ib617c4edfc16eeae3507b59b2debeae4f8bbf9a5\n"
    },
    {
      "commit": "f903d5f15ae03795a03c0e15935ffe1db8e870ae",
      "tree": "f502c097e79348de1580e4054f50c51a27534026",
      "parents": [
        "f490ae3e5961a8dfdbd779f0c764b7d44d9d1221"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jul 10 04:19:28 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jul 10 04:19:28 2017 -0700"
      },
      "message": "AAPT2: Bump version number to v2.18\n\nTest: none\nChange-Id: I6e3b4c95a7d7ba416ba368e5b19782dbffa04fd8\n"
    },
    {
      "commit": "41d8ef907af21f0001c458fb235d40a77e357e0b",
      "tree": "5664b381b49ab4de031438910f403484f8ae0fe4",
      "parents": [
        "b10b75a1cf6a5f8582c7778e873c5157ea5d1c53",
        "164e7967b1f47586338805e2ebfdee02a5de85db"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 07 23:28:10 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 07 23:28:10 2017 +0000"
      },
      "message": "Merge \"Bit: support running all tests in a java package.\""
    },
    {
      "commit": "fba0cf2950a91726e475fb180090cc25bcb11a7a",
      "tree": "222ec9ccc4e1710e5a269edd2fffce60ca1692d7",
      "parents": [
        "66ea8400383d5737b996a136f3aead0965f7be3d"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jun 29 17:53:36 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jul 07 13:23:55 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": "66ea8400383d5737b996a136f3aead0965f7be3d",
      "tree": "d4022a48829c1ea7535c71ef61b4c7dccbdca843",
      "parents": [
        "46307b1117de4069e60c9871c7647dfd065a45dc"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jun 28 11:44:11 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jul 07 13:23:55 2017 -0700"
      },
      "message": "AAPT2: Accept Java unicode identifiers\n\nTest: make aapt2_tests\nChange-Id: I75a0e52d43b1785001bfe120eea7484f7bb4682b\n"
    },
    {
      "commit": "10da015d0521a9f767b3669d37dd6e6ac167b6a4",
      "tree": "0d44a60f720af9ede87ef8474779838fdcd73693",
      "parents": [
        "fa66acfd097c4fbc1b55abe69f4e0d183587df02",
        "4fb6516a55604bfbae2e8b1411e1bdd27df1866f"
      ],
      "author": {
        "name": "Igor Viarheichyk",
        "email": "viarheichyk@google.com",
        "time": "Fri Jul 07 16:42:39 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 07 16:42:39 2017 +0000"
      },
      "message": "Merge \"Improved word break for BiDi pseudolocalizer.\""
    },
    {
      "commit": "164e7967b1f47586338805e2ebfdee02a5de85db",
      "tree": "afb8764ccc9de450be7b195c29e3423eb24910d4",
      "parents": [
        "bfce224cd95a7019c86cf9fb1241a0c2ebf7ec42"
      ],
      "author": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Thu Jul 06 16:20:11 2017 -0700"
      },
      "committer": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Thu Jul 06 16:21:26 2017 -0700"
      },
      "message": "Bit: support running all tests in a java package.\n\nIf a target name ends with a period, treat it as a package name\nand run with \"-e package\" instead of \"-e class\".\n\nTest: bit CtsProviderTestCases:android.provider.cts.contacts.\n\nChange-Id: I3a9a0cbef76f57c46c41bf168b7e94eebecaf671\n"
    },
    {
      "commit": "5c15e65825efcefe0e3ef0acaf7062d22c8bad23",
      "tree": "df8e7be6e3c5a70ac111a97b8ac8c79e1da0e991",
      "parents": [
        "0b513504e085cd270fb70ea29523d2ed6bbf15c3",
        "5f9dc424b35e4d3b03c5e7f261f421825410ea15"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 06 22:59:47 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 06 22:59:47 2017 +0000"
      },
      "message": "Merge \"Have bit grant permissions to installed APKs.\""
    },
    {
      "commit": "4fb6516a55604bfbae2e8b1411e1bdd27df1866f",
      "tree": "674a09589c4a845ca4bea340335e8eb683a3ee65",
      "parents": [
        "f02beb06daf49a2113881484579a36249f5a19a1"
      ],
      "author": {
        "name": "Igor Viarheichyk",
        "email": "viarheichyk@google.com",
        "time": "Thu Jul 06 15:23:51 2017 -0700"
      },
      "committer": {
        "name": "Igor Viarheichyk",
        "email": "viarheichyk@google.com",
        "time": "Thu Jul 06 15:41:47 2017 -0700"
      },
      "message": "Improved word break for BiDi pseudolocalizer.\n\nCharacted sequences \\n and \\t are now treated as word separators\nby BiDi pseudolocalizer. This solves issues when text rendering\nengine breaks a line in the middle of a text chunk marked with\nRLM+RLO and PDF+RLM sequences.\n\nBug:34064580\nChange-Id: I52e6018785fae25479fa167440f24c534b0e3253\nFixes:34064580\nTest: make aapt2_tests\nTest: Run aapt2_tests binary\n"
    },
    {
      "commit": "afcd59b4438064726790df4828efe9cc298f5451",
      "tree": "ac3f1eacb4e996fbcfe31e88353ac03ec7ef0636",
      "parents": [
        "093062301f3d1a3b408403128faad0bd0653eccb",
        "549e437e14f3b92f02bd3abc7d1cd68387132ce1"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jul 06 22:37:45 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 06 22:37:45 2017 +0000"
      },
      "message": "Merge \"AAPT2: Iterate over UTF-8 string by codepoints\""
    },
    {
      "commit": "dfbcd36afdae10519757a844e4f30aa1c65c5f23",
      "tree": "bd60d4d7a9acce16c12cf8711ec721650287f948",
      "parents": [
        "2fa4a346ecea162d3e694c2c53582f3cc31bcc68"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jul 06 11:47:17 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jul 06 11:47:17 2017 -0700"
      },
      "message": "Add adamlesinski@google.com as owner of AAPT2\n\nTest: none\nChange-Id: Ief971f7e85050164628d2e25bee888f035a93725\n"
    },
    {
      "commit": "5f9dc424b35e4d3b03c5e7f261f421825410ea15",
      "tree": "73568debc4699e2b78ea973e582727703aac8949",
      "parents": [
        "4f5adb9801e08f34731cfe22be3c197a5dd09ba4"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Jul 06 12:13:42 2017 -0600"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Jul 06 12:15:21 2017 -0600"
      },
      "message": "Have bit grant permissions to installed APKs.\n\nOtherwise unit tests fail spectacularly when they don\u0027t get the\nruntime permissions that they expect.\n\nBug: 63391323\nTest: bit FrameworksServicesTests:com.android.server.NetworkPolicyManagerServiceTest\nChange-Id: I5307e0456865387ac14178268f543e2007b97096\n"
    },
    {
      "commit": "549e437e14f3b92f02bd3abc7d1cd68387132ce1",
      "tree": "b7f1e2089d81ad530b1e78914ad97bdedfeaa9c7",
      "parents": [
        "2fa4a346ecea162d3e694c2c53582f3cc31bcc68"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jun 27 18:39:07 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jun 29 18:17:35 2017 -0700"
      },
      "message": "AAPT2: Iterate over UTF-8 string by codepoints\n\nIterating over a UTF-8 string by codepoints ensures that\nunicode characters do not get sliced. Otherwise the resulting\nstring could contain malformed characters.\n\nBug: 62839202\nTest: make aapt2_tests\nChange-Id: Ia0c44fbceb7dcfa11e77a1a77011da0f5466e342\n"
    },
    {
      "commit": "5b7337f77cf036dda2c7218ccf22dedc774dcf76",
      "tree": "b7aab8df43eeff70759f84e45da95b507edfddcc",
      "parents": [
        "8276d0e1527ad08aae3ec39529b10477358a1dae"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jun 26 14:57:22 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jun 28 11:20:17 2017 -0700"
      },
      "message": "AAPT2: Auto-version adaptive-icon XML\n\nAuto version adaptive-icon XML to v26.\n\nThis change makes the logic for generating versioned resources\nsimpler by changing the comparison function of ResTable_config\nto evaluate the sdkVersion property last, making configurations\nthat differ only in sdkVersion next to each other in a sorted vector.\n\nBug: 62316340\nTest: manual (verified output of tools/aapt2/integration-tests/AppOne)\nChange-Id: I977d45821722a65d2135efb4693304eacc565c9a\n"
    },
    {
      "commit": "f762df257574231ffd08679a69e9cf62fe143dcd",
      "tree": "c4dfe1caec133b9893d0653feb7aaed49263e030",
      "parents": [
        "b2bf85b412c04ac7896b6133a5c562625bc5a8de"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jun 26 16:39:03 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jun 28 11:01:59 2017 -0700"
      },
      "message": "AAPT2: Emit more proguard keep rules for layouts and menus\n\n\u003cfragment\u003e tags in layouts use the class attribute to determine which\nFragment subclass to load, and fallback on android:name if class is not\nset.\n\nAAPT2 only emitted a proguard rule for the class attribute for \u003cfragment\u003e,\nwhen it should emit a proguard rule for the android:name attribute as\nwell.\n\nAAPT2 didn\u0027t handle menu XML, so support for actionViewClass,\nactionProviderClass and onClick is added.\n\nBug: 62216174\nTest: make aapt2_tests\nChange-Id: Ie8675c2bd899a5b51f3661eb0901ab8c9a16fd70\n"
    },
    {
      "commit": "87f1e0fd31585e0117715f451c379d25c5ef7cb8",
      "tree": "2d9164d349d9ac623d26da21c680e131336d7611",
      "parents": [
        "f3833d4ba05d47ee6b1a943b49a0769ea879cc8c"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jun 27 16:21:58 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jun 28 10:27:06 2017 -0700"
      },
      "message": "AAPT2: Allow \u003ckey-sets\u003e tags in AndroidManifest.xml\n\nBug: 62839863\nTest: make aapt2_tests\nChange-Id: Ic38fadf3b204bf603f6770643735635cd1f1df7e\n"
    },
    {
      "commit": "0d81f701045ff24a2c6a39520629a1898d5f8b65",
      "tree": "3239380c90cfb67c12a77a9a6f1ba008638bb7fb",
      "parents": [
        "366d27d31e9341def03ba6eea310d6f56be69abd"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jun 27 15:51:09 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jun 27 18:46:58 2017 -0700"
      },
      "message": "AAPT2: Honor --custom-package when writing Manifest.java\n\nBug: 62826426\nTest: manual\nChange-Id: I517ff5da2ef2a9147ddbfb13b074a1f60550f189\n"
    },
    {
      "commit": "8a3bffea4926aa691ea1fbc0e7b67ed954e83d2c",
      "tree": "fe30071c024754dba8b062afed96a21c68558c28",
      "parents": [
        "79385ec3b0b1a8753aefd2973273560f0461ff80"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jun 27 12:27:43 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jun 27 12:45:00 2017 -0700"
      },
      "message": "AAPT2: Fix issues with parsing integers + floats\n\nIf whitespace was present at the end of an integer or float, parsing\nwould fail.\n\nBug: 62902869\nTest: make aapt2_tests\nChange-Id: I6c54f25ad73913d8ea90969fca9de24f726deb96\n"
    },
    {
      "commit": "ba12631bba5ea856b78c3488d988584ead8969fb",
      "tree": "fc679362c6ccdf8a2eb06f9128b098839a661b12",
      "parents": [
        "41b743d8ad10a48f7be164f0943b01047928a987",
        "824d75e0e13b916155623a83be8115f3d526db7c"
      ],
      "author": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Fri Jun 23 04:23:44 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jun 23 04:23:44 2017 +0000"
      },
      "message": "Merge \"Stop loading other package\u0027s font by default.\" into oc-dev\nam: 824d75e0e1\n\nChange-Id: I5518dbd8b5d8a4548ea00bbfca0e3aee87880ee7\n"
    },
    {
      "commit": "80f6a985c3662bc65ffba83975ec23c1a93ed888",
      "tree": "49632f94afc3270d5759dcf4160e8f77847ca7b9",
      "parents": [
        "2ef19c1d73f89ca4718b5a8f0c2e7221621e844f"
      ],
      "author": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Thu Jun 22 08:22:18 2017 -0700"
      },
      "committer": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Thu Jun 22 19:07:17 2017 -0700"
      },
      "message": "Stop loading other package\u0027s font by default.\n\nSince CONTEXT_RESTRICTED is not a default flag of createPackageContext,\nwe can\u0027t rely on it for preventing unexpected font injections.\nTo protect developers and existing apps from a risk of font injection,\nstop loading font from other package\u0027s resouce unless the developer\nexplicitly set CONTEXT_IGNORE_SECURITY.\n\nThis CL contains Iac2a6fb3d82ef23d5ca6ee33f4aaa9ed28455271 by manual\nmerging to handle repository split.\n\nBug: 62813533\nBug: 62879353\nTest: Manually done\nMerged-In: I4442ddc48dadb5c968b444be86038b602074d301\nChange-Id: I4442ddc48dadb5c968b444be86038b602074d301\n"
    },
    {
      "commit": "94e68505c4641890f8492f2cf0f104e82c0b0713",
      "tree": "9ebd98d3dce25f4d52170ff67e0e99e0b5aaaad2",
      "parents": [
        "c2cf09b7ea8e8a76ebb0bd097105d6b3536a71de",
        "643275b8384f5221b1563e7c075f7b394270541b"
      ],
      "author": {
        "name": "Alan Leung",
        "email": "acleung@google.com",
        "time": "Thu Jun 22 22:50:42 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jun 22 22:50:42 2017 +0000"
      },
      "message": "Merge \"Merge \"ASM Priority Boost Tool\" am: 8ff8dd16cc am: 8ac18ceb8a\" into oc-dev-plus-aosp\nam: 643275b838\n\nChange-Id: Idb669d7b381f8291fb44dcc5a4d1824d118319d9\n"
    },
    {
      "commit": "578e39fe046e81c98c4aeb9ef737ccdaa175a73a",
      "tree": "a1723fc74910590dc79942cdab973adc86fa3220",
      "parents": [
        "874b6402af4a950aaa75c398fd7cd9e55f741df8",
        "8ac18ceb8a8136f19dd78a7d7cb0773730a100e1"
      ],
      "author": {
        "name": "Alan Leung",
        "email": "acleung@google.com",
        "time": "Thu Jun 22 22:34:29 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jun 22 22:34:29 2017 +0000"
      },
      "message": "Merge \"ASM Priority Boost Tool\" am: 8ff8dd16cc\nam: 8ac18ceb8a\n\nChange-Id: I68f86f307368de6870a7d649118d1a0f8c744a88\n"
    },
    {
      "commit": "ed36ba52bf8a7492522fea56106b1f0380ebf7b3",
      "tree": "4f7a990ab7b0acd9093501fe9c4ad0bfa032ecb5",
      "parents": [
        "156775fea8cccf658b0fe2a3bcf05805062e5104"
      ],
      "author": {
        "name": "Alan Leung",
        "email": "acleung@google.com",
        "time": "Fri May 12 17:31:13 2017 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jun 22 14:00:04 2017 -0700"
      },
      "message": "ASM Priority Boost Tool\n\nThis tool is a replacement for the Jack plugin that allows injection\nof static method calls before lock enter and exit.\n\nA common use case would be to boost a thread\u0027s priority as soon as\nit acquires a heavily contented lock and resetting the priority upon\nrelease.\n\nThis tool is meant to be optionally invoked from /build/core/ rules\nduring the build process.\n\nTest: JUnit Tests / resulting image on a bullhead.\n\nChange-Id: If400414a0bf50f03768a1de2ebee42086a9d701f\nMerged-In: If400414a0bf50f03768a1de2ebee42086a9d701f\n(cherry picked from commit 93db63059ad5e9e1d59c8ce013559069d566ef4c)\n"
    },
    {
      "commit": "280be34fa6311de90dff6c595a147fd5a182223d",
      "tree": "0ecb9ab436f3c51f761e2a0da3997df51d130193",
      "parents": [
        "7cdccf9f2f5324346435d5d8bce44df69ed16c76"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Wed Jun 21 15:20:15 2017 -0700"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Wed Jun 21 16:13:02 2017 -0700"
      },
      "message": "AAPT2: Update the name of the configuration struct.\n\nMake the Configuration struct name less ambiguous. Also ran clang-format\non the change since some lines were too long and this resulted in a\nbigger diff than expected.\n\nTest: built manually\nTest: ran existing unit tests\nChange-Id: I85e78041fa78d913d47a26c85ad48b05bf935a6a\n"
    },
    {
      "commit": "5766943f558c8fccc714bb3d0a96af70816a5545",
      "tree": "fb4cf8d223e103b930e217432e8579675a02b356",
      "parents": [
        "c10f9d81f849b883eb72663bb62d344ce70a3e1e"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Mon Jun 19 12:52:04 2017 -0700"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Wed Jun 21 14:10:23 2017 -0700"
      },
      "message": "AAPT2: Split APK by ABI.\n\nAdded a FilterChain that can apply multiple filter steps to an APK file\nas it is being written to disk. The first filter applied is by ABI. If\na library in the APK does not match the filter it is skipped.\n\nAdded an AbiFilter that keeps files that are either not native libs or\nare for the set of wanted ABIs\n\nTest: ran unit tests locally\nTest: ran against an APK with ARM and x68 libs and diffed the results\n\nChange-Id: I3fb901d3de3513e85f2a2763a8e4487a28ed4881\n"
    },
    {
      "commit": "ea2945f416173c2837ad9e38305e9c6f3cf95a7a",
      "tree": "8049fd76cc45b385852402c3a6912cdb952f6cb0",
      "parents": [
        "0a5521016ec339109257cc890b7e1a05a6d5a26b",
        "b102727771b9ac3d28d4f9b0a4a54b98bd1af958"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jun 19 22:03:05 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 19 22:03:14 2017 +0000"
      },
      "message": "Merge \"AAPT2: Read config from disk\""
    },
    {
      "commit": "b102727771b9ac3d28d4f9b0a4a54b98bd1af958",
      "tree": "0a964992d176fcb03183d78376a85f66cf90d0d0",
      "parents": [
        "71d3509c2ff4ad304843b2c2f1851b24248c7d08"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Wed Jun 14 09:10:28 2017 -0700"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Mon Jun 19 12:49:48 2017 -0700"
      },
      "message": "AAPT2: Read config from disk\n\nImplement the todo left from last change to read the contents of the\nconfiguration file from disk. Since this is an operation that may fail\nthe API was changed to take return a Maybe to indicate errors reading\nthe file.\n\nTest: unit test for error condition\nTest: ran aapt2 optimize with the new code path wired in\n\nChange-Id: I93d532b4a57af9520231225eee4fc5f2b1a046b9\n"
    },
    {
      "commit": "b73f3974122d112c930383cdd3454b4e739ac3c0",
      "tree": "99e33cd59f8b2aac45b1797ce8bf498841fd0367",
      "parents": [
        "8c7999bdf80ef844cad84d10eca964987565bee1",
        "3124e7ca0f582c8d54a9b4cf560c25dfef77ac2a"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jun 15 21:40:37 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 15 21:40:42 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fix issue with enums and integer attributes\""
    },
    {
      "commit": "3124e7ca0f582c8d54a9b4cf560c25dfef77ac2a",
      "tree": "be1af462cdec9a4808a49901cfb87fbe47b32a24",
      "parents": [
        "52feccbf41fe58921e66686077cb5ab20b2b0b13"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jun 13 16:03:55 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jun 15 11:14:47 2017 -0700"
      },
      "message": "AAPT2: Fix issue with enums and integer attributes\n\nWhen an attribute had the format \"enum|integer\", and a max or min\nallowed value set, any value set for this attribute would have its\nenum symbol\u0027s value checked against the valid integer range.\n\nThis would lead to the following:\n\nandroid:numColumns\u003d\"autofit\"\n\nbeing interpreted as an integer value of -1, which violated the minimum\nexpected value for numColumns, which was 0.\n\nBug: 62358540\nTest: make aapt2_tests\nChange-Id: I3150410448a533d3595a08ac6b2966264db874d8\n"
    },
    {
      "commit": "9cac43b99561346fc121a73ca514d1541980ad1a",
      "tree": "809753de06175ec3c5b771be1fa9b811f2a8a8e2",
      "parents": [
        "6f813612e0827367e31ce1fff38393b345a0d897",
        "e38567480be67ac83a8f8f090704bb0d49e2eed2"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jun 13 20:48:19 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 13 20:48:24 2017 +0000"
      },
      "message": "Merge \"AAPT2: Disable locale domination for deduping\""
    },
    {
      "commit": "6f813612e0827367e31ce1fff38393b345a0d897",
      "tree": "a996f5078f64e1c530c730a6d224335bebb098ff",
      "parents": [
        "6cd045754883a37694a1e9a6733dc89fc52aeb67",
        "93db63059ad5e9e1d59c8ce013559069d566ef4c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jun 13 20:46:48 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 13 20:46:53 2017 +0000"
      },
      "message": "Merge \"ASM Priority Boost Tool\""
    },
    {
      "commit": "e38567480be67ac83a8f8f090704bb0d49e2eed2",
      "tree": "1ee9f1c8840e44c0f1c1a88a3b4986bbc8aba8c6",
      "parents": [
        "52feccbf41fe58921e66686077cb5ab20b2b0b13"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jun 12 14:55:58 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jun 13 11:00:04 2017 -0700"
      },
      "message": "AAPT2: Disable locale domination for deduping\n\nLocale deduping isn\u0027t straightforward, as parenting rules\nchange between platform versions and the selection\npreference of a specific locale variant over the default\nconfiguration lead to incorrect results at runtime.\n\nBug: 62409213\nTest: make aapt2_tests\nChange-Id: Iec8f1cfba7ae43c847d163529891fdc15f3db826\n"
    },
    {
      "commit": "24acdf8a11a8bc7d17ddbf5204bf1725d8f5333d",
      "tree": "dfa29b0e2477415187db7665d2330e6ca9eea700",
      "parents": [
        "de3c5a25b6ac0d0db62c3a1862f1477b8723a855",
        "a45893a5c51cc26f1fd63ec1aa4c39f55911c85b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jun 13 00:00:41 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 13 00:00:48 2017 +0000"
      },
      "message": "Merge \"AAPT2: Clean up tests a bit\""
    },
    {
      "commit": "e7253252708587ad1d1170bdc1b45b6ef1fcb45f",
      "tree": "c95df3a586dc5fe6e2403834794b8933c7daf5b2",
      "parents": [
        "9f5812c74c068185ec006e8db0d85957bb70fbf3"
      ],
      "author": {
        "name": "yawanng",
        "email": "yawanng@google.com",
        "time": "Sat Jun 10 21:38:29 2017 -0700"
      },
      "committer": {
        "name": "yawanng",
        "email": "yawanng@google.com",
        "time": "Mon Jun 12 09:45:47 2017 -0700"
      },
      "message": "Revert work around clang-tidy segmentation fault.\n\nBug: 34740546\nTest: build with WITH_TIDY\u003d1 and\nWITH_TIDY_CHECKS\u003d\"*,-readability-*,-google-readability-*,-google-runtime-references\"\n\nChange-Id: Ie0885744bdf07d1a66792b61d8a49305162bcd71\n"
    },
    {
      "commit": "a45893a5c51cc26f1fd63ec1aa4c39f55911c85b",
      "tree": "7e54a8f6e5d328c642309b18c7dfffb083527ccc",
      "parents": [
        "594fda3161e492fb825d6bb47a8973344cc8e72e"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue May 30 15:19:02 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jun 09 14:57:07 2017 -0700"
      },
      "message": "AAPT2: Clean up tests a bit\n\nSince the latest gtest has fixed support for\nexplicit bool operators, remvoe AAPT_ASSERT_* and AAPT_EXPECT_*.\n\nAlso switch to use NotNull() matchers, which are more legible.\n\nTest: make aapt2_tests\nChange-Id: Idce199ca9d567d70f7aae275fee15e04bb914c9e\n"
    },
    {
      "commit": "48a765945449c240b1aea0be40522a14b35a642e",
      "tree": "04d7800e0facee5cdea4df70bdcc01b02c5d6b44",
      "parents": [
        "4d7a29611e54d53284ca3168fdd924dd3ec6a6e6"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jun 08 11:10:18 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jun 08 18:13:01 2017 +0000"
      },
      "message": "AAPT2: Mark version 2.17 and update readme\n\nTest: none\nChange-Id: I6429b1c3acbcbf2244a5a5c95bc48a5d66bdaebe\n"
    },
    {
      "commit": "93db63059ad5e9e1d59c8ce013559069d566ef4c",
      "tree": "23e032aef5479b8ddbbaf9e858e56cef3a137896",
      "parents": [
        "ceea8fdc8fb5c733f38a79a8869036d50ac813bc"
      ],
      "author": {
        "name": "Alan Leung",
        "email": "acleung@google.com",
        "time": "Fri May 12 17:31:13 2017 -0700"
      },
      "committer": {
        "name": "Alan Leung",
        "email": "acleung@google.com",
        "time": "Wed Jun 07 14:22:22 2017 -0700"
      },
      "message": "ASM Priority Boost Tool\n\nThis tool is a replacement for the Jack plugin that allows injection\nof static method calls before lock enter and exit.\n\nA common use case would be to boost a thread\u0027s priority as soon as\nit acquires a heavily contented lock and resetting the priority upon\nrelease.\n\nThis tool is meant to be optionally invoked from /build/core/ rules\nduring the build process.\n\nTest: JUnit Tests / resulting image on a bullhead.\n\nChange-Id: If400414a0bf50f03768a1de2ebee42086a9d701f\n"
    },
    {
      "commit": "b9f0548341f98a64a87fa35ef5f58d1daf973ca7",
      "tree": "b18439dee3ec04c180e2934a0d5d6c574ee37be4",
      "parents": [
        "63c5c9462a0175143791d7a5491a67a1a645cab4"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jun 02 16:32:37 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jun 06 20:02:38 2017 +0000"
      },
      "message": "AAPT2: Do not interpret %n as a format specifier in string resources\n\n%n is a special value marking a platform independent newline and is\nnot to be considered a format argument.\n\nBug: 37132275\nTest: make aapt2_tests\nChange-Id: I806521e44afe20004344dee9f18ecee6cc7086ea\n"
    },
    {
      "commit": "7a917a27ef1dae63e7747c9d00b4ff71b1a502e2",
      "tree": "ddf11d9444665c174c3cfd629117b4b3def42495",
      "parents": [
        "d034fec9cfd7521dc0edd315e7d8aef88496f9b3"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jun 02 12:55:24 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jun 06 18:14:48 2017 +0000"
      },
      "message": "AAPT2: Allow \u003clayout\u003e in \u003cactivity\u003e tag in AndroidManifest.xml\n\nBug: 62189611\nTest: make AaptTestAppOne\nChange-Id: Ic090e4a002b24f2289f47dfba7439638e5848062\n"
    },
    {
      "commit": "54376bbd4bf2d899982d1e38cf5e4f5e947b02ff",
      "tree": "0b3b02afc43d838f05322e06ce75d61660c8e384",
      "parents": [
        "266e587f6b5d6bb6933a47e53bede9b2c7265bc3",
        "2f84c4715d2906b8b983b4c5b4ba13799e27eab5"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jun 05 17:54:37 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jun 05 17:54:37 2017 +0000"
      },
      "message": "Merge \"DO NOT MERGE: AAPT2: Allow undefined resources (placeholders)\" into oc-dev\nam: 2f84c4715d\n\nChange-Id: I266b8648e9aa292befa02c4e7dc0ce54f0b26e21\n"
    },
    {
      "commit": "90919978e7ccf7dc25622e9d039a7e87ebe7ba11",
      "tree": "d11e779893782ffc04c585912813e0e0ff2e1f06",
      "parents": [
        "76e76a5c269eab2596dfc72fa229af49be68e870"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jun 01 15:22:57 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jun 02 16:51:59 2017 -0700"
      },
      "message": "DO NOT MERGE: AAPT2: Allow undefined resources (placeholders)\n\nA resource defined like so:\n\n\u003citem type\u003d\"drawable\" name\u003d\"foo\" /\u003e\n\nshould be assigned the value @null.\n\nThe only exception is for \u003cstring\u003e resources, which are given the\nempty string value (since \u003cstring\u003e\u003c/string\u003e is ambiguous). The decision\nto use \"\" is based off the fact that old AAPT used to assign \"\" to all\nundefined resources, even non-string ones.\n\nBug: 38425050\nTest: make aapt2_tests\nChange-Id: Ib3e0f6f83d16ddd8b279c9fd44a07a37867b85e9\n"
    },
    {
      "commit": "bab4ef56d7803f3a50ccfaca2729509338fcbb23",
      "tree": "3d3c1ad103f88f6ca60c46fc31872dee40244b3e",
      "parents": [
        "d6fb3081d9ddd6384d7e764308e2967ce672d3e5"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jun 01 15:22:57 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jun 02 16:48:38 2017 -0700"
      },
      "message": "AAPT2: Allow undefined resources (placeholders)\n\nA resource defined like so:\n\n\u003citem type\u003d\"drawable\" name\u003d\"foo\" /\u003e\n\nshould be assigned the value @null.\n\nThe only exception is for \u003cstring\u003e resources, which are given the\nempty string value (since \u003cstring\u003e\u003c/string\u003e is ambiguous). The decision\nto use \"\" is based off the fact that old AAPT used to assign \"\" to all\nundefined resources, even non-string ones.\n\nBug: 38425050\nTest: make aapt2_tests\nChange-Id: Ib3e0f6f83d16ddd8b279c9fd44a07a37867b85e9\n"
    },
    {
      "commit": "127f10037bcaa445477c7690d66d68a22a05a6f2",
      "tree": "043dce2b00ba57143b75857316a7f80d64b0f988",
      "parents": [
        "fa5bfabd862f0b18a1023ab2434f684b05099361",
        "3c860ed41d2f1cb2b756558b186f6304d6e9b674"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jun 02 03:04:42 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jun 02 03:04:42 2017 +0000"
      },
      "message": "Merge \"AAPT2: Allow any value type for \u003citem\u003e without format attr\" into oc-dev am: 1ac325e4d5\nam: 3c860ed41d\n\nChange-Id: I44719ae4d742b518f59c9c9bbc226ec9773ce365\n"
    },
    {
      "commit": "3c860ed41d2f1cb2b756558b186f6304d6e9b674",
      "tree": "b35097c53b9da9dec5c6ea30a2ad9b4d68d4b96e",
      "parents": [
        "74ff0748ce6db59e01ca78aaf3877f46b95dfbc9",
        "1ac325e4d5d0e03271b4c67b56117d39bcdcfaeb"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jun 02 02:35:07 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jun 02 02:35:07 2017 +0000"
      },
      "message": "Merge \"AAPT2: Allow any value type for \u003citem\u003e without format attr\" into oc-dev\nam: 1ac325e4d5\n\nChange-Id: I1b1180f2b33a077b2c46a8466c58d83ed618576e\n"
    },
    {
      "commit": "e597d68d33c76c2b830f5497ed4ba74c5193a056",
      "tree": "699e25d86f8ed610ef1b1b640efb5b86c89d4289",
      "parents": [
        "ceb24e88cbb56aa63c990693a2d6ea35dce029f5"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jun 01 17:16:44 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jun 01 17:16:44 2017 -0700"
      },
      "message": "AAPT2: Allow any value type for \u003citem\u003e without format attr\n\nTO bring AAPT2 behavior in-line with AAPT, \u003citem\u003e has a default\nformat of \"any\", and only becomes restricted with an explicit format\nattribute.\n\nBug: 62260121\nTest: make aapt2_tests\nChange-Id: Ife416f520e6c2710bb30e3ba3f2d4463794bfa06\n"
    },
    {
      "commit": "95cad98ad547d5d52f6ece1dfe209072e124530b",
      "tree": "683335ed56ca890c4c2de950a7a4578d2fb744b6",
      "parents": [
        "1b1dd52631547970d79fcc2ca5f3c62a44f8b1ee",
        "74cdea34cd6dce8bf9b4adaa2cd7cb02330120d5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 01 07:20:54 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 01 07:20:59 2017 +0000"
      },
      "message": "Merge \"AAPT2: XML configuration file parser.\""
    },
    {
      "commit": "74cdea34cd6dce8bf9b4adaa2cd7cb02330120d5",
      "tree": "fb33d7640471c3e5164333e188970630757d6513",
      "parents": [
        "14c991cf97ec2505ff30d8fbb29f241a846feafe"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Fri May 12 16:22:36 2017 -0700"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Wed May 31 16:18:31 2017 -0700"
      },
      "message": "AAPT2: XML configuration file parser.\n\nThe XML file is parsed with the aapt::xml::XmlDom parser and actions are\nused for the elements we are interested in. This means that there are\ncases where a user could add aditional tags/elements to the document\nthat are technically invalid (acording to the schema) but are ignored by\nthe parser. This allows us to be more lenient which probably isn\u0027t a bad\nthing.\n\nDocuments have the namespace stripped before processing as the\nXmlActionExecutor ignores any elements with a namespace. The namespace\nis validated before being removed.\n\nThe test cases are all based off the previous example XML file.\n\nTest: Unit tests\n\nChange-Id: I86d7e0dc6347ace3eaa60c1842d59f3cd0d4f749\n"
    },
    {
      "commit": "7eded654549395e152ec8068c6dedf78c4f25e27",
      "tree": "ef03519aa32fa589238acc1b3e14885aea748bac",
      "parents": [
        "14c991cf97ec2505ff30d8fbb29f241a846feafe"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Tue May 09 15:48:52 2017 -0700"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Wed May 31 16:05:07 2017 -0700"
      },
      "message": "AAPT2: XML schema and an example configuraiton\n\nThe current iteration of the schema allows for both Split and Optimize\ncommands running off the same file. A split command is multiple optimize\ncommand, and an optimize is a split with only a single artifact. To\ncombine the two, a single file with one or more artifacts can be passed\nto either command. If multiple artifiacts are used for an optimize\ncommand, the required artifact can be specified on the command line. A\nconfiguration with only a single artifact can be used with either\ncommand to get the same result.\n\nChange-Id: Ie48eda6e2f9f8bf25d75ef7bcc3b3401a2d3e8eb\nBugs: 37847908\nTest: xmllint --noout --schema aapt2.xsd example/config.xml\n"
    },
    {
      "commit": "7a5b4068052a7cd0f79b2a21743699bf9d3a0c2a",
      "tree": "698d5370fa49f65743a05129c2def3f698c5c60c",
      "parents": [
        "eac0410e5d6df2d6d68af94e9f033cf27a5b6b6d",
        "ad227a8086bd282608a68aa133a338c11a3064b2"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed May 31 21:26:17 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 31 21:26:17 2017 +0000"
      },
      "message": "Merge \"AAPT2: Update --no-version-vector list\" into oc-dev am: f296105e22\nam: ad227a8086\n\nChange-Id: Ie60160136d6bbca607ce98cd675ffed984b2debc\n"
    },
    {
      "commit": "eac0410e5d6df2d6d68af94e9f033cf27a5b6b6d",
      "tree": "8bb36bfc5bc707e9994cb1724c10791c988af280",
      "parents": [
        "a1a45998780ab10fc326c0b66255703db1247f47",
        "b5cdbdfcf889606bcc465e48277d6ff7f4c514c8"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed May 31 21:23:46 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 31 21:23:46 2017 +0000"
      },
      "message": "Merge \"AAPT2: Allow merging of Style attributes from overlays\" into oc-dev am: f42c86660d\nam: b5cdbdfcf8\n\nChange-Id: Ifabd2f220f96f9dc4942c2cc65b24da6f2d90b13\n"
    },
    {
      "commit": "ad227a8086bd282608a68aa133a338c11a3064b2",
      "tree": "7a6ae7e1911b7ff1d069fa0daf591be0169e31d3",
      "parents": [
        "b5cdbdfcf889606bcc465e48277d6ff7f4c514c8",
        "f296105e22d3c191c014c64a3b8a19421e325267"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed May 31 21:15:32 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 31 21:15:32 2017 +0000"
      },
      "message": "Merge \"AAPT2: Update --no-version-vector list\" into oc-dev\nam: f296105e22\n\nChange-Id: I0cde63dfd73b50debdc56f549f7adb1318f05309\n"
    },
    {
      "commit": "b5cdbdfcf889606bcc465e48277d6ff7f4c514c8",
      "tree": "2d12f8979c0a0d906e5242365f2d34f392a6c60e",
      "parents": [
        "4e26aa36223afc649c599ce33ab52a4e61587a62",
        "f42c86660d15c50ff7431b89342e590bcc1bed37"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed May 31 21:12:58 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 31 21:12:58 2017 +0000"
      },
      "message": "Merge \"AAPT2: Allow merging of Style attributes from overlays\" into oc-dev\nam: f42c86660d\n\nChange-Id: I4a52a16fff3d544d8d7d63d8a482ba7e2111d01a\n"
    },
    {
      "commit": "f296105e22d3c191c014c64a3b8a19421e325267",
      "tree": "4844e3ef508a44e7fe5dba83793192b0de4ad167",
      "parents": [
        "f42c86660d15c50ff7431b89342e590bcc1bed37",
        "41ea44f63d78b03a7c323639f3b80364b65f5a13"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 31 20:48:49 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 31 20:49:02 2017 +0000"
      },
      "message": "Merge \"AAPT2: Update --no-version-vector list\" into oc-dev"
    },
    {
      "commit": "f42c86660d15c50ff7431b89342e590bcc1bed37",
      "tree": "ba24281263894153ec1d89b53e9ead0b0687b603",
      "parents": [
        "d8d9758363524f454cfa1b39a460e461005c84a3",
        "5924d8c9ab7bd8614e8bd99864903ce9d50f3bf7"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed May 31 20:48:00 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 31 20:48:06 2017 +0000"
      },
      "message": "Merge \"AAPT2: Allow merging of Style attributes from overlays\" into oc-dev"
    },
    {
      "commit": "b3419d76a69cc589981c48cf18fc4343e8f293af",
      "tree": "6c9e31c7c84e88206f214fffa8fa957b8fd2a35b",
      "parents": [
        "8051830544bb42579fb2a72c445fdf27ef39b664",
        "4e73123c5238000afed9c11ec1d2e52a8114c117"
      ],
      "author": {
        "name": "Winson Chung",
        "email": "winsonc@google.com",
        "time": "Wed May 31 18:56:50 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 31 18:56:50 2017 +0000"
      },
      "message": "Merge changes from topic \u0027hw_bitmap\u0027 into oc-dev\nam: 4e73123c52\n\nChange-Id: Ic202387c7fddcf6cc87024812c112e5ce3a4ab7b\n"
    },
    {
      "commit": "4e73123c5238000afed9c11ec1d2e52a8114c117",
      "tree": "a7000197cde0f7b55bccefcccd7ff9dcfeb3a91d",
      "parents": [
        "42f81ee464960ff6398ddbcde9038157719b74ca",
        "aa7fa0135366b80d9bfdb7dffb6795b365a40607"
      ],
      "author": {
        "name": "Winson Chung",
        "email": "winsonc@google.com",
        "time": "Wed May 31 18:46:53 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 31 18:46:59 2017 +0000"
      },
      "message": "Merge changes from topic \u0027hw_bitmap\u0027 into oc-dev\n\n* changes:\n  DO NOT MERGE Updating AnimationSpec and related internal APIs to use GraphicBuffer.\n  Update code to draw into hardware bitmaps.\n"
    },
    {
      "commit": "41ea44f63d78b03a7c323639f3b80364b65f5a13",
      "tree": "94cc92e0b26c9cfbc08c065a3a39a50ba669513d",
      "parents": [
        "bacaffa497de1877657f9cb3f59a82e3955f0f75"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed May 31 10:22:30 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed May 31 10:23:58 2017 -0700"
      },
      "message": "AAPT2: Update --no-version-vector list\n\nKeep in sync with AAPT. Since gradle is moving to use AAPT2\nby default, updates to AAPT will no longer be necessary and\nthis will be the authoritative list until a more programmatic\nsolution presents itself.\n\nBug: 62211148\nTest: manual\nChange-Id: Id9232c9fb730c50e4850887fa0f5da82574ca900\n"
    },
    {
      "commit": "5924d8c9ab7bd8614e8bd99864903ce9d50f3bf7",
      "tree": "f094afb0142ab4a81faff62f37be306ca0587c33",
      "parents": [
        "bacaffa497de1877657f9cb3f59a82e3955f0f75"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue May 30 15:15:58 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed May 31 10:09:06 2017 -0700"
      },
      "message": "AAPT2: Allow merging of Style attributes from overlays\n\nPreviously style overlays would completely override an existing style.\nTo be compatible with AAPT, styles now merge with the overlay, allowing\nthe overlay\u0027s attributes and parent to take precedence.\n\nBug: 38355988\nTest: make aapt2_tests\nChange-Id: Id25c7240050a43e6a4a177c6e3d51e048d0cceb5\n"
    },
    {
      "commit": "aa7fa0135366b80d9bfdb7dffb6795b365a40607",
      "tree": "6e8cbcfa1dfdae75284496bb23a9fb6a944fa805",
      "parents": [
        "910927671be8a32f06b1d51466a900d27a572ead"
      ],
      "author": {
        "name": "Winson Chung",
        "email": "winsonc@google.com",
        "time": "Wed May 24 15:50:06 2017 -0700"
      },
      "committer": {
        "name": "Winson Chung",
        "email": "winsonc@google.com",
        "time": "Wed May 31 16:23:24 2017 +0000"
      },
      "message": "DO NOT MERGE Updating AnimationSpec and related internal APIs to use GraphicBuffer.\n\n- This reduces the copy of the hardware bitmap when it is\n  parceled/unparceled.\n\nBug: 38507414\nBug: 62021436\nTest: Launch Overview to/from app, ensure that the header bar shows\nTest: go/wm-smoke\n\nChange-Id: I85a9a59a0a3699d1642158061d10fddef34393c3\nSigned-off-by: Winson Chung \u003cwinsonc@google.com\u003e\n"
    },
    {
      "commit": "49449579d200a4033fe9807edc47ddeb0fed580e",
      "tree": "a3eb9599518450cdceb1e53470f92f6669453cd8",
      "parents": [
        "8a9ea671f9847de1348b695ba3b49fd210810243",
        "7459bc49b043e0770b6bda090b2b2e6a6326e2ab"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 31 01:28:55 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 31 01:29:01 2017 +0000"
      },
      "message": "Merge \"Create fonts.xml module for adding fonts.xml to system/etc\""
    },
    {
      "commit": "7459bc49b043e0770b6bda090b2b2e6a6326e2ab",
      "tree": "dd379231c6d98d6b4bee36be58866595ea61ba6c",
      "parents": [
        "f9e9fa440a8e684ca0b10e591927e1019c371e71"
      ],
      "author": {
        "name": "Andrew Sapperstein",
        "email": "asapperstein@google.com",
        "time": "Thu May 18 16:37:22 2017 -0700"
      },
      "committer": {
        "name": "Andrew Sapperstein",
        "email": "asapperstein@google.com",
        "time": "Tue May 30 16:49:14 2017 -0700"
      },
      "message": "Create fonts.xml module for adding fonts.xml to system/etc\n\nPreviously, we used PRODUCT_COPY_FILES. However, that does not allow\noverriding the file to use a different one on a per-device basis.\nThis change migrates the logic to using a BUILD_PREBUILT module\ncalled fonts.xml.\nTo add additional fonts, the add_additional_fonts.py script has been\nadded. If ADDITIONAL_FONTS_FILE is defined, add_additional_fonts.py\nis run and generates a new version of fonts.xml that contains the\ncontent of ADDITIONAL_FONTS_FILE added where\n\"\u003c!-- fallback fonts --\u003e\" is added.\n\nBug: 36855735\nBug: 37997769\nTest: manual. built multiple devices and verified that the correct\nversions of fonts.xml were showing.\n\nChange-Id: I8308f0cb3068274bca5ebd25a38cc023babbd69d\n"
    }
  ],
  "next": "ab7d501ad8257120edffbee266c353b5ab681a70"
}
