)]}'
{
  "log": [
    {
      "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": "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": "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": "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": "4488f1c74a0f7df09f2b201f7caa228d729e8389",
      "tree": "84b28ff7c770f906f0a58cf280ec28ecc3a58f68",
      "parents": [
        "2354b568379fe31ba4e774f7a92d4c685a60a2ab"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri May 26 17:33:38 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri May 26 17:38:34 2017 -0700"
      },
      "message": "AAPT2: Fix \u003cadd-resource\u003e tag for overlays\n\nBug: 38355988\nTest: make aapt2_tests\nChange-Id: Iea8887f55f8ceb2c15bd963405fd132916173c0c\n"
    },
    {
      "commit": "2354b568379fe31ba4e774f7a92d4c685a60a2ab",
      "tree": "585bb0c60c38428e2328beb330fd2fc79e11e7d2",
      "parents": [
        "bacaffa497de1877657f9cb3f59a82e3955f0f75"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri May 26 16:31:38 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri May 26 16:56:34 2017 -0700"
      },
      "message": "AAPT2: Follow symlinks when compiling\n\nBug: 62144459\nTest: make AaptSymlinkTest\nChange-Id: Idb3ab1ece17c52bb4fd174ec4c08a9e173289e55\n"
    },
    {
      "commit": "c744ae8aca97edfb2422598ea620e8219449fa9b",
      "tree": "4e7c29d6b47c464dd5aa0af204d86a7340b0084f",
      "parents": [
        "0418b72fd2c91f32c42e3a406df2a866888fc766"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed May 17 19:28:38 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed May 24 15:14:29 2017 -0700"
      },
      "message": "AAPT2: Implement attribute compat versioning\n\nThis change defines some hardcoded rules to degrade\nattributes in newer SDKs to specific older attributes.\n\nAn attribute with a degrade rule will generate a new XML for the API\nin which the attribute resulting from the degradation was introduced.\n\nSince API 22 (Lollipop MR1), attributes are correctly ignored and do\nnot need to be versioned. In XML files defined for APIs 22+, the\noriginal and degraded attributes coexist in the same XML file.\n\nOne such example is paddingHorizontal, introduced in API 26.\npaddingHorizontal degrades to paddingLeft and paddingRight, which\nwere both introduced in API 1.\n\nBug: 35763493\nTest: make aapt2_tests\nChange-Id: I4aa8755a9ee2c0cc5afdc55c3d30093fd3a47f3d\n"
    },
    {
      "commit": "2d885e942d27e838947948532ed6c2657c4da90f",
      "tree": "13af1c409208ec37565a9f9aa7f00e907138b948",
      "parents": [
        "13bd634262d4f85adda936ad3872a4485d85001e",
        "cc73e990e5381adfa605ccacad431231d9269893"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 18 17:30:21 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 18 17:30:26 2017 +0000"
      },
      "message": "Merge \"AAPT2: Ignore trailing data after IEND chunk in PNG\" into oc-dev"
    },
    {
      "commit": "dc6da8b4df3502164c234fe95c141d1a93684419",
      "tree": "22d22a3b68b3a107fbd6a49e914b236e67c33ae9",
      "parents": [
        "1daffb7aac8f5947e1b249a172c5cfa04ca2013a",
        "d5fd76a2ff78400505ade936fc36e707d69ecf72"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed May 17 22:52:20 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 17 22:52:25 2017 +0000"
      },
      "message": "Merge \"AAPT2: Respect format attr in \u003carray\u003e resource\" into oc-dev"
    },
    {
      "commit": "13308bcdf625e0ee0f12c66cb86323317c99ac58",
      "tree": "e19f14d557e60a7f45e126c8876322a5057f53d5",
      "parents": [
        "4b2cecbb53aaa74c506ea0b318ede05f84756843"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue May 16 15:26:54 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue May 16 15:28:36 2017 -0700"
      },
      "message": "AAPT2: Update locale script filtering logic\n\nAAPT got an update to its locale script filtering logic that\ndealt with enabling the removal of specific locales like\nb+sr+Latn. Update AAPT2 to do the same.\n\nBug: 28055669\nBug: 29412034\nTest: aapt2_tests\nChange-Id: I3315c0814796cff05dfa1032d66d0306fe2b12bc\n"
    },
    {
      "commit": "d5fd76a2ff78400505ade936fc36e707d69ecf72",
      "tree": "155ab260deffffbe41c40bd5185bd1db462a4115",
      "parents": [
        "4b2cecbb53aaa74c506ea0b318ede05f84756843"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue May 16 12:18:08 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue May 16 12:18:53 2017 -0700"
      },
      "message": "AAPT2: Respect format attr in \u003carray\u003e resource\n\nBug: 38152130\nTest: make aapt2_tests\nChange-Id: I84f352afb1a8fd2f329354f789aaa36c5ef88e47\n"
    },
    {
      "commit": "cc73e990e5381adfa605ccacad431231d9269893",
      "tree": "854ce10f48409dccf1b7163b71a6a39549fa43cf",
      "parents": [
        "33532e020873e580c421342e38b2352b836d30d4"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri May 12 18:16:44 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon May 15 13:07:32 2017 -0700"
      },
      "message": "AAPT2: Ignore trailing data after IEND chunk in PNG\n\nlibpng seems to do the same, so our chunk filter should not care what\ncomes after.\n\nBug: 38169876\nTest: manual\nChange-Id: I020ddfe29ac3eb4d5ef9ace5611c6f6497de443d\n"
    },
    {
      "commit": "4b585db64f1dda5c343855e63d7d4b6fc0c6d729",
      "tree": "261819d242a66a86cde3922980d9a615fb2c772b",
      "parents": [
        "33532e020873e580c421342e38b2352b836d30d4"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri May 12 15:25:50 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri May 12 15:25:50 2017 -0700"
      },
      "message": "AAPT2: Allow \u003cuses-permission-sdk-23\u003e in manifest\n\nBug: 38269610\nTest: build tools/aapt2/integration-tests/AppOne\nChange-Id: I1d0b87aa36f6bf82aab146339acf8848166b218d\n"
    },
    {
      "commit": "fb194bb81c234faa7b4e7253f8cf4228dbda4534",
      "tree": "ac765ba406f518af14cd5e92583b875dad11eed0",
      "parents": [
        "33644ff3f9270f471ec6c46cff7f848c3707f9c6",
        "28e6c0bac2f22e63bc044fc44a82ec5282d2709c"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu May 11 18:39:00 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 11 18:39:05 2017 +0000"
      },
      "message": "Merge \"AAPT2: Add option to disable PNG crunching\" into oc-dev"
    },
    {
      "commit": "28e6c0bac2f22e63bc044fc44a82ec5282d2709c",
      "tree": "9ab8474507a84ba0c4f84bf68be65a4f8d345528",
      "parents": [
        "f93dc8b6504200d0b6d502d924a70a743f9b1411"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed May 10 14:56:36 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed May 10 15:00:10 2017 -0700"
      },
      "message": "AAPT2: Add option to disable PNG crunching\n\nWhen compiling, a developer may want to disable PNG crunching\nfor a specific set of PNGs.\n\nBug: 37729284\nTest: manual\nChange-Id: I134f208f8bb212df07a4eef65b467985a6443375\n"
    },
    {
      "commit": "63699b128e009c65affe50995bd8f86eca1a8694",
      "tree": "43c4643a1d40161e1ef402cccaa195e3e03b5204",
      "parents": [
        "f93dc8b6504200d0b6d502d924a70a743f9b1411"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon May 08 18:36:33 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon May 08 18:36:33 2017 -0700"
      },
      "message": "AAPT2: Ignore namespaced elements in AndroidManifest.xml\n\nSome third party stores/tools expect manifest elements\nunder their namespace, and AAPT2 shouldn\u0027t fail if these\nare present.\n\nBug: 37943705\nTest: make aapt2_tests\nChange-Id: I87b7500c7da5e8e79fc2a78b30e8e4334124af3d\n"
    },
    {
      "commit": "7cf8ca95aa587894cb80a38f9a1e4245335a9a73",
      "tree": "e67da849f916912eee7b487a450d685fd2cb9a2f",
      "parents": [
        "35312fd4c6fccaf5869b8fbf7bef9b1a6def75ba",
        "c10c0d0db24f2d3fbdeabf7aebaabf527786bba5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sun Apr 30 14:31:12 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Apr 30 14:31:17 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fix typo in manifest validation expectation\" into oc-dev"
    },
    {
      "commit": "557a0c50a0c4e0ee06f66a7fb8841953835d0e24",
      "tree": "3d904dcb98dc9805d301e6d02c021f1f6c55ee8a",
      "parents": [
        "f6bc1402edc3ec78931a6c331a2cee5fb91727c9",
        "742888f0fd9f00574049f52f6ede610888eea4ed"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Apr 29 21:39:26 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Apr 29 21:39:29 2017 +0000"
      },
      "message": "Merge \"AAPT2: binary parser should be more lenient with files\" into oc-dev"
    },
    {
      "commit": "f6bc1402edc3ec78931a6c331a2cee5fb91727c9",
      "tree": "02b06550ab95c0d2ca5ddf1b6754a7d8231e4ac3",
      "parents": [
        "53c9898e7952b966b61b0c1d74ee1186a8057a47",
        "48448e8a310e72eb2846ad0f86672ce4f0b47e47"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Apr 29 21:04:34 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Apr 29 21:04:38 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fix string escaping\" into oc-dev"
    },
    {
      "commit": "53c9898e7952b966b61b0c1d74ee1186a8057a47",
      "tree": "4dda977e8de7ca5904a19d172ac9b242ce3e95b5",
      "parents": [
        "5bb8294f926dcaf4a7288ba4457d84d57bb4ab53",
        "360182156a8e188534620de1e804993a6458470d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Apr 29 20:38:15 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Apr 29 20:38:20 2017 +0000"
      },
      "message": "Merge changes I446fb6ab,Ife3bbd29 into oc-dev\n\n* changes:\n  Valid resource IDs may be negative\n  AAPT2: Workaround for findViewById with package ID \u003e 0x7f\n"
    },
    {
      "commit": "742888f0fd9f00574049f52f6ede610888eea4ed",
      "tree": "72ff2078c26fff697d37c6e50835995d0277a494",
      "parents": [
        "0ddca92018da69e7224b63cdedbf1944c63ddc34"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 28 15:34:52 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 28 15:34:52 2017 -0700"
      },
      "message": "AAPT2: binary parser should be more lenient with files\n\nSome APKs have file references that reference files that don\u0027t exist.\n\nFor now, just be lenient and ignore the files themselves.\n\nKeep the actual reference until such a time as general resource\nstripping is implemented.\n\nBug: 37749644\nTest: manual\nChange-Id: I773685acf41212405b71b064d64045fb4556dcfc\n"
    },
    {
      "commit": "c10c0d0db24f2d3fbdeabf7aebaabf527786bba5",
      "tree": "0da429493e44236f709f10ee9f7105397f5846d2",
      "parents": [
        "0ddca92018da69e7224b63cdedbf1944c63ddc34"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 28 12:54:08 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 28 12:54:08 2017 -0700"
      },
      "message": "AAPT2: Fix typo in manifest validation expectation\n\nChange expected tag from grant-uri-permissions -\u003e grant-uri-permission\n\nBug: 37714102\nTest: manual\nChange-Id: Ic0178b83fff8de961cb3fdfe38023eaf111237ee\n"
    },
    {
      "commit": "48448e8a310e72eb2846ad0f86672ce4f0b47e47",
      "tree": "42e2d993f2967ba5768530c826aab28eb12fb492",
      "parents": [
        "0ddca92018da69e7224b63cdedbf1944c63ddc34"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Apr 26 15:13:52 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 28 12:51:23 2017 -0700"
      },
      "message": "AAPT2: Fix string escaping\n\nWe were processing escaped strings too early, before\nparsing of values into types. Now the escaped strings get\nprocessed when they are being flattened.\n\nBug: 37715376\nTest: make aapt2_tests\nChange-Id: Ic59aa2e3a20c40756c219752ff74b2a4f8a602ba\n"
    },
    {
      "commit": "1e4b0e54a3db31bdbcb9385bf22bab4b96096d1f",
      "tree": "3c87c9080c067aacf8235a07214d3edc35bd86ed",
      "parents": [
        "0ddca92018da69e7224b63cdedbf1944c63ddc34"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Apr 27 15:01:10 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 28 12:47:48 2017 -0700"
      },
      "message": "AAPT2: Workaround for findViewById with package ID \u003e 0x7f\n\nThe entire View code base checks IDs against View.NO_ID except\nfindViewById(), which checks to see if the ID is negative.\n\nAny package ID \u003e 0x7f is interpreted as a negative number in Java\n(no unsigned ints), so this check prevents the use of IDs \u003e 0x7f.\n\nfindViewById is final, so support library workarounds are not possible.\n\nInstead, IDs (@id/foo) are just sentinels, their values don\u0027t matter.\nIf building for pre-O devices, rewrite any references to these IDs of\nthe for 0xPPTTEEEE, where PP \u003e 7f, to 0x7fPPEEEE.\n\nThe symbol table will check for potential collisions against the base\nAPK, so this should be safe.\n\nBug: 37498913\nTest: manual\nChange-Id: Ife3bbd29db287757ef8a2ffd83053d97f1db2613\n"
    },
    {
      "commit": "820d72adc0eccbfe4ac4238cdc89b7680ea03d9e",
      "tree": "d7f39f1675f4b0f20f764dfa8b70dfb1a26e14e5",
      "parents": [
        "3dfd8275749a734380282437579156b6b35ccc51"
      ],
      "author": {
        "name": "Chris Warrington",
        "email": "cmw@google.com",
        "time": "Thu Apr 27 15:27:01 2017 +0100"
      },
      "committer": {
        "name": "Chris Warrington",
        "email": "cmw@google.com",
        "time": "Fri Apr 28 10:06:38 2017 +0100"
      },
      "message": "AAPT2: Error reporting through JNI.\n\nRather than relying on stderr being wired correctly.\n\nTest: Tests for JNI integration in studio-master-dev.\nChange-Id: I1c7e7130bc4e56d61de259a9596bee3a6b3520fb\n"
    },
    {
      "commit": "e7172ff9fb4103339aa4095ab543ad4d259b1ebc",
      "tree": "57f18b44e7d6b32d10f310038fec9f449e87b004",
      "parents": [
        "afd8d9e2b289fe623118e849e0915f940a19bf2f",
        "4ca56978a9aea3f021a54ed9265de10811984d94"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 27 23:45:38 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 27 23:45:44 2017 +0000"
      },
      "message": "Merge \"AAPT2: Add workaround for non-standard package IDs\" into oc-dev"
    },
    {
      "commit": "4ca56978a9aea3f021a54ed9265de10811984d94",
      "tree": "1634b01c81b725ff3d286b7a8bf6cd16682cf7eb",
      "parents": [
        "9e55fcbdc254da098bb792f460296ff0649c3b00"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Apr 26 21:49:53 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Apr 26 21:55:31 2017 -0700"
      },
      "message": "AAPT2: Add workaround for non-standard package IDs\n\nThe dynamic ref table used to map build-time IDs to runtime IDs\nis mainly used for shared resource libraries and has a few built-in\nmappings (app 0x7f and framework 0x01).\n\nUsing a non-standard package ID like 0x80 causes a failure in package ID\nlookup. The solution is to ship the dynamic_ref_table with an identity mapping\nwith any resource table that uses a non-standard package ID.\n\nAdds some tests to ensure this works correctly.\n\nBug: 37498913\nTest: make libandroidfw_tests\nTest: make aapt2_tests\nChange-Id: Ic3f67942384d34e7fdcbc94ded360e940e3ebc8a\n"
    },
    {
      "commit": "b9dbee430dda735b8a92d150349381a9e147c682",
      "tree": "0f8494e80a3b0cb0a755b35895a410541ed23a3c",
      "parents": [
        "7beb895d75232262d45696c43e5135a8fabb51b8",
        "776aa959c7122f23f3c58443ea1b673127ed01f2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 25 15:26:20 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 25 15:26:24 2017 +0000"
      },
      "message": "Merge \"AAPT2: Add better error message when processing invalid files\" into oc-dev"
    },
    {
      "commit": "7beb895d75232262d45696c43e5135a8fabb51b8",
      "tree": "9b8084718e87602e1b3b3c2f972526a8d08b60aa",
      "parents": [
        "4f86a894e124989ce7c4d1d8f9f6536a9f820399",
        "25783cab0b8a1e294d0706d3630756a16668a47b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 25 15:25:57 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 25 15:26:01 2017 +0000"
      },
      "message": "Merge \"AAPT2: Allow \u003cpath-permission\u003e tag in \u003cprovider\u003e\" into oc-dev"
    },
    {
      "commit": "776aa959c7122f23f3c58443ea1b673127ed01f2",
      "tree": "39be8ea438a97a730ff65bf052e234576b4e0ad3",
      "parents": [
        "57b999605c373b4798f29174c0fddb47ddc2c263"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Apr 24 15:09:32 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Apr 24 22:19:53 2017 +0000"
      },
      "message": "AAPT2: Add better error message when processing invalid files\n\nInstead of showing a failed mmap error, show a better error when a file\nbeing compiled is a directory or other unsupported file type.\n\nBug: 37626838\nTest: manual\nChange-Id: Ib9acf5f48ab5da37e79411c6a9f37c51f00f925f\n"
    },
    {
      "commit": "25783cab0b8a1e294d0706d3630756a16668a47b",
      "tree": "6c08bcb4af1dd470bd8dec7dcc6127f401410e52",
      "parents": [
        "3fc176913a947fae8df28d19d896216a07491a8f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Apr 24 13:33:47 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Apr 24 22:18:48 2017 +0000"
      },
      "message": "AAPT2: Allow \u003cpath-permission\u003e tag in \u003cprovider\u003e\n\nFix a typo where the wrong tag name was expected under \u003cprovider\u003e\nin AndroidManifest.xml.\n\nBug: 37627250\nTest: manual\nChange-Id: I45afd09b4ff25feb320f7991e16c4172e20dd417\n"
    },
    {
      "commit": "b522f04bc2a581e2877bef4a44ac00b827f879ed",
      "tree": "4cb0aa93571e8abfdc485ad6e3f2070ba5569347",
      "parents": [
        "9431c476f35431f45a13c257b305e9999821190d"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 21 16:57:59 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 21 17:02:09 2017 -0700"
      },
      "message": "AAPT2: Allow truncating of package names\n\nResTable_package header only allows 127 UTF-16 characters, so AAPT\nwould truncate the real package name to fit. AAPT2 would error-out\non any package name longer than 127 UTF-16 characters. This strictness\nis not required except when building shared libraries, which use the\nfull package name as a way of identifying the runtime assigned\npackage ID to package name mapping.\n\nBug: 36940145\nTest: make aapt2_tests\nChange-Id: I7d2b7e50c7ab30c6a6c4f15d310e711f68e35091\n"
    },
    {
      "commit": "9431c476f35431f45a13c257b305e9999821190d",
      "tree": "7cb0433f19dcb7761dccfad88eb33a0897e93e69",
      "parents": [
        "aca246565a7426654685ff0653519f40af8a3b01"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 21 16:08:02 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 21 16:09:24 2017 -0700"
      },
      "message": "AAPT2: Make BinaryResourceParser more lenient\n\nTrailing data after the main RES_TABLE_TYPE should be logged but not\ncause an error.\n\nBug: 36945869\nTest: (aapt2 dump apk/attached/in/bug.apk)\nChange-Id: I784406a680b79630798fdb4b7ca81f9d1f2b96d1\n"
    },
    {
      "commit": "b97d51a0d2bd28f597cd81df9bbd776436d03fb6",
      "tree": "716e3d6504e69097e60df7d27ce854ce01f999c3",
      "parents": [
        "676bd21542d991edfadf8b655d481baa83d23511",
        "db091577fff5bcddac703bc8ac4f932fd53e0621"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 14 00:58:04 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 14 00:58:08 2017 +0000"
      },
      "message": "Merge \"AAPT2: Allow the \u0027;\u0027 separator on Windows for split args\" into oc-dev"
    },
    {
      "commit": "db091577fff5bcddac703bc8ac4f932fd53e0621",
      "tree": "9367138a0889a4c84c7ea993853eb62db099c549",
      "parents": [
        "ec8f35366851fcfea2d8b8e42821dda72bdca344"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Apr 13 12:48:56 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Apr 13 16:07:35 2017 -0700"
      },
      "message": "AAPT2: Allow the \u0027;\u0027 separator on Windows for split args\n\nBug: 36870463\nTest: manual (wine)\nChange-Id: I8a38545a3cac9354b41858e1840b197b60925c03\n"
    },
    {
      "commit": "62b713ed73e72ce18ae81367322e5de00aabeb07",
      "tree": "f60ba4b2dff556dba638f4cd0525749a65ad697c",
      "parents": [
        "07525d4f259934e43d10c733b203a55c6fa8e1ef",
        "ea134e08d70d156bdd17714d5f9ab9c44c91d4fa"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Apr 13 22:53:56 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 13 22:54:02 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fix order-of-destruction crash\" into oc-dev"
    },
    {
      "commit": "ea134e08d70d156bdd17714d5f9ab9c44c91d4fa",
      "tree": "6a4f5d5db064e11a303d6adb7b5e0cec2e126282",
      "parents": [
        "ec8f35366851fcfea2d8b8e42821dda72bdca344"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Apr 13 12:55:19 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Apr 13 12:57:06 2017 -0700"
      },
      "message": "AAPT2: Fix order-of-destruction crash\n\nMake sure that users of StringPool are destroyed before\nthe StringPool itself.\n\nTest: valgrind aapt2 optimize -o opt.apk out/target/common/obj/APPS/framework-res_intermediates/package-export.apk\nChange-Id: I140c2d32f8449028976795d5d6865d83e1409b53\n"
    },
    {
      "commit": "d1a6e6740f08025925878e29d6909f7afd996378",
      "tree": "0dabcb104b4eb50edd23ab438c917b0b99558f1a",
      "parents": [
        "07d60cce02069c111207399a292d7713a8e4d272",
        "418763ff54170484c527bf618ef2fad34fe63f97"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 13 06:54:18 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 13 06:54:21 2017 +0000"
      },
      "message": "Merge \"AAPT2: Generate R.txt\" into oc-dev"
    },
    {
      "commit": "418763ff54170484c527bf618ef2fad34fe63f97",
      "tree": "fd7d16b9602e9487917058997bda65bed6551c85",
      "parents": [
        "ec8f35366851fcfea2d8b8e42821dda72bdca344"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Apr 11 17:36:53 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Apr 11 17:40:02 2017 -0700"
      },
      "message": "AAPT2: Generate R.txt\n\nIn order to support a staged rollout of support for AAPT2,\nlibraries being built the old way (merged into a single resource\ndirectory) still need to make use of the generated R.txt AAPT\nemitted. Do the same as AAPT.\n\nTest: manual\nChange-Id: Iaac1e824ddbd67e4efbab7692cddc1e4aa052f5a\n"
    },
    {
      "commit": "014d315653ac66ea1ac5810b32b099a1a5b93d4d",
      "tree": "6a87ed88afbde140b6127abe04a4065edb712d76",
      "parents": [
        "62abe8f8027ccc5a98133b93582ad23ff0573d0c"
      ],
      "author": {
        "name": "Chris Warrington",
        "email": "cmw@google.com",
        "time": "Mon Apr 10 11:49:59 2017 +0100"
      },
      "committer": {
        "name": "Chris Warrington",
        "email": "cmw@google.com",
        "time": "Tue Apr 11 09:21:29 2017 +0000"
      },
      "message": "AAPT2: expose return values through JNI.\n\nTest: Tests for JNI in the studio-master-dev branch.\nChange-Id: I709595aabf31c9c2fea659c7af20a5c50d1e3d34\n"
    },
    {
      "commit": "d0f492db038c6210c1138865d816bfb134376538",
      "tree": "1d4ed362037758111a28ecb453d527403d5d6815",
      "parents": [
        "0015a153536c51cdd66dce5e9f08d19eb517fab8"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Apr 03 18:12:45 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Apr 10 11:59:18 2017 -0700"
      },
      "message": "AAPT2: Share split functionality between link and optimize\n\nGenerating splits should be possible to do from the optimize command.\nThis means that a lot of infrastructure around split APKs can be\nshared by both the optimize and link phase.\n\nBug: 35925830\nChange-Id: Ia88b9e4bff300a56353b2f7a4a2547c8eb43a299\nTest: manual\n"
    },
    {
      "commit": "f4dacf29cc995fad4aea8e8f25811f9ee4685d91",
      "tree": "8b75908098416f6cee9505070e409f2c6c8777f1",
      "parents": [
        "ca73ff016f29bb091cd404717b5908db4cce10d0"
      ],
      "author": {
        "name": "Mihai Nita",
        "email": "mnita@google.com",
        "time": "Fri Apr 07 08:25:06 2017 -0700"
      },
      "committer": {
        "name": "Mihai Nita",
        "email": "mnita@google.com",
        "time": "Fri Apr 07 09:27:03 2017 -0700"
      },
      "message": "AAPT2: fixing the -c flag being ignored\n\nBug: 36999175\nTest: manual\n\nChange-Id: Id9a4a00a3b37bc088d86df7c75bbe711536b980f\n"
    },
    {
      "commit": "448727bdae6a8225ed998d623d6e79c168603c4e",
      "tree": "80cd7bd936bc845991b8bf7843a616fdfbbef5d1",
      "parents": [
        "7e5205137cb9fd7b89d84f34a88e05f65ca7ff5a",
        "8049f3da712ea9c3154b57ce2276c97e749d1f2c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 05 20:43:19 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 05 20:43:23 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fix pseudolocalization (again)\" into oc-dev"
    },
    {
      "commit": "7a7e415967ace2d554cedb4ceb76123324c0ef94",
      "tree": "9737df6901d0faa6ca8fb5b7a2d3ef5b6319cea0",
      "parents": [
        "6cf445bd3d97ea72f89bfbc7c1681f288cae28d5",
        "113ee097386380daa8f01d74916504a9a1338a63"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 04 19:14:43 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 04 19:14:47 2017 +0000"
      },
      "message": "Merge \"AAPT2: Allow multiple -c flags\" into oc-dev"
    },
    {
      "commit": "113ee097386380daa8f01d74916504a9a1338a63",
      "tree": "eec257e64dd728c8d4432c7ad08773d4821a92d6",
      "parents": [
        "881a623e3522e3e4f0905b606ca5c77cf899b21c"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Apr 03 19:38:25 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Apr 03 19:38:25 2017 -0700"
      },
      "message": "AAPT2: Allow multiple -c flags\n\nAAPT allows multiple -c flags in addition to separating -c arguments\nwith commas.\n\nBug: 35671619\nTest: manual\nChange-Id: I90491968e8ea2b28e3cd6e9246bcdd62bd6d6a3c\n"
    },
    {
      "commit": "8049f3da712ea9c3154b57ce2276c97e749d1f2c",
      "tree": "cd4b22971ad876eb8421a7a5870da9e49d62c9f1",
      "parents": [
        "881a623e3522e3e4f0905b606ca5c77cf899b21c"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 31 18:28:14 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 31 18:30:20 2017 -0700"
      },
      "message": "AAPT2: Fix pseudolocalization (again)\n\nPseudolocalization didn\u0027t properly handle spans in\nstrings like \"\u003csmall\u003e\u003csmall\u003eHello\u003c/small\u003e\u003c/small\u003e\".\n\nThe spans would be identical and when doing range checks\nonly one of them would be updated.\n\nSwitched to a more robust way of extracting the relevant\nchunks of a styled string. This uses a stack, which is more\nin line with the real representation in XML.\n\nBug: 34088357\nTest: make aapt2_tests\nChange-Id: Ia4e4501713e688c96a89e26e4e2b1384f4cd3889\n"
    },
    {
      "commit": "c26ace07545e5dfb830e9ea22bcdaf409acff627",
      "tree": "4353138c82dfcb7076e59154222f3b13f273f314",
      "parents": [
        "86cb762ae64d64244fe70aab01710a55a27ac205",
        "33af6c730f9f7fc51f04516c7a22cac82cb9823e"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 30 00:30:58 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 30 00:31:01 2017 +0000"
      },
      "message": "Merge \"AAPT2: Parse an ID encoded as a map\" into oc-dev"
    },
    {
      "commit": "b1afa07745280c7a36077beda6293b69c6ba4ea2",
      "tree": "77483b34ca63be514c3ee1caa562c7fd503cd3da",
      "parents": [
        "22ea35187f7d8a55ad7ede0d0e97be65b83801be"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Mar 29 13:52:38 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Mar 29 20:56:32 2017 +0000"
      },
      "message": "AAPT2: Allow arbitrary entry names with aapt2 optimize\n\nPresumably, the apps build fine for the developers, so just\nfeed the existing names through without validation. Validation\nstill exists when building an app from source.\n\nBug: 36051854\nChange-Id: Idc64ee91b08dce67d3c28f3c5284a7afa1312df1\nTest: run aapt2 optimize on the apks from b/36051854 and build aapt2_tests\n"
    },
    {
      "commit": "33af6c730f9f7fc51f04516c7a22cac82cb9823e",
      "tree": "94f834ef6df06b8b534cb3a053de308f74793a09",
      "parents": [
        "c463bed8dbfbb5bbac791299e8997282685e64d2"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Mar 29 13:00:35 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Mar 29 20:11:04 2017 +0000"
      },
      "message": "AAPT2: Parse an ID encoded as a map\n\nID types should not be encoded as a map. AAPT and AAPT2 emit\nIDs as boolean types.\n\nSome apps exist that for some reason have their ID types encoded\nas empty maps. This is the case only for the auto generated IDs\nfrom enum values in \u003cattr\u003e tags.\n\nAllow IDs as maps and ignore their content when processing an APK\nfor optimizing.\n\nAlso fixes an issue with expected size of the ResTable_package struct.\n\nBug: 35861796\nTest: tested against the APK in b/35861796\nChange-Id: I29a19cd9777bb10bed6766cd42e35e50e098797b\n"
    },
    {
      "commit": "27a01ef0632fc31d558d6cb91c98e6eb8457eb33",
      "tree": "4e8e43052384fbbd52334e35eae37b6f4132b4cc",
      "parents": [
        "4e8da712d9f92d207b6a23ed161d360abe477763",
        "06460ef0d7072114ea3280e1650f77f55e7223f4"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 24 22:04:55 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 24 22:04:59 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fix up file IO\""
    },
    {
      "commit": "06460ef0d7072114ea3280e1650f77f55e7223f4",
      "tree": "5045dafbd896153c191ee0ea14717359021175e2",
      "parents": [
        "3910adfb62b6db705878058ccbae52af0fecb172"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Mar 14 18:52:13 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Mar 20 16:53:46 2017 -0700"
      },
      "message": "AAPT2: Fix up file IO\n\nThis also enables an AAPT behavior that CTS tests have\ncome to depend on.\n\nSmall files that compress negatively (get larger) are stored\nuncompressed. Some CTS tests assume this and try to open these\nfiles by mmapping them, which is only possible if they are\nuncompressed.\n\nBug: 35461578\nTest: make aapt2_tests\nChange-Id: Id622a6150fe72477ad65d67d1bad897a8ee2ffb9\n"
    },
    {
      "commit": "ed69ce84bdfa5ba82008a9b66485ef71c953657a",
      "tree": "a255aa92ea253c3cc2ec575279d4e28adfca8c2a",
      "parents": [
        "5c690d55dd2d0286db1ba3331a64769c07636ff8"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Mar 20 10:55:01 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Mar 20 14:51:13 2017 -0700"
      },
      "message": "libandroidfw: Fix mass logspam of ResourceTypes warnings\n\nAn overlay was incorrectly leaking its own resources into the\nframework resource package, which caused warnings for every app\nthat tried to access framework resources (all of them).\n\nThis change skips including any resources that are not overlaying\nanything (not present in IDMAP).\n\nBug: 36256974\nTest: make libandroidfw_tests\nChange-Id: I8c710af6849bb848938825aacca02799ee96c003\n"
    },
    {
      "commit": "b0c47ef8779e445865e63355ab66265461e1f2a3",
      "tree": "b0823faa314d767d90f9f0d2120c56ca57653ed0",
      "parents": [
        "1665d0f028e3a225cb117d3e227bef5c5dace2d4"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Mar 06 20:05:57 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 16 15:45:16 2017 -0700"
      },
      "message": "AAPT2: Finish support for feature splits\n\n- Prefix the config split name generated from a feature split with the\n  name of the feature split.\n- Add the \u0027configForSplit\u0027 attribute to the \u003cmanifest\u003e tag of a config\n  split and give it the same name as the feature split it was generated\n  from.\n- Look for the featureSplit attribute in \u003cmanifest\u003e and automatically\n  convert it to \u0027split\u0027 and inject \u0027android:isFeatureSplit\u003d\"true\"\u0027.\n\n  Feature splits should be written like so:\n\n  \u003cmanifest xmlns:android\u003d\"http://schemas.android.com/apk/res/android\"\n            package\u003d\"com.foo.example\"\n            featureSplit\u003d\"feature_b\"\u003e\n\n        \u003cuses-split android:name\u003d\"feature_a\" /\u003e\n\n        ...\n  \u003c/manifest\u003e\n\nBug: 34703094\nTest: manual\nChange-Id: I01b5c4a9aa03a2d25ef1e87bc7874b57c9deede9\n"
    },
    {
      "commit": "b39ad7c9f66877f92ea8583aa8b7b5a8daa6031e",
      "tree": "8b444f19230497d8a12e940c2ecd7a6673386345",
      "parents": [
        "208e2644618af7474f399089c264f0da1cfb0c81"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Mar 13 11:40:48 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Mar 14 12:26:28 2017 -0700"
      },
      "message": "AAPT2: Add -A (assets) support\n\nLooks like the build system doesn\u0027t support assets/ for\nresources, so we will re-introduce them in aapt2, even though\nwe\u0027re just copying them around and they would be better\nsuited for inclusion in the APK when classes.dex gets inserted.\n\nBug: 35461578\nTest: CTS test android.content.res.cts.AssetManager#testAssetOperations should pass\nChange-Id: I18361d7367d476806bcf7154ee76df3f0e83b565\n"
    },
    {
      "commit": "f34b6f4f2b969b47a3f371eb9549e92ef1680d91",
      "tree": "ba2db0d2374464655c54dd7a3c24a65207e415a3",
      "parents": [
        "df2870df9ae6e5dbb7acfe3d5fd840a3317b0e66"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 03 16:33:26 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Mar 07 11:06:16 2017 -0800"
      },
      "message": "AAPT2: Add --package-id flag for feature-split suppport\n\nBug: 35928935\nChange-Id: Ia8496505e61cfcfdb8f9f62366d2f36e453db111\nTest: make aapt2_tests\n"
    },
    {
      "commit": "df2870df9ae6e5dbb7acfe3d5fd840a3317b0e66",
      "tree": "0b25318bf65a84bb9cf9cb4f9cb59ec375395a3e",
      "parents": [
        "a3d279fa4b258498f3b7ee678e546a82e76cdaaf",
        "136fd0764faf7a588b4a1b479d7a8cc6fe18fcc6"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 06 20:01:13 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 06 20:01:17 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fix parsing ResTable_type\""
    },
    {
      "commit": "ae3c244944267e2fd5fdd7bd3e1cd09e599ee118",
      "tree": "db6a7ea886dedf49efb6ee236386eb5bd8705ed3",
      "parents": [
        "64979aacb51b7a577862b7069e2f89d7e0fe8062",
        "8f7c550e20a6edbc9af7bb48675afaf8bcb3783f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Mar 04 00:50:49 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 04 00:50:51 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fix Plural::Equals() method\""
    },
    {
      "commit": "136fd0764faf7a588b4a1b479d7a8cc6fe18fcc6",
      "tree": "91f7316861e5d879a627bd00578170791889c528",
      "parents": [
        "485c0feea53199b1d43db8782073044c846424c4"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 03 13:50:21 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 03 14:01:09 2017 -0800"
      },
      "message": "AAPT2: Fix parsing ResTable_type\n\nResTable_type\u0027s size changes due to it containing\nResTable_config. Make sure we check for the minimum size\nrequired to read it.\n\nBug: 35861796\nTest: Manual (don\u0027t have an integration test harness setup yet)\nChange-Id: Ifb0cd1d732625f59835c8ed0449adb78129636de\n"
    },
    {
      "commit": "ac6edc501b61e14e3b70ccbbd4d8ed112d92b96c",
      "tree": "cadb08aa8c867bbcd359aaa8ce87997b53f9acf0",
      "parents": [
        "555bf41049bbc387d920704f7a1f23314bc84986"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 02 19:31:28 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 02 19:32:32 2017 -0800"
      },
      "message": "AAPT2: Fix escaping sequence processing in XML parsing\n\nBug: 35483813\nTest: make aapt2_tests\nChange-Id: I68baba17ab3639c220b734a2a68d86aad0dedf8c\n"
    },
    {
      "commit": "8f7c550e20a6edbc9af7bb48675afaf8bcb3783f",
      "tree": "7a04d263f79324e59a30fda3a78034159578c90d",
      "parents": [
        "555bf41049bbc387d920704f7a1f23314bc84986"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 02 17:45:01 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 02 17:45:51 2017 -0800"
      },
      "message": "AAPT2: Fix Plural::Equals() method\n\nTest: make aapt2_tests\nBug: 35902437\nChange-Id: I8797f89af58876f891f0b0c5cce85fd7781c4e24\n"
    },
    {
      "commit": "b5dc4bd49a036e3403ca17e961d2c8e13e038295",
      "tree": "e07c0d9a9718a34e2834fe6adbfd99e449cebb8b",
      "parents": [
        "9a53d03104c4535f512ec24e63afe9a965979812"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 22 19:29:29 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 22 19:54:43 2017 -0800"
      },
      "message": "AAPT2: Few tweaks to get shared-libraries working\n\nTest: manual (building shared support library demo)\nChange-Id: I4730645aa92ba1893baf67ffe35fbd4aac0f8e46\n"
    },
    {
      "commit": "d48944a745f9ed121e6bde22ef6feb3a44fbec39",
      "tree": "349c152caa68f1283535b2f9c49f5cd8a50eb59b",
      "parents": [
        "ceb9b2f80f853059233cdd29057f39a5960a74ae"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 21 14:22:30 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 22 11:41:55 2017 -0800"
      },
      "message": "AAPT2: Rename strip phase to optimize\n\n- Allow resource deduping, version collapsing, and sparse resource\n  encoding.\n\nTest: manual\nChange-Id: Ia4aa892ab5b06ba1d5ea4a6efb51b00bc3a980c4\n"
    },
    {
      "commit": "ceb9b2f80f853059233cdd29057f39a5960a74ae",
      "tree": "9093e8537319a97d8a2cbd8d4f0042c81de5ff8e",
      "parents": [
        "f9bd2944694539f1dce74d420156cc50bbb4af14"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Feb 16 12:05:42 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 22 11:16:13 2017 -0800"
      },
      "message": "AAPT2: Shared library support\n\nTest: make aapt2_tests\nChange-Id: I98dddf1367e6c0ac425bb20be46e6ff05f4f2f45\n"
    },
    {
      "commit": "c8f71aa67ea599cb80205496cb67e9e7a121299c",
      "tree": "2966aa97b09f04f9b7379fd93a7fc3ea1ae9009f",
      "parents": [
        "c535d122c6a58a152ff2581f936070c2695c45ba"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 08 07:03:50 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 15 12:40:02 2017 -0800"
      },
      "message": "Add ResTable_sparseTypeEntry support\n\nBenchmarks on bullhead-userdebug show that there is a negligent\nperformance impact when using sparse entries on a 30% loaded\nsparse type of 1000 resources.\n\nBenchmark                                             Time           CPU Iterations\n-----------------------------------------------------------------------------------\nBM_SparseEntryGetResourceSparseLarge                255 ns        254 ns    2751408\nBM_SparseEntryGetResourceNotSparseLarge             254 ns        254 ns    2756534\n\nBug: 27381711\nTest: make libandroidfw_tests aapt2_tests\nChange-Id: I051ea22f2f6b2bc3696e446adc9e2a34be18009f\n"
    },
    {
      "commit": "5b12734fb0d1c189ed9ab699bdb1a4d26c6ed8b8",
      "tree": "606403e46191c1a8855af7456f7ada99333b4535",
      "parents": [
        "f700fb1f23459ba0b4cfad12d0ef7291139c31b9",
        "672384b41e1fc7195424533b7aa6753fb771a6cb"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Sun Feb 12 18:43:57 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Feb 12 18:44:01 2017 +0000"
      },
      "message": "Merge \"Allow for multiple preferred densities in the strip command.\""
    },
    {
      "commit": "672384b41e1fc7195424533b7aa6753fb771a6cb",
      "tree": "2fa775cab3a3f4b0df5649b2f25e6c0577c0e44c",
      "parents": [
        "85a05cd9b5945c42f46ce1bcacb2d1e0aa8c7a44"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Mon Feb 06 10:29:02 2017 +0000"
      },
      "committer": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Sun Feb 12 15:57:41 2017 +0000"
      },
      "message": "Allow for multiple preferred densities in the strip command.\n\nTest: Unit tests pass.\n\nChange-Id: I1f27ac8c36ff3489e4c8e4fce7f3d9cb31df6906\n"
    },
    {
      "commit": "024d22fdb76a75f72ac1a421c4dd184bbfe2ba12",
      "tree": "074240054a9d37547ab9ddd3cac73a05e08b3f0e",
      "parents": [
        "34895c404b0153f021094d149cf36918edbd4552",
        "7542162cb1b1fd2ce8a26dd7f3fedc8de8160d38"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 09 16:17:15 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 09 16:17:18 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fix pseudolocalization to respect \u003cxliff:g\u003e\""
    },
    {
      "commit": "7542162cb1b1fd2ce8a26dd7f3fedc8de8160d38",
      "tree": "0358684e3551d67eb93cb80ae81ef391ba1a9091",
      "parents": [
        "c270de85cc0c398d9ce165592908d2740219a708"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jan 06 15:20:04 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 08 06:23:45 2017 -0800"
      },
      "message": "AAPT2: Fix pseudolocalization to respect \u003cxliff:g\u003e\n\nThe XLIFF \u0027g\u0027 tag specifies content that should NOT be translated.\nAAPT2\u0027s pseudolocalization process should respect it.\n\nBug:34064599\nTest: make libandroidfw_tests\nChange-Id: Ice437d7f0ff246730ee04896fd035e2d846148fb\n"
    },
    {
      "commit": "929d6517dfd338f0d481dbe6587643d5aef27ec6",
      "tree": "b80a93b93946bd4e982b9f4abd97a4c3aa43feb3",
      "parents": [
        "c270de85cc0c398d9ce165592908d2740219a708"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 16 19:11:19 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 08 06:04:52 2017 -0800"
      },
      "message": "AssetManager2: Add GetResourceId\n\nAdd ability to lookup a resource by name.\n\nTest: make libandroidfw_tests\nChange-Id: I262ba5ce4c9892458226fbdb44cf21f9877fb92d\n"
    },
    {
      "commit": "0355dccc85b70ae6e68a11c0dd1e6b8fb2feb94b",
      "tree": "5c5d8a13dc0bb5dd6e02abe4a5ae2ddcb0c8e1ba",
      "parents": [
        "466149d78c8483094840db8c70976427a9dab0a7",
        "fa131d5312011fc1a95cc9a679dbe52f0a7dbe4d"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Sat Feb 04 03:54:39 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 04 03:54:43 2017 +0000"
      },
      "message": "Merge \"Only compress files that were already compressed in the original APK.\""
    },
    {
      "commit": "558a63056e55424c1033d078e950e5329288cb57",
      "tree": "92bc949903bfd210322d3eb36947843c6f018c43",
      "parents": [
        "a07efe52d59a8d9652140d44f1744a43fdb690a5",
        "86d67df8d57b9537666f9b54a9ca563779a2288b"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Sat Feb 04 03:44:21 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 04 03:44:25 2017 +0000"
      },
      "message": "Merge \"AAPT2: Support CtsContentTestCases build\""
    },
    {
      "commit": "fa131d5312011fc1a95cc9a679dbe52f0a7dbe4d",
      "tree": "f488c2401aab2030859d822c11efe1d5838823af",
      "parents": [
        "2a1232426826d08124502fc48101a8eae326fcc4"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Fri Feb 03 19:15:03 2017 +0000"
      },
      "committer": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Fri Feb 03 19:49:37 2017 +0000"
      },
      "message": "Only compress files that were already compressed in the original APK.\n\nAlso fix a log message.\n\nTest: Manually. Unit tests pass.\n\nChange-Id: Iea236bbcfbe1a0a0894ce1bfce09c19208c5a0bc\n"
    },
    {
      "commit": "2968cbf4aa67e952d79dd57e39806dbe92a0148e",
      "tree": "77988c62bdfe8ddd5215c71f956fb1ba7f73ea11",
      "parents": [
        "fc866baa333a60a988208293fa2eb99d7e90d427"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Thu Feb 02 22:38:40 2017 +0000"
      },
      "committer": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Fri Feb 03 18:57:09 2017 +0000"
      },
      "message": "Strip the resources from the APK using the TableSplitter.\n\nTest: Unit tests pass.\n\nChange-Id: I1dd71581113fb9a6feeefa9c794cc282529c3754\n"
    },
    {
      "commit": "fc866baa333a60a988208293fa2eb99d7e90d427",
      "tree": "f9d164ee808e72896dffcab33b32a5582caeef2b",
      "parents": [
        "265066c51d3f0fcc924fb12482780231329c95f2",
        "880d65b4fdfcdc5ac24a3d697a2acfc8511d8b37"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Fri Feb 03 18:51:39 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 03 18:51:42 2017 +0000"
      },
      "message": "Merge \"Iterate over the zip entries in order.\""
    },
    {
      "commit": "265066c51d3f0fcc924fb12482780231329c95f2",
      "tree": "29e881b39a307c95af0e1db765cb458024916331",
      "parents": [
        "1d23c581645c891f5d24247e766fe1f06c616d6d",
        "970732dc453f84bdf4e232490925ee7c48513734"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Fri Feb 03 18:50:13 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 03 18:50:16 2017 +0000"
      },
      "message": "Merge \"Expose whether a file was compressed before being loaded in memory.\""
    },
    {
      "commit": "970732dc453f84bdf4e232490925ee7c48513734",
      "tree": "78476848b1dc7f27eff82c7f9841aa6a57bba92c",
      "parents": [
        "ddb80216b9d536be0f2af287f44a41872aa1d809"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Thu Feb 02 23:13:58 2017 +0000"
      },
      "committer": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Thu Feb 02 23:39:24 2017 +0000"
      },
      "message": "Expose whether a file was compressed before being loaded in memory.\n\nThis is useful when we want to write an APK and keep the same\ncompression parameters as the original APK.\n\nTest: Unit tests pass.\n\nChange-Id: I3afcae1c8727e429b08c9ac7359cf0789ff4abfc\n"
    },
    {
      "commit": "880d65b4fdfcdc5ac24a3d697a2acfc8511d8b37",
      "tree": "afca5c8fd9417eac0f150585a64d4724089994d6",
      "parents": [
        "ddb80216b9d536be0f2af287f44a41872aa1d809"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Thu Feb 02 22:33:17 2017 +0000"
      },
      "committer": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Thu Feb 02 22:52:44 2017 +0000"
      },
      "message": "Iterate over the zip entries in order.\n\nTest: Unit tests pass.\n\nChange-Id: I0501fad51a87c6cc91f2fc22358cd356616e1a2e\n"
    },
    {
      "commit": "2599aa4dfd29627a5690460bdcd5568d1029d4dc",
      "tree": "e7cf03b50d729f80cb85ec15ba1dc68bda841759",
      "parents": [
        "ddb80216b9d536be0f2af287f44a41872aa1d809"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Wed Feb 01 22:47:03 2017 +0000"
      },
      "committer": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Thu Feb 02 21:35:21 2017 +0000"
      },
      "message": "Add a method LoadedApk::WriteToArchive.\n\nTest: Manually.\n\nChange-Id: I61717204e58ca2bbfba9a52c7aecf27882a853f8\n"
    },
    {
      "commit": "86d67df8d57b9537666f9b54a9ca563779a2288b",
      "tree": "d7498429238104f724b28ff68a84e7deeebef8af",
      "parents": [
        "a9285db08883dbbe7b5eb9276cb52b7e01b42aa3"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 31 13:47:27 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 01 15:28:23 2017 -0800"
      },
      "message": "AAPT2: Support CtsContentTestCases build\n\n- Add \u003cfeature-group\u003e to ManifestFixer.\n- Support \u003cmeta-data\u003e in \u003cinstrumentation\u003e\n- Add support for \u003cbag\u003e and type\u003d\"configVarying\". Some CTS tests use this\n  old notation, we need to support it (even though configVarying isn\u0027t\n  anything supported by the framework convention).\n\nChange-Id: I6946fa633ce513ea8437c1496db883cf27dcf6de\nTest: make aapt2_tests\n"
    },
    {
      "commit": "8a7b4cb99290ec8c1b7d7df4f6e64999a9f4de6e",
      "tree": "19ec30b335440f6fd50e7b371c55261083bd5adc",
      "parents": [
        "df7278d842eb89e24b94305890c3932c77e27cf2"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Tue Jan 31 23:58:27 2017 +0000"
      },
      "committer": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Wed Feb 01 18:49:19 2017 +0000"
      },
      "message": "Backbone of the new aapt2 strip command.\n\nThe strip command takes an APK as argument and a --target-densities flag which\ncontains the list of screen densities for which to optimize the APK. All\nthe resources that would be unused for a device having the given\ndensities are stripped from the APK leaving only the ones actually being\nused.\n\nTest: Manual.\n\nChange-Id: I68368b00876a18ccdbbfc0a8dd265bd361117933\n"
    },
    {
      "commit": "ff759e6a6ef6dd741b174e58a0f01cb87accc897",
      "tree": "97d5fa59235dad2144b90caf5f3340b2b4ff566a",
      "parents": [
        "db88bfaa31a559921657cd255e31cde2e73c6f99"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Wed Feb 01 00:29:25 2017 +0000"
      },
      "committer": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Wed Feb 01 00:31:55 2017 +0000"
      },
      "message": "Moving the LoadedApk class to its own file.\n\nTest: Unit tests pass.\n\nChange-Id: Id706f9ad1f3406bb73a60a33139a04745d5d72c0\n"
    },
    {
      "commit": "e84ad491c82168228f042644285a2581fc619baf",
      "tree": "4c14b28f519d939da23578fc7b4935cfb5b1adb6",
      "parents": [
        "b7cab6a19096458a7fafa905eed52db83759b6c6",
        "4832745b84d6a358582f2264d22acacf25e01b07"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 25 01:20:23 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 25 01:20:28 2017 +0000"
      },
      "message": "Merge \"Add color mode to activity/window\""
    },
    {
      "commit": "4832745b84d6a358582f2264d22acacf25e01b07",
      "tree": "cde7e923e06892dfa7c9b1a10a10e8da91e007f1",
      "parents": [
        "a393ff7dc7e7e7002a400d37868e0d6c14507b43"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 23 17:03:35 2017 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 24 15:55:09 2017 -0800"
      },
      "message": "Add color mode to activity/window\n\nThe color mode lets an application request a wide color gamut for\na specific window. This will also be used in the future to request\nHDR. The color mode is currently either default (sRGB) or an undefined\nwide gamut color space chosen by the platform. These attributes could\nlater be used to choose a specific color space if we deem this important\nor useful.\n\nThis change also renames the various \"colorimetry\" attributes and\nconstants to \"color mode\" for consistency. These symbols were\nadded in O and can be safely renamed.\n\nTest: CtsColorModeTestCases\nBug: 32984164\nChange-Id: I4d4691dd12dbe3f3aa6a5cf893cff39aa16c739e\n"
    },
    {
      "commit": "4d35cca96ce55eb29d1948086214f91ae94e9adb",
      "tree": "2ddb5bd63163bf8806be9dc4773e66630b5c4712",
      "parents": [
        "9727f22fc092fe7ccdbf2929d697126f2095d62e"
      ],
      "author": {
        "name": "Yuichi Araki",
        "email": "yaraki@google.com",
        "time": "Wed Jan 18 20:42:17 2017 +0900"
      },
      "committer": {
        "name": "Yuichi Araki",
        "email": "yaraki@google.com",
        "time": "Tue Jan 24 14:59:51 2017 +0900"
      },
      "message": "AAPT: Add --no-version-transitions flag\n\nAdd a new flag to disable versioning of Transition related XMLs.\nTransition support library will use this to handle these XMLs on older\nAPI levels.\n\nTest: make libaapt_tests AaptTestAppOne\nBug: 34427868\nChange-Id: I66e81cca049e71ef6704177b2ca21c9cdeaff78f\n"
    },
    {
      "commit": "c9ba55902123be5abcf2dcda5af9995be0b8d3d8",
      "tree": "953bf264c1f748816ad8ebc4898f580d163ce959",
      "parents": [
        "a2b1774d758b58fc5977f631eff76fa21d303906"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 18 16:34:42 2017 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 19 18:44:00 2017 -0800"
      },
      "message": "Add wide color gamut and HDR resource qualifiers\n\nBug: 32984164\nTest: Config_test, AaptConfig_test and aapt2_tests\nChange-Id: Ie9c82bfe2d36b1d6180ee223250ab5bb2ce90dd4\n"
    },
    {
      "commit": "d5083f6f6b9bc76bbe64052bcec639eee752a321",
      "tree": "29b5dfb74c7e9b12164ced408315b0ad8d5cf527",
      "parents": [
        "04e7b6c6de620406348142ba9dd65bad094e264b"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 16 15:07:21 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 17 18:55:51 2017 -0800"
      },
      "message": "Move StringPiece to libandroidfw\n\nlibandroidfw needs to make use of StringPiece, so\nmove it to libandroidfw and update all code referencing\nStringPiece in aapt2.\n\nTest: make libandroidfw_tests libaapt2_tests\nChange-Id: I68d7f0fc7c651b048d9d1f5e7971f10ef5349fa1\n"
    },
    {
      "commit": "d8cb7dcc4150b1ad2a087e8f3c9acf88b64e32d0",
      "tree": "f4a97d7eeba248400a693d006070d9a83059900f",
      "parents": [
        "1bb70191766c25a6463295c88bd2e2b5886dc2f8",
        "191602091bafb08228a6d3708871c314faff681e"
      ],
      "author": {
        "name": "Fabien Sanglard",
        "email": "sanglardf@google.com",
        "time": "Tue Jan 17 16:34:01 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 16:34:06 2017 +0000"
      },
      "message": "Merge \"AAPT2: Convert Android.mk to Android.bp\""
    },
    {
      "commit": "191602091bafb08228a6d3708871c314faff681e",
      "tree": "07bd02f297a357950232e163cb7e7ff0dbe8fdc8",
      "parents": [
        "ba5124b48bff2455c089e803ea6ffcc197a26c51"
      ],
      "author": {
        "name": "Fabien Sanglard",
        "email": "sanglardf@google.com",
        "time": "Thu Jan 12 14:24:31 2017 -0500"
      },
      "committer": {
        "name": "Fabien Sanglard",
        "email": "sanglardf@google.com",
        "time": "Fri Jan 13 18:56:55 2017 -0500"
      },
      "message": "AAPT2: Convert Android.mk to Android.bp\n\nChange-Id: I6c563993b57e3f04165ca57743f9a2878aba556c\n"
    },
    {
      "commit": "1a6acdbb86c3e72bdb0a4dcab3bda58cbc4ea34c",
      "tree": "1b243f434a14a25dc0eb39097293c3f27b74a54a",
      "parents": [
        "3c6f28aa5968b1edb823495efa15e7358de5261e"
      ],
      "author": {
        "name": "Zak Cohen",
        "email": "zakcohen@google.com",
        "time": "Mon Dec 12 15:21:21 2016 -0800"
      },
      "committer": {
        "name": "Zak Cohen",
        "email": "zakcohen@google.com",
        "time": "Wed Jan 11 11:44:47 2017 -0800"
      },
      "message": "Introduce new UI_MODE_TYPE_VR_HEADSET and qualifier.\n\nBug: 30989383\nTest: Unit test for aapt2\nChange-Id: I66dc65af6327b94fed74538bee08cada0b8be4fa\n"
    },
    {
      "commit": "38665547bb10f65f72d3358fb16cdc63d5febf15",
      "tree": "6a8053ce0d89d81546ed966c0c6fed082d7ff4a9",
      "parents": [
        "db10a2094c7e12ea0f30972a91ed892e085c836f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Dec 28 12:25:46 2016 -0500"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Dec 28 12:40:35 2016 -0500"
      },
      "message": "AAPT2: Treat non-AAPT attributes as Attributes with no format specified.\n\nAttributes in XML like \"class\" should be treated as attributes with no\nformat specified. That means that something like \u0027version\u003d\"1\"\u0027 will\nbe interpreted as an Integer value instead of as a string.\n\nThis is more in line with the old AAPT behaviour.\nBug: 30763349\nTest: make libaapt2_tests\n\nChange-Id: I02fe41617e3c62c354714056198ef480d62afee7\n"
    },
    {
      "commit": "5119e517308b84011fbd4d1a013296f4f5ffb8e4",
      "tree": "e926e96418644b4af981623aa28d06ba376adc8e",
      "parents": [
        "7dbbf956f73012ad0ea50bba37a21555cccfc726"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Dec 05 19:48:20 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Dec 05 21:09:52 2016 -0800"
      },
      "message": "AAPT2: Allow \u003cmeta-data\u003e in \u003cmanifest\u003e\n\nBug:32171613\nTest: libaapt2_tests\nChange-Id: I30fdd9475ff7dff6ceb0ff46a4a00991b72db68b\n"
    },
    {
      "commit": "67387af732f1b5e9b9bc270f03dbb1aedd5632cc",
      "tree": "113d9d560a625cb3f622789b506b8f489f14ad31",
      "parents": [
        "2fb2556833d9f6384004be9cbce4ba8321820909",
        "383db5ebcc3a4a615faf249bf4f126f42e80b82e"
      ],
      "author": {
        "name": "Tamas Berghammer",
        "email": "tberghammer@google.com",
        "time": "Wed Nov 09 13:38:50 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 09 13:38:58 2016 +0000"
      },
      "message": "Merge \"Update package names to work with the proto3 compiler\""
    },
    {
      "commit": "f96789d37c71064f3222d9a628af16f5711145e2",
      "tree": "e08cb8095f88d9b322e50f4558d3e2c146c74a69",
      "parents": [
        "80361c9ea7f3ff694425b6bd9e42e8c933b1196c",
        "c0c366394c658e3787b12e65833b520c9a9a34d9"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Nov 08 23:03:54 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 08 23:03:58 2016 +0000"
      },
      "message": "Merge \"Add font type to AAPT2\""
    },
    {
      "commit": "383db5ebcc3a4a615faf249bf4f126f42e80b82e",
      "tree": "75bf14fb2ad46cc7f0cdb8c9c008d1f8c37fa519",
      "parents": [
        "e7f6ca32de6eebfed88e31156f2e264dc72fc3f1"
      ],
      "author": {
        "name": "Tamas Berghammer",
        "email": "tberghammer@google.com",
        "time": "Wed Jun 22 15:21:38 2016 +0100"
      },
      "committer": {
        "name": "Tamas Berghammer",
        "email": "tberghammer@google.com",
        "time": "Tue Nov 08 14:06:09 2016 +0000"
      },
      "message": "Update package names to work with the proto3 compiler\n\nBug: b/28974522\nChange-Id: I5f3adf4946ee4ba1e09e4f40afe83c151405972a\n"
    },
    {
      "commit": "a256408b243cc9851655b10d4a9d99ef44915e17",
      "tree": "64a6fe8f0a7ab61933cfe5ed7e91cc7ace2d972b",
      "parents": [
        "cb291f38f8aa1517ca66c7331765becb47442edd"
      ],
      "author": {
        "name": "Paulo Casanova",
        "email": "pasc@google.com",
        "time": "Fri Nov 04 11:28:44 2016 +0000"
      },
      "committer": {
        "name": "Paulo Casanova",
        "email": "pasc@google.com",
        "time": "Fri Nov 04 11:28:44 2016 +0000"
      },
      "message": "Renamed Aapt2.java to Aapt2Jni.java.\n\nSee http://ag/1590668 for a discussion.\n\nTest: Done in tools\nChange-Id: I3bfced0da98ab24531c1c1a79970841b32bfa1fa\n"
    },
    {
      "commit": "573cccfea713d54bb6c962112b65fa1679e4e58c",
      "tree": "699093b2df068693b6fe3d7c3f134e7e1ae339b3",
      "parents": [
        "eff7a8e4aab1cccd5b961e5ff4343a3f32e06f31",
        "b555b59f2e53c18e8bd10b51fd963c849eff2cef"
      ],
      "author": {
        "name": "Paulo Casanova",
        "email": "pasc@google.com",
        "time": "Thu Nov 03 18:39:02 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 03 18:39:04 2016 +0000"
      },
      "message": "Merge \"Updated JNI interface.\""
    },
    {
      "commit": "b555b59f2e53c18e8bd10b51fd963c849eff2cef",
      "tree": "96cb13336317741a3800508ed2d6973f069cece4",
      "parents": [
        "88dea2dd23e3df5f87826aa6e524233f37b17588"
      ],
      "author": {
        "name": "Paulo Casanova",
        "email": "pasc@google.com",
        "time": "Tue Nov 01 14:50:46 2016 +0000"
      },
      "committer": {
        "name": "Paulo Casanova",
        "email": "pasc@google.com",
        "time": "Thu Nov 03 10:14:42 2016 +0000"
      },
      "message": "Updated JNI interface.\n\nAdded new \"ping\" method used to detect if the shared\nlibrary has already been loaded.\n\nFixed a few bugs in the implementation (and now it works\nfrom the Java side).\n\nSee http://ag/1590668 for the implementation on devtools.\n\nTest: Done on the tools side\nChange-Id: Ifa41073dc3b6ac69cdb9f77e655bf261c3b4c3d1\n"
    },
    {
      "commit": "3497b265076f338e320fcf01d3e46379492669b2",
      "tree": "842d1f034b3f00afdb6f44ba1ae33ccce477e65e",
      "parents": [
        "88dea2dd23e3df5f87826aa6e524233f37b17588"
      ],
      "author": {
        "name": "Paulo Casanova",
        "email": "pasc@google.com",
        "time": "Tue Nov 01 17:07:06 2016 +0000"
      },
      "committer": {
        "name": "Paulo Casanova",
        "email": "pasc@google.com",
        "time": "Thu Nov 03 09:39:43 2016 +0000"
      },
      "message": "Added Windows support for aapt/JNI.\n\nThis includes copying and slightly modifying\nlibnativehelper\u0027s ScopedUtfChars\u0027 implementation.\n\nTest: Done in studio-master-dev\nChange-Id: I2aacc67b444668478aaa5bb0db991a201c571d1f\n"
    }
  ],
  "next": "c0c366394c658e3787b12e65833b520c9a9a34d9"
}
