)]}'
{
  "log": [
    {
      "commit": "e78a8169665c19b5539508f113093b6c2a4b80de",
      "tree": "0f645728f1a25f71a0db4046d96226bc3d77afb6",
      "parents": [
        "c8b76fe1f4d48aadf07c479dc9412d6b344bab1a"
      ],
      "author": {
        "name": "Nick Butcher",
        "email": "nickbutcher@google.com",
        "time": "Tue Jan 09 15:24:21 2018 +0000"
      },
      "committer": {
        "name": "Nick Butcher",
        "email": "nickbutcher@google.com",
        "time": "Fri Feb 09 11:36:27 2018 +0000"
      },
      "message": "Prevent AAPT from versioning \u003canimated-selector\u003e tags.\n\nBug: 69359529\nTest: Manually tested with ag/3178054\nChange-Id: I10ae4d96c2a31a0a7c363d7a9292ecdfd3bb526a\n"
    },
    {
      "commit": "1084432e1e15ffa96ea03045daaa2220dc21d566",
      "tree": "d9abdb849f002c16c32afee18a08525012af666a",
      "parents": [
        "ea8feabec59d4c4925a8ff8b3c35ff7ba909d671"
      ],
      "author": {
        "name": "Mohamed Heikal",
        "email": "mheikal@google.com",
        "time": "Wed Feb 07 15:17:38 2018 -0500"
      },
      "committer": {
        "name": "Mohamed Heikal",
        "email": "mheikal@google.com",
        "time": "Thu Feb 08 14:50:14 2018 -0500"
      },
      "message": "AAPT2: Fix silent failure when ContainerReader fails during Link\n\nCurrently in the link step ContainerReader is used to read files but the\nreader is not checked for errors prior to the read. This can lead to\nsilent failure when reading invalid resource files.\n\nChange-Id: I6420699ad30b5b84b0b2c696af8eb5a6cbd4111e\n"
    },
    {
      "commit": "83b3cb483088a175e6bc473e92853c13a2b273b3",
      "tree": "7cde67ffe392e5651ee55f5d7077856397d0fcb2",
      "parents": [
        "a0f75399e240ef82c4e56a47d1016d02558c5b21",
        "cf4d62fdd3a604eb53ed9b1912d6cc0c28d54c97"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Feb 07 02:13:05 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 07 02:13:05 2018 +0000"
      },
      "message": "Merge \"Add missing copyright messages\" am: 872f386f6b am: 32a1dc5075\nam: cf4d62fdd3\n\nChange-Id: I75f2c81a9e7c7ec0175e50b3bb58cedc8c36a2be\n"
    },
    {
      "commit": "cf4d62fdd3a604eb53ed9b1912d6cc0c28d54c97",
      "tree": "30699a0baeb8ab4fde952331da404b6168110aa2",
      "parents": [
        "2c732796e1e6499006b4e1165dd9a47d0cd59972",
        "32a1dc5075a216582bdeb21589cc5348e041c5e2"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Feb 06 23:06:08 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Feb 06 23:06:08 2018 +0000"
      },
      "message": "Merge \"Add missing copyright messages\" am: 872f386f6b\nam: 32a1dc5075\n\nChange-Id: I9602e1c9dda5e842fd71c9f48cf354aea4650d74\n"
    },
    {
      "commit": "1b27440abc8d515012da44914d3ced17c104a68e",
      "tree": "712c73f292f5c943ba0df8809ec43fdcdf309185",
      "parents": [
        "1f14eab551c8c0d32b5b922618c41ac3e72d85e3"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Feb 06 11:10:25 2018 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Feb 06 11:10:25 2018 -0800"
      },
      "message": "Add missing copyright messages\n\nBug: 72993971\nTest: m sdkparcelables\nChange-Id: I9fa422160c29ce3054748b2b8d1e26541a697a90\n"
    },
    {
      "commit": "22ed4122e7849a4538208c65f403298fe0fff891",
      "tree": "6989cf803cebd137da27b3b2bb2d858246362247",
      "parents": [
        "2043082f968a385c2ab976dffed4d02b027c50e4"
      ],
      "author": {
        "name": "Dave Ingram",
        "email": "dmi@google.com",
        "time": "Tue Jan 30 16:11:52 2018 -0800"
      },
      "committer": {
        "name": "Dave Ingram",
        "email": "dmi@google.com",
        "time": "Tue Jan 30 21:15:36 2018 -0800"
      },
      "message": "AAPT2: Fix typo in BinaryPrimitives oneofs\n\nFollow-up to ag/3449569\n\nBug: 69587794\nTest: aapt2_tests\nChange-Id: I95d2ba600c00bda2a8420794e43501f9bfca01df\n"
    },
    {
      "commit": "b8344dc72fde9386cdecbb1aa8a47f1e8e430111",
      "tree": "6b28079105fb9b0ff8bd194c66e6a1eb03ac46af",
      "parents": [
        "c04c265dd57e0fe2c880e529cc5cfc8164180009"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Wed Jan 24 17:33:35 2018 -0800"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Wed Jan 24 18:25:33 2018 -0800"
      },
      "message": "Fix command line tool to set the right privacy enum.\n\nTest: manual\nChange-Id: I3f0845ea32b46f1a028f8b6d3d4180a90a47beb5\n"
    },
    {
      "commit": "adb4fc73b0d9be2ad5f76c9e7248440625b80b75",
      "tree": "964bf06ab633b33c24e14147e636e87f03969381",
      "parents": [
        "2cef59dc7b027aa499d06882e7f864c1fc971329",
        "68985805f26f5da6cc6b63934cb00fbff2741ca9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 24 18:18:24 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 24 18:18:24 2018 +0000"
      },
      "message": "Merge \"Avoid processing log event when there is no uid field.\""
    },
    {
      "commit": "ae992b6392c10134fe250d32f0d7e85e21998e6f",
      "tree": "036d0753b7233e13479db6348e874e08d8ae92c7",
      "parents": [
        "240ad971ebae7e8870584c840cbc35d55095c994",
        "5fb872e7878266c850bef249a0417a3bc3e18251"
      ],
      "author": {
        "name": "Benoit Lamarche",
        "email": "benoitlamarche@google.com",
        "time": "Wed Jan 24 12:45:48 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 24 12:45:48 2018 +0000"
      },
      "message": "Merge \"Fail when there is an ASM error\" am: 4152497b4b am: 05bb83c87d\nam: 5fb872e787\n\nChange-Id: I63222e0f376184649f8634932edc6ee296418b91\n"
    },
    {
      "commit": "5fb872e7878266c850bef249a0417a3bc3e18251",
      "tree": "1de713567da01253f2c1fc29b576365b343fdf1c",
      "parents": [
        "eacecc37e8fd3b2157ef2a591cd211dead57bb89",
        "05bb83c87db6d1ec874e51760810c81210bac185"
      ],
      "author": {
        "name": "Benoit Lamarche",
        "email": "benoitlamarche@google.com",
        "time": "Wed Jan 24 12:36:26 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 24 12:36:26 2018 +0000"
      },
      "message": "Merge \"Fail when there is an ASM error\" am: 4152497b4b\nam: 05bb83c87d\n\nChange-Id: I27be59afd9f021c2933d10b6becb0f7542162a37\n"
    },
    {
      "commit": "68985805f26f5da6cc6b63934cb00fbff2741ca9",
      "tree": "73239566cf18c18f34d58ac8d4a4cff8fc83a038",
      "parents": [
        "4953824b89bfbdd5a85a2a7182c0903d9283e1d1"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Sun Jan 21 10:05:09 2018 -0800"
      },
      "committer": {
        "name": "Yang Lu",
        "email": "yanglu@google.com",
        "time": "Tue Jan 23 16:43:07 2018 +0000"
      },
      "message": "Avoid processing log event when there is no uid field.\n\nTest: all statsd unit test passed\n\nChange-Id: Id434d86586950a485b30a244f3c030e8202c1c6d\n"
    },
    {
      "commit": "9f17dfcba6f286bca0fb47c32105c07328a4cc5c",
      "tree": "09240955569f717529a572ce2fec9d254c00e321",
      "parents": [
        "b3c2efc6156cb86ae1f8958ee89a8ac404b190df"
      ],
      "author": {
        "name": "Benoit Lamarche",
        "email": "benoitlamarche@google.com",
        "time": "Mon Jan 22 17:38:41 2018 +0100"
      },
      "committer": {
        "name": "Benoit Lamarche",
        "email": "benoitlamarche@google.com",
        "time": "Mon Jan 22 17:42:21 2018 +0100"
      },
      "message": "Fail when there is an ASM error\n\nOtherwise during a build, Locked Region Code Injection may encounter an\nASM Analyzer exception, and the build will not fail, even though\ninjection won\u0027t have succeeded.\n\nTest: make\nChange-Id: Iee69f1a78fde735db62c7f73405b8cec4e410793\n"
    },
    {
      "commit": "e5b3296316b49bda30b2753025632bd8d9c3bf2e",
      "tree": "10ea488e40ec7b72d9cec7fcb80eb0aff8c27e59",
      "parents": [
        "f4e08c3efeda28ce7a9d839745dc14f2ca75d7f4",
        "cf5326fae1da55b9050834bb63bfa264a6d2af60"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 19 17:10:29 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 19 17:10:29 2018 +0000"
      },
      "message": "Merge \"Allow \u003cadopt-permissions\u003e tag in manifest\""
    },
    {
      "commit": "cfd1b4b263da8fac7bda724fae0e42e618256871",
      "tree": "3abe0d80a7f5ba306e7580d13357f3d2d0c923c1",
      "parents": [
        "24de6a45aae21d576e84b1398ce346baf7639710",
        "e3c1a4a9d21e7698e9e5196086198569ac5cc6cd"
      ],
      "author": {
        "name": "David Chaloupka",
        "email": "chaloupka@google.com",
        "time": "Fri Jan 19 10:57:53 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 19 10:57:53 2018 +0000"
      },
      "message": "Merge \"Handle multiple packages of same name in \u0027aapt2 convert\u0027\""
    },
    {
      "commit": "e52851673117f2e486152c606b517637285b17aa",
      "tree": "5a2294840879975d88ae25bf7b65ec21e81ac536",
      "parents": [
        "3727179195cc9d8c46431b6ab2616663b95889aa",
        "1403ff2b0b5f23b11ce427f54c16d3ebd62100eb"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 19 03:37:25 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 19 03:37:25 2018 +0000"
      },
      "message": "Merge \"Ignore missing font in fontchain_linter.py\""
    },
    {
      "commit": "1403ff2b0b5f23b11ce427f54c16d3ebd62100eb",
      "tree": "c6bbf4201c1336faa512c59fd8f40d21f121533f",
      "parents": [
        "633792e2d3fd0d09eebc4294119dcc9b1b1de970"
      ],
      "author": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Thu Jan 18 17:24:31 2018 -0800"
      },
      "committer": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Thu Jan 18 17:24:31 2018 -0800"
      },
      "message": "Ignore missing font in fontchain_linter.py\n\nIt is totally valid if the font is missing even if the font is listed in\nfonts.xml. Android Watch has less fonts and OEM vendor may reduce the\nfont files.\n\nBug: 72159040\nTest: m fontchain_lint\nChange-Id: I22bdf7bfeb6d80a2a338ebf7536c8eaf193b03c5\n"
    },
    {
      "commit": "8f2fffd809690bbef2593fbf45bc3d86a9ceedab",
      "tree": "626897cd34a290d31286b4879683ae19ded07e7f",
      "parents": [
        "f5e25a3052070485fc520863e3e6162097466e39",
        "d06f1f38a9266f4674a89d69d33198abd12b0e78"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 19 01:00:00 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 19 01:00:00 2018 +0000"
      },
      "message": "Merge \"AAPT2: Store BinaryPrimatives in protos as oneofs\""
    },
    {
      "commit": "e3c1a4a9d21e7698e9e5196086198569ac5cc6cd",
      "tree": "e26d206ea6ea40e0d670f6daf14fce0e894130e5",
      "parents": [
        "588a06f5a25adad63337ac481f9e1b55dcc169a1"
      ],
      "author": {
        "name": "David Chaloupka",
        "email": "chaloupka@google.com",
        "time": "Thu Jan 18 13:44:36 2018 +0000"
      },
      "committer": {
        "name": "David Chaloupka",
        "email": "chaloupka@google.com",
        "time": "Thu Jan 18 19:20:01 2018 +0000"
      },
      "message": "Handle multiple packages of same name in \u0027aapt2 convert\u0027\n\naapt2 currently looks-up packages only by package name and then verifies\nwhether the package ID has the expected value. For pre-L we need to be able\nto handle resource tables having packages of same package name but\ndifferent IDs.\n\nNote that this CL fixes only proto-\u003ebinary conversion but many other aapt2\ncommands are still affected. This is because many transformations still\nconsider package name as sufficient identifier of a package.\n\nBug: 72143207\nTest: Manual\nChange-Id: Id8a920d6cd15bec747d3124270f5bcb7f48924cf\n"
    },
    {
      "commit": "415689bb1ca2554c8752debc0a1ed927a885c723",
      "tree": "e40df0b4b2a7c8805ddb23de197dbf46c8a17970",
      "parents": [
        "0b2941fb09c0f6015fc587d47c4d809c29eb168d",
        "b66db4ec4c24d0d46c91d527b7f500fa66efca2b"
      ],
      "author": {
        "name": "David Chaloupka",
        "email": "chaloupka@google.com",
        "time": "Thu Jan 18 10:06:01 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 18 10:06:01 2018 +0000"
      },
      "message": "Merge \"Adjust file reference type in \u0027aapt2 convert\u0027\""
    },
    {
      "commit": "d06f1f38a9266f4674a89d69d33198abd12b0e78",
      "tree": "3b9e22ed452d5008cfe7d7ae3606a19eabfbd082",
      "parents": [
        "a629e4c393e5ac52c07598a5d3b4ed120115c97d"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Thu Jan 11 18:36:22 2018 -0800"
      },
      "committer": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Wed Jan 17 16:58:43 2018 -0800"
      },
      "message": "AAPT2: Store BinaryPrimatives in protos as oneofs\n\nFixes: 69587794\nTest: aapt2_tests\n\nChange-Id: Idf5526f6b1b720b6e476bcdf8c2155e13a6ecc0f\n"
    },
    {
      "commit": "bd56951c5bce2b3b799de1e306275120cf336763",
      "tree": "17e03fa6c928dbf284d657f8d4d3f8058ffd9236",
      "parents": [
        "072abed5f552871db18a86863d04cfc89714ad5f",
        "a4fb17bbbba59c5ee92402eb8c5da4e3c52560b2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 17 20:20:29 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 17 20:20:29 2018 +0000"
      },
      "message": "Merge \"aapt2: Fix issue with Manifest duplicate handling\""
    },
    {
      "commit": "b66db4ec4c24d0d46c91d527b7f500fa66efca2b",
      "tree": "9f0d23edea8a06eb02524a855db208b4e14b1dfb",
      "parents": [
        "200cd63fb3ff5b4354773e9994f4340f18b39cbc"
      ],
      "author": {
        "name": "David Chaloupka",
        "email": "chaloupka@google.com",
        "time": "Mon Jan 15 12:35:41 2018 +0000"
      },
      "committer": {
        "name": "David Chaloupka",
        "email": "chaloupka@google.com",
        "time": "Wed Jan 17 11:07:44 2018 +0000"
      },
      "message": "Adjust file reference type in \u0027aapt2 convert\u0027\n\nWhen converting between binary and proto APKs in either direction, the\n\u0027aapt2 convert\u0027 command did not adjust FileReference type for entries\ninside the resource table. This fix makes in-place changes of the resource\ntable passed to ConvertApk, which is safe since the resource table is\nthrown away after the conversion.\n\nBug: 71854843\nTest: Manual\nChange-Id: Ide6e141269392db15b399db3566f18175f5133d5\n"
    },
    {
      "commit": "a4fb17bbbba59c5ee92402eb8c5da4e3c52560b2",
      "tree": "5b89566ac4d6cbd47a892211be26ff5948d6a28f",
      "parents": [
        "d6808dc0c00ba45fd589449647f792daf9fa8126"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 16 17:05:10 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 16 17:06:33 2018 -0800"
      },
      "message": "aapt2: Fix issue with Manifest duplicate handling\n\nFixed a memory-corruption issue that led to multiple duplicate\npermission entries being generated for Manifest.java.\n\nBug: 71641288\nTest: make aapt2_tests\nChange-Id: I8cd37929c4883aaba2beebbf874c7ee3234d51d8\n"
    },
    {
      "commit": "ba5b9e44bbfa7577c45c5c5e7e75cc1cd82a31b7",
      "tree": "275dfe9ba25338043f86c3f9ef4f431c135991a7",
      "parents": [
        "02c0e98600b6b0cdf912effea48877b5ddbafed9"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Wed Jan 10 21:31:59 2018 -0800"
      },
      "committer": {
        "name": "Yangster",
        "email": "yanglu@google.com",
        "time": "Mon Jan 15 16:41:29 2018 -0800"
      },
      "message": "Stats log interface for single node attribution chain.\n\nUsually the input parameters for attribution chain is list of int64/string.\nThe new c++interface takes one int64 and one string as input and write\nas a single node into logd.\n\nThis will help avoid allocating temp objects in battery stats java code.\n\nTest: all statsd unit test passed.\nChange-Id: Ia0f7f26b71a570bd3628c42726a5afb0a500d073\n"
    },
    {
      "commit": "db947de10f2231cece6924537b73e1ac56fd5a88",
      "tree": "3fb03e8749712067957a31052f2b7614b2ee861c",
      "parents": [
        "21d4f67a317a2a806320b9a02e3e13af5e1b6acd",
        "336dd0bf63814e9bc51635d763099f27939b9fb6"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 12 20:57:05 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 12 20:57:05 2018 +0000"
      },
      "message": "Merge \"Add another pass of commont lint rules.\""
    },
    {
      "commit": "336dd0bf63814e9bc51635d763099f27939b9fb6",
      "tree": "57820808a1f5b4e7c35ec8b7f35147c0179b67b5",
      "parents": [
        "4ea22a2b3a83b0f34cf8c648f503cc61ac8ff228"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Jan 12 12:12:27 2018 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Jan 12 12:12:29 2018 -0700"
      },
      "message": "Add another pass of commont lint rules.\n\n-- Parcelables should be inflated through CREATOR\n-- Methods with no arguments should throw ISE\n-- Examine constructors for Executors\n-- Listeners should always be last for lambdas\n-- Verify naming of UserHandle methods\n-- Verify naming of Params objects\n-- Verify naming of Context service constants\n-- Verify tense of enabled methods\n\nBetter exception tracking.\n\nTest: manual inspection\nBug: 37784434, 37749454, 37705832\nBug: 37705176, 37536230, 37533040, 71866617\nChange-Id: If2f19784c46a4d99f54577a7365babfd357ca3f7\n"
    },
    {
      "commit": "3c3f9b5d07a974a2d347210fd59bd19851b2faea",
      "tree": "06c4bae7f76f723583fa3b2c8938a502de93d6f6",
      "parents": [
        "79131f7a227eb5f2bbd4e6ea29e14d834c634101"
      ],
      "author": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Fri Jan 12 14:24:09 2018 +0000"
      },
      "committer": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Fri Jan 12 14:26:31 2018 +0000"
      },
      "message": "AAPT2: always compile 9patch files\n\nTest: existing tests\nBug: 70578281\nChange-Id: I7ffcbdd664108348182e71d01b1680e2399ec37c\n"
    },
    {
      "commit": "4f9ba20690fcacc29da2b4044d1c6c8c3cd96260",
      "tree": "ff0ae84d4fc2009b13d5ee093cf155140645f619",
      "parents": [
        "da6e6356d7cd08fadd1b3b16b7f588ea87e5084f",
        "73bff1e8519bb73f17a801f45977d41b69b5b0d0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 12 02:37:13 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 12 02:37:13 2018 +0000"
      },
      "message": "Merge \"AAPT2: Allow compatible duplicate Attributes\""
    },
    {
      "commit": "73bff1e8519bb73f17a801f45977d41b69b5b0d0",
      "tree": "9ac5f4e491ed617b6cefe118b91edb637c6c35a4",
      "parents": [
        "14c2ae4a6e62b78f2c994112d08dbe3d4de64695"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Dec 08 16:06:10 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jan 11 13:54:11 2018 -0800"
      },
      "message": "AAPT2: Allow compatible duplicate Attributes\n\nIf a resource XML file defines two compatible Attributes, they should\nbe merged without throwing an error. Ex:\n\n\u003cdeclare-styleable\u003e\n  \u003cattr name\u003d\"conflict\" format\u003d\"string\" /\u003e\n\u003c/declare-styleable\u003e\n\n\u003cdeclare-styleable\u003e\n  \u003cattr name\u003d\"conflict\" format\u003d\"string|reference\" /\u003e\n\u003c/declare-styleable\u003e\n\nIn this case, string|reference and string are the same, so these should\nmerge correctly.\n\nBug: 65699599\nTest: make aapt2_tests\nTest: make AaptBasicTest\nChange-Id: I7b0f956d2332f7f0b458acd59ca0a606b2cfdf95\n"
    },
    {
      "commit": "0556f3382bfb50c9c3aa25106589445de7bbb755",
      "tree": "1e76078d9f58af64ff4641b4d10bfbdbd9ec8f93",
      "parents": [
        "84c699a4b97afdde27e9ebb0da78e14e47a51b5f"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Tue Jan 09 22:31:45 2018 -0800"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Wed Jan 10 19:59:58 2018 -0800"
      },
      "message": "Add virtual dtor for virtual classes\n\nDelete called on non-final virtual classes but non-virtual destructor.\n\nFixes -Wdelete-non-virtual-dtor warning.\n\nTest: m checkbuild\nChange-Id: Ia84c118db1a53f1ac846354a6023726e394a87ed\n"
    },
    {
      "commit": "20ac944ea00dbef78574b37e490ebe66c9190c13",
      "tree": "e780c5acea88c356c1725dcbef2aad621b06a64a",
      "parents": [
        "9c3d64e60e21c2a39fefe399250ff11d5f55ae3e"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Mon Jan 08 14:54:48 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Mon Jan 08 14:54:48 2018 -0800"
      },
      "message": "Handle null string in jni and c++ stats-log-api interfaces.\n\nTest: statsd unit test passed.\nChange-Id: I4a475d6fcc0b4a0293450bc0ccdd718b362c498b\n"
    },
    {
      "commit": "95820bc4df43623b499af0534391f5dc00b88be7",
      "tree": "8d73ccaa8c72900d9379e06ea080e876048092af",
      "parents": [
        "2ef95c9d1dad6273fae93bd50789adbf967c0119",
        "2807036b099839f628ae362c38aeab889b870613"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Mon Jan 08 21:22:21 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jan 08 21:22:21 2018 +0000"
      },
      "message": "Merge \"Add virtual dtor for virtual classes\" am: 27f61a94d6 am: 2d7813a4a7\nam: 2807036b09\n\nChange-Id: I3723483c2aac5580a7db3256a39eca278a3ee9fb\n"
    },
    {
      "commit": "2807036b099839f628ae362c38aeab889b870613",
      "tree": "27e419b6ac3514073b133bcbe17b0a6562a1cb7b",
      "parents": [
        "fe73dd054248556d7dcf97d7f020bdc265862621",
        "2d7813a4a779eec7152a4cdc93d8fc1ed833bc34"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Mon Jan 08 21:07:09 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jan 08 21:07:09 2018 +0000"
      },
      "message": "Merge \"Add virtual dtor for virtual classes\" am: 27f61a94d6\nam: 2d7813a4a7\n\nChange-Id: I8787ff83ec93f5a8ae2e08e1af573d13750d9aa5\n"
    },
    {
      "commit": "3c034c987e1eeb49660fb62d3426c292a01412c9",
      "tree": "168d3f0040e3e74ac1b2741f91d2dbfcee166535",
      "parents": [
        "a598c05d632d303a49ba06fe306136e0039c785d"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Fri Dec 22 17:36:47 2017 -0800"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Sat Jan 06 20:33:14 2018 -0800"
      },
      "message": "Implement a new type of section which reads from logd and dumps proto.\n\nAnd implement a file section which reads from event-log-tags for\ndecoding binary logs.\n\nBug: 70936599\nTest: atest incidentd_test \u0026\u0026 atest incident_helper_test and flush on\ndevice and test log sections and event_log_tag_map\nChange-Id: Ib3d35e317f355de69f01ded012482486e9a43da6\n"
    },
    {
      "commit": "27f61a94d67cf16d1ec0a12adfc97c77e176ca0f",
      "tree": "9bf4f712f722287233f9e28041d9e22b07bc2692",
      "parents": [
        "6efee9c079eecf025384228763982eecd935c2f8",
        "6dbd3d7a59748c301cad50685e3940fbcdf37f61"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 05 23:27:33 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 05 23:27:33 2018 +0000"
      },
      "message": "Merge \"Add virtual dtor for virtual classes\""
    },
    {
      "commit": "cf5326fae1da55b9050834bb63bfa264a6d2af60",
      "tree": "d71de994bad2da27695f001ffc74d486871084fc",
      "parents": [
        "0ff8dabf2c258389ee6a633b4c7f99477b63071a"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Fri Jan 05 16:03:50 2018 -0500"
      },
      "committer": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Fri Jan 05 16:04:33 2018 -0500"
      },
      "message": "Allow \u003cadopt-permissions\u003e tag in manifest\n\nChange-Id: Ib595ab84da3a68e6a72f203ee51e3c86c7a3a3d1\nFixes: 71640901\nTest: migrate GoogleServicesFramework to AAPT2, build\n"
    },
    {
      "commit": "e058f1a95245e90cd6f12d7558a39b8af8d61053",
      "tree": "89d8e5838457f1e0cfa81d3ee6eb12a8a4a8096e",
      "parents": [
        "9c777b22da556b776a098c0735d8881734e15865",
        "0f2599fbf0ba8128b2a2c4de4d40aa37ea6c3d10"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Thu Jan 04 21:09:39 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 04 21:09:39 2018 +0000"
      },
      "message": "Merge \"Dump Proto to a csv\""
    },
    {
      "commit": "0f2599fbf0ba8128b2a2c4de4d40aa37ea6c3d10",
      "tree": "f35fb77b864e463f76bd31e17c2b8c576265377e",
      "parents": [
        "48989c2744dcaaba4d4a23d9ca19b41c88c483bf"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Thu Nov 16 18:19:45 2017 -0800"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Thu Jan 04 11:03:31 2018 -0800"
      },
      "message": "Dump Proto to a csv\n\nBug: 69427323\nTest: N/A\nChange-Id: I1b89898afc30d5a0df6355ee1f6477df8d271f98\n"
    },
    {
      "commit": "e9727164cbfb0d5d36cecb00841f04728cfc18da",
      "tree": "8a96cd7dabd361e87d1330833020a5c7e579f733",
      "parents": [
        "478b6caa48ee001aa9273e36efe1b754dca87d7e",
        "52d401119589b7fd43b5d417329e8bd48d2802db"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jan 04 01:17:42 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jan 04 01:17:42 2018 +0000"
      },
      "message": "Merge changes I9de0ffe9,Idc804896 am: 153fb1c6e0 am: 99161bc1c7\nam: 52d4011195\n\nChange-Id: Ia3b7f49d4dbd38660570c7c84991a69f86bf24e4\n"
    },
    {
      "commit": "52d401119589b7fd43b5d417329e8bd48d2802db",
      "tree": "8ab5fd560a9f29ca293a2b1b345e0986d85910cb",
      "parents": [
        "2bac68a6357e01cebd68d4287c64e93a84edb53a",
        "99161bc1c7176cba709430dea74bf35097e052d1"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jan 04 01:10:47 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jan 04 01:10:47 2018 +0000"
      },
      "message": "Merge changes I9de0ffe9,Idc804896 am: 153fb1c6e0\nam: 99161bc1c7\n\nChange-Id: Id831c5ab771fa59ac9906d473ffeb7720fbbdf54\n"
    },
    {
      "commit": "6dbd3d7a59748c301cad50685e3940fbcdf37f61",
      "tree": "34e9ef32dfadd8b649605eb2ffe294ae6fce41ad",
      "parents": [
        "1c876b73b3ce305ce9d07f623837f0ee1af2df06"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Wed Dec 27 14:10:54 2017 -0800"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Wed Jan 03 11:41:12 2018 -0800"
      },
      "message": "Add virtual dtor for virtual classes\n\ndelete called on non-final virtual classes but non-virtual destructor.\n\nFixes -Wdelete-non-virtual-dtor warning.\n\nTest: m checkbuild\nChange-Id: I142a2f70286a28722e462df4c160cb7aa3753c2a\n"
    },
    {
      "commit": "2087716f2bdca90c7c3034d556ac12911bd8018e",
      "tree": "448895d8ce6f40644aa184b15fe024385d26d3c1",
      "parents": [
        "28bc987f61400b2862174149486e9f032c386a5f"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Fri Dec 22 17:19:39 2017 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Mon Jan 01 10:01:36 2018 -0800"
      },
      "message": "1/ Support nested message and repeated fields in statsd.\n2/ Filter gauge fields by FieldMatcher.\n3/ Wire up wakelock attribution chain.\n4/ e2e test: wakelock duration metric with aggregated predicate dimensions.\n5/ e2e test: count metric with multiple metric condition links for 2 predicates and 1 non-sliced predicate.\n\nTest: statsd unit test passed.\n\nChange-Id: I89db31cb068184a54e0a892fad710966d3127bc9\n"
    },
    {
      "commit": "fca5e427e21f69e42a732600474bb97bf1f0eb7d",
      "tree": "51f368a6938bce83e1e68c860457ec9505c40c00",
      "parents": [
        "e6aa6d14212eee2261bec5b226bf673fd8985845"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Dec 20 15:03:36 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Dec 28 08:17:51 2017 -0800"
      },
      "message": "AAPT2: \u003cuses-library /\u003e and \u003clibrary /\u003e don\u0027t need to be Java packages\n\n- Also fixes issue where a failure checking the Java package of an attribute\nwould yield no error message.\n\nBug: 70722199\nTest: make aapt2_tests\nChange-Id: I417d5ffe18c8d4ba2f1638f9fb9ba29278ec8e94\n"
    },
    {
      "commit": "e6aa6d14212eee2261bec5b226bf673fd8985845",
      "tree": "0b13f8dc86d06837617ed57d32d5640ec6c654de",
      "parents": [
        "f3630cbe8ab567772e7722d7e8172a9da679dbf5"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Dec 20 14:01:14 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Dec 28 08:17:43 2017 -0800"
      },
      "message": "AAPT2: Keep file enumeration consistent across platforms\n\nFilesystem directory enumeration is platform dependent, so\nsort the files lexicographically according to source path before\nconsuming them in the compile command.\n\nBug: 70680618\nTest: manual\nChange-Id: I6706dea2eb40cbaff8a586994dd1013976e4ced4\n"
    },
    {
      "commit": "d14c826c82659aaad427e1e609d7b957cdb3edf6",
      "tree": "212ba1197efb782bed4a5d3f066b3890f14a125d",
      "parents": [
        "1f661c303a2e69c9ef1e20a505bba63e3a78192a",
        "78c43d7bee2a476d6edffe0a4368eb6fcef38c31"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 20 18:05:53 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 20 18:05:53 2017 +0000"
      },
      "message": "Merge changes I0face862,If2d091e5,I4e18e63f\n\n* changes:\n  AAPT2: Sort artifacts based on the Play Store rules.\n  AAPT2: Allow empty group definitions\n  AAPT2: Get list of multi-APK artifacts without APK file\n"
    },
    {
      "commit": "54839e0d30ba09607ae15a9d9730012eadb4517a",
      "tree": "3055483ac8584a40cfd2fee98775fe3a27419e4a",
      "parents": [
        "e3a65edb25325f6f3595f58f0c4326441d24bec6",
        "c81d9f36ec2372b0a9424186f5fee5b189769d4a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 20 15:27:19 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 20 15:27:19 2017 +0000"
      },
      "message": "Merge \"AAPT2: Add flag to compile command for outputting symbols\""
    },
    {
      "commit": "ad9e1324ff2c459d0ee6ee571d4a3e458c02cc81",
      "tree": "52c46ddcc0902f3495cdfeb626b9e697fdb9456f",
      "parents": [
        "8226fd9e7d9bbf2b9d3f2293e788628ef229b136"
      ],
      "author": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Tue Dec 19 16:22:42 2017 +0000"
      },
      "committer": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Wed Dec 20 13:25:59 2017 +0000"
      },
      "message": "AAPT2: treat manifest validation errors as warnings when asked\n\nBug: 65670329\nTest: updated\nChange-Id: Ic554cc20134fce66aa9ddf8d16ddffe0131c50e9\n"
    },
    {
      "commit": "c81d9f36ec2372b0a9424186f5fee5b189769d4a",
      "tree": "2e018e81365882200ab7ace6783c5651e11ad7bb",
      "parents": [
        "8226fd9e7d9bbf2b9d3f2293e788628ef229b136"
      ],
      "author": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Tue Dec 05 12:07:28 2017 +0000"
      },
      "committer": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Wed Dec 20 12:04:23 2017 +0000"
      },
      "message": "AAPT2: Add flag to compile command for outputting symbols\n\nOnly XML files can define resources inside of them, so the fragment\nR.txt will only be created for XML files. The fragment R.txt will\ncontain files defined inside the XML files and the file itself.\nFor example for res/layout/my_layout.xml that defines \"@+id/myView\" the\nfragment R.txt will contain \"default int id myView\" and \"default int\nlayout my_layout\".\nResources defined with the \"public\" keyword will have the word \"public\"\nin the partial R.txt, resources defined with the \"java-symbol\" keyword\nwill have the word \"private, and all other resources will have the word\n\"default\".\nIf a string is declared in values/strings.xml as:\n\u0027\u003cstring name\u003d\"foo\"\u003etext\u003c/string\u003e\u0027\nthen the partial R.txt will contain \"default int string foo\". If the\nsame string is also marked as public in the values/public.xml as:\n\u0027\u003cpublic type\u003d\"string\" name\u003d\"foo\" id\u003d\"0x7f000001\"/\u003e\nthen the partial R.txt for that file will cointain:\n\"public int string foo\".\nAlso, the resource IDs will be skipped as this is only for compilation,\nproper IDs will be generated at linking phase.\n\nTest: manual\nChange-Id: I37d07d5ee4a9f2e5a60a54e48579eba86ae7dd60\n"
    },
    {
      "commit": "5c693f2b8299c78e24d9f92b9691a861db041d45",
      "tree": "fa3a914413608d9686736f760b00f4871969888f",
      "parents": [
        "f7314652ed15cac317f7ddc8ddb034f77600e666",
        "71be70507de9cb619b644e55eda1cc181e3f7e90"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Dec 19 22:42:53 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 19 22:42:53 2017 +0000"
      },
      "message": "Merge \"AAPT2: Propagate SPEC_OVERLAYABLE flag to final APK\""
    },
    {
      "commit": "78c43d7bee2a476d6edffe0a4368eb6fcef38c31",
      "tree": "6d039a14cd325c041d404e2058bed7d2a201c216",
      "parents": [
        "39e474f4b4a975d8befa1e8f4cbedab5f47a43fa"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Mon Dec 04 09:08:38 2017 -0800"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Tue Dec 19 13:52:30 2017 -0800"
      },
      "message": "AAPT2: Sort artifacts based on the Play Store rules.\n\nSort output artifacts so that the updated versionCode manifest entry\nwill allow correct handling of updates from Play Store. The most\nimportant dimension is Android SDK version. It is important that a split\nbased on min SDK version will allow a user to get a new APK if they\nupgrade the OS on their device to support a new split.\n\nABI splits need to also be taken into consideration as it is possible\nfor a device to run in ARM emulation mode and installing an ARM APK over\na x86 APK could cause performance regressions.\n\nThe XML file format was updated to give each of the configuration groups\nhave their own section of the XML file. This allows the sort order to be\ndetermined by a groups ordering. Artifacts can now be added to the\nconfiguration file in an arbitrary order. Since this will be the common\ncase for developers, it will help reduce errors from inserting a new\nartifact in the wrong spot.\n\nThe implementation follows the rules outlined at:\nhttps://developer.android.com/google/play/publishing/multiple-apks.html\n\nTest: Unit tests\nTest: Manual process XML configuration\n\nChange-Id: I0face862c6d6b9d3cd2d99088afe5b9491be0120\n"
    },
    {
      "commit": "39e474f4b4a975d8befa1e8f4cbedab5f47a43fa",
      "tree": "91cc16995c35d13b76fb471ea7631b49a800dc0c",
      "parents": [
        "2c12241fa8edaa4ae8bd01f50980ae647c41b45c"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Mon Dec 18 14:44:11 2017 -0800"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Tue Dec 19 13:52:30 2017 -0800"
      },
      "message": "AAPT2: Allow empty group definitions\n\nWith ABI, screen density, and locale, it is possible to use a shorthand\nnotation when the group only has a single entry. The shorthand is to\nleave the group empty and use a valid configuration for the group name.\n\nTest: manually ran optimize command\nTest: unit tests\n\nChange-Id: If2d091e587474847c6c9e9be1a29196b261cc82d\n"
    },
    {
      "commit": "2c12241fa8edaa4ae8bd01f50980ae647c41b45c",
      "tree": "08795297f9d406d6f75bce5f54cddd17d5c0851c",
      "parents": [
        "f7314652ed15cac317f7ddc8ddb034f77600e666"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Fri Dec 15 16:55:54 2017 -0800"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Tue Dec 19 13:52:30 2017 -0800"
      },
      "message": "AAPT2: Get list of multi-APK artifacts without APK file\n\nAllow the optimize command to produce a list of output artifact names\nwithout needing to read the input APK from disk. This not only saves\ndisk reads for a file that will not be used, it also allows the list\nof outputs to be generated without having an APK file yet.\n\nTest: unit tests\nTest: split an APK\nTest: print list of outputs without an APK\nChange-Id: I4e18e63f298a07f26ab0de2b2f0acb769bb535ba\n"
    },
    {
      "commit": "107f7cc4c4adfc01402dc5a52dc39976b75abbe2",
      "tree": "39c1ac19cceba81e9f7ac0424c10a1e0196dd183",
      "parents": [
        "e2527f82c8efa592fc5cda62ca00fb6b83aabc7a",
        "f68e747e05628c0d2544080aa7c8cc8e68eeae29"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 19 19:07:53 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 19 19:07:53 2017 +0000"
      },
      "message": "Merge \"Remove stream.proto and cpp-streaming-proto generates field name to id mapping by default\""
    },
    {
      "commit": "f68e747e05628c0d2544080aa7c8cc8e68eeae29",
      "tree": "10917fec1af65c090458259ca6bc93ffb40b5542",
      "parents": [
        "39b4499d943d2a078b7c7ca2936908d7aac719d1"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Mon Dec 18 15:55:19 2017 -0800"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Mon Dec 18 17:37:50 2017 -0800"
      },
      "message": "Remove stream.proto and cpp-streaming-proto generates field name to id\nmapping by default\n\nTest: atest incident_helper_test\nChange-Id: Iab04973ea78b942e44503fcd6ae60808caf3b9e0\n"
    },
    {
      "commit": "71be70507de9cb619b644e55eda1cc181e3f7e90",
      "tree": "1ad3c588be3dd06b39b1ba5c3229f80ca08d62bd",
      "parents": [
        "6bb6fad16d93a5859d47dcf962337c2719e585dd"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Dec 12 16:48:07 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Dec 18 14:16:02 2017 -0800"
      },
      "message": "AAPT2: Propagate SPEC_OVERLAYABLE flag to final APK\n\nResources can be marked as overlayable, which means they can\nbe overlaid by runtime resource overlays.\n\nThis change propagates this state to the final resource table that\nis installed on device.\n\nFuture work:\n- Have the idmap tool respect the overlayable state and ignore\n  entries that overlay anything else.\n\nBug: 64980941\nTest: make aapt2_tests\nChange-Id: Id45b1e141a281be2ee32a4ac3096fcf1114d523b\n"
    },
    {
      "commit": "149008d892ce76e83f6d95db09cdbb787293337b",
      "tree": "e15d2f7ae4f167f8ec2b24c5c2d8b000362aa23b",
      "parents": [
        "4e54d6092bbcb2ac7ff895a7955acdd1e26e838c"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Dec 15 11:07:53 2017 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sat Dec 16 20:43:50 2017 -0800"
      },
      "message": "Initial sdkparcelables\n\nAdds a tool that can convert an SDK stubs jar into a framework.aidl\nfile by parsing the jar with ASM to find classes that implement\nandroid.os.Parcelable directly or indirectly.\n\nBug: 70046217\nTest: java -cp out/host/linux-x86/framework/sdk_parcelables_test.jar org.junit.runner.JUnitCore com.android.sdk_parcelables.ParcelableDetectorTest\nChange-Id: Idc804896b8860352633a85168748af1b08777205\n"
    },
    {
      "commit": "58a6cf6afe21d7e068ae736135634e15cb138b52",
      "tree": "fb5c7d748ce9626f25e009bce793cde9da5b70a2",
      "parents": [
        "f6c6ea262d8f041704746aade185e279f3b51fa0",
        "7604aeaf99b0ee14c1f9df95db0fc1d4e75b1baa"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Dec 16 04:15:11 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Dec 16 04:15:11 2017 +0000"
      },
      "message": "Merge \"Stats log api for attribution chain.\""
    },
    {
      "commit": "7604aeaf99b0ee14c1f9df95db0fc1d4e75b1baa",
      "tree": "aea4849d1b8ba16d2b470fa85749a2153f29e92c",
      "parents": [
        "8cf5b695cea4b197284097ec93912426c311438c"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Mon Dec 11 22:55:49 2017 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Fri Dec 15 16:53:29 2017 -0800"
      },
      "message": "Stats log api for attribution chain.\n\nTest: all unit test passed.\nChange-Id: I628d409e517f4f95c8da1d0c7fd4d514c1d9196d\n"
    },
    {
      "commit": "6831a2646f8d25eb8ce33653e4d3ac0020fecae9",
      "tree": "ab4b3dbfa5f82b2f76c2a67926cc32e18d4c07b9",
      "parents": [
        "73617b0cc04e82a79721a77b73daefe5a93c223f",
        "0a368b2c391dd3ebaf6b8917c16c41b65c1d5ab7"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Dec 16 00:03:53 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Dec 16 00:03:53 2017 +0000"
      },
      "message": "Merge \"Adds API for apps to push events to statsd.\""
    },
    {
      "commit": "0a368b2c391dd3ebaf6b8917c16c41b65c1d5ab7",
      "tree": "4ef577b9c57a137be83329a37037c0310c152650",
      "parents": [
        "b669be1dcca1fb131934fa6322de77f5e0c6eb7b"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Wed Dec 06 16:28:16 2017 -0800"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Thu Dec 14 16:19:29 2017 -0800"
      },
      "message": "Adds API for apps to push events to statsd.\n\nThis API allows app to construct custom metrics based on labels\nchosen by the app developers. Also added some buttons to manually\ntest this functionality in the dogfood app.\n\nTest: Verified that Android can be built and tested with custom app.\nBug: 69522276\nChange-Id: Ifb7abea4c1d62fb435a9cb6f32df12bc2234d82f\n"
    },
    {
      "commit": "e3b532ce0ec8259644982491cfa79b636e85f5fa",
      "tree": "b837bb6c0a0fb772d503b23b1df48ebb7976ed8f",
      "parents": [
        "06a601f355b85361b243ccef9083ec8ad2dd7333",
        "dc785052d0fb8a6651df25f42bf4254330445ce9"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Dec 14 22:27:02 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 14 22:27:02 2017 +0000"
      },
      "message": "Merge \"AAPT2: Enable mangled symbol lookup in AssetManagerSymbolTable\""
    },
    {
      "commit": "9bc6eaca2c8f1c60cb2b7abfa0afc880badd1f44",
      "tree": "a73c99fdb498c6527e3d95da7ef77d990a73bbdd",
      "parents": [
        "c933f1885ed1394706721275bc076075e2bc1418",
        "f77a07df1cc71d1f25454de1b5c7da301541b837"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Thu Dec 14 03:02:03 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 14 03:02:03 2017 +0000"
      },
      "message": "Merge \"Create a new stream option which generates field name to id mapping recursively for all its submessages.\""
    },
    {
      "commit": "cb6c3f9b880160c35785b1780b282fdf92952b90",
      "tree": "e3b4211cbcdf9fc23c2cc9134ebc5d2b17e9b50a",
      "parents": [
        "ff38f236b55b51a9f8e03b909f4791ccca329c48"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Mon Nov 27 13:19:36 2017 -0800"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Wed Dec 13 12:28:39 2017 -0800"
      },
      "message": "AAPT2: Push more configuration code into the parser\n\nWhen parsing is complete, we now have a list of output artifacts that\nhave their referential integrity validated. This means that once the\nconfiguration file is parsed, the only errors that can occur are related\nto APK processing, and not the configuration itself.\n\nThis reduces the number of errors that could cause a partial output of\nAPK artifacts. It simplifies the public API and reduces the complexity of\nthe code to generate multiple APKs.\n\nTest: Ran unit tests\nTest: manually ran the optimize command to ensure it still works\n\nChange-Id: I3f2d885b207a84c958f5348a4baa6718598184a4\n"
    },
    {
      "commit": "12f1b7f02d71fbf3b1773c275d42021c04ca1391",
      "tree": "40b9ce58f1ff062b50d91152d9364311a3341015",
      "parents": [
        "38480bd228b68cd28ba410135c5d00c7d4e86812",
        "3ff44436a10d512e25d072d51ea84bfb85d69365"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 13 05:32:41 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 13 05:32:41 2017 +0000"
      },
      "message": "Merge \"AAPT2: Remove signatures from multi-APK artifacts.\""
    },
    {
      "commit": "29086acac27cbfc97664065bfa12afc3d23cdfb5",
      "tree": "3ebe9ce544e7ac5291e9753c3f3cc990b6821d05",
      "parents": [
        "05e90071ecdcb1c1c0d1b2e6f3ae451195636035",
        "99ac3fdbd85ba61ba988481d410072a30440c774"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 13 03:06:54 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 13 03:06:54 2017 +0000"
      },
      "message": "Merge \"AAPT2: Remove unused command line option.\""
    },
    {
      "commit": "0688ef866818c5ff2d4ac98c3b0b873c90545225",
      "tree": "e9be2a4d756a802cf19a25d117609f3d4e9c61aa",
      "parents": [
        "061bc75d49b07e919d6187714a066bc8b838fe3c",
        "b8500d47714e964cb1a8fce1647aae1a33358cd1"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Dec 13 01:08:56 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Dec 13 01:08:56 2017 +0000"
      },
      "message": "Merge \"Convert services to Android.bp\" am: 5319777274\nam: b8500d4771\n\nChange-Id: Idcfeb088fa73e679d18de2ce2dc2ba58cdc78af7\n"
    },
    {
      "commit": "99ac3fdbd85ba61ba988481d410072a30440c774",
      "tree": "aacd9e195388c86eeec9d57692c94d0b67eb5975",
      "parents": [
        "d87c6b51f55985e343cf96f57b06e4adebf53d25"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Tue Dec 12 16:55:31 2017 -0800"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Tue Dec 12 16:55:31 2017 -0800"
      },
      "message": "AAPT2: Remove unused command line option.\n\n--target-abis is never used and the same functionality works with\nonfiguration files.\n\nTest: Unit tests\nChange-Id: Ic890eb0f15fade82cd85ba34d653d6cea3b79fb2\nBugs: b/70571736\n"
    },
    {
      "commit": "3ff44436a10d512e25d072d51ea84bfb85d69365",
      "tree": "93a0575c30f671ae9e30e99c63b06a4eda42cbe4",
      "parents": [
        "67e8a3074d7ef42734d44f3a8d87635e201bd660"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Fri Sep 29 11:59:25 2017 -0700"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Tue Dec 12 16:25:26 2017 -0800"
      },
      "message": "AAPT2: Remove signatures from multi-APK artifacts.\n\nRemove signer files (.SF and public key) as well as the original\nmanifest file from any output artifacts. Since the artifacts are not\nsigned, we want to remove the original signature and manifest. The APK\nsigner tool will add these back later.\n\nUpdated the context wrapper to enable verbose mode to be cleared. This\nlets us have more specific log messages when splitting an APK as at this\npoint the artifacts and filters are more interesting than the files removed.\n\nTest: Manually split an APK and verified the filles were removed while\n      leaving the other META-INF entries.\nTest: Unit tests\n\nChange-Id: Ia59993b5570f802130c6e3ba42398a00821061ea\n"
    },
    {
      "commit": "67e8a3074d7ef42734d44f3a8d87635e201bd660",
      "tree": "cd5931f49e35ec7943f166d05f8c5410ac0b1ef7",
      "parents": [
        "d87c6b51f55985e343cf96f57b06e4adebf53d25"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Wed Dec 06 14:39:10 2017 -0800"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Tue Dec 12 16:25:26 2017 -0800"
      },
      "message": "AAPT2: Add validation for SDK version strings.\n\nEnsure that the configured min max and target SDK versions of the\nandroid-sdk configuration item are correct. This will prevent AAPT2\ncrashing when it tries to dereference the Android SDK version to update\nthe manifest.\n\nThe test for the latest development SDK version has also been made\nfuture proof by using the SDK constants.\n\nTest: unit tests\nTest: manually split an APK\nChange-Id: I1ffa90ba2d96cab0cbfa4bd75ef37a50d986852d\n"
    },
    {
      "commit": "eb652a47a180092b397ec40c718dfc13935f7fb6",
      "tree": "9af0e5fbe2002dca0a1ec816b51b56bdcb81418a",
      "parents": [
        "f2ed7683daee70d4330306ded96d657ffc826b3e"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Dec 05 09:46:29 2017 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Dec 12 23:22:25 2017 +0000"
      },
      "message": "Convert services to Android.bp\n\nSee build/soong/README.md for more information.\n\nTest: m checkbuild\nChange-Id: I417409281c928ea667d937090d2a0d9d72a449a2\nMerged-In: I417409281c928ea667d937090d2a0d9d72a449a2\nExempt-From-Owner-Approval: trivial conversion\n(cherry-picked from commit e0b2ee52d2f274a2d46b2e6695e42d2764c39fa7)\n"
    },
    {
      "commit": "f77a07df1cc71d1f25454de1b5c7da301541b837",
      "tree": "c8d95c91cf7fe4c30b70eb494aec5c55cc72d54b",
      "parents": [
        "d04c00a47907452a76d31e7183e5cc37bdf4dbf3"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Tue Dec 12 12:53:51 2017 -0800"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Tue Dec 12 13:20:46 2017 -0800"
      },
      "message": "Create a new stream option which generates field name to id mapping\nrecursively for all its submessages.\n\nAlso fix the wrong prefix for ro.build.version.XXX in proto.\n\nIt is safe to adjust proto number for now since it is not used yet.\n\nBug: 68774852\nTest: atest incident_helper_test\nChange-Id: I46e43a407da6efc393eb3c39733aaf25a5cceb13\n"
    },
    {
      "commit": "b3b66ee66bf57e5de9b2236e379871188e0c716d",
      "tree": "f757ab002b68f97814c48aefbe56e59eb7a8c5f4",
      "parents": [
        "f2eaa3c7e44cab24e59e1a9f378a6352321f0090",
        "23a6e1e3901e1ef1e2bd5ebb2aff08b767d19c49"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 12 13:21:05 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 12 13:21:05 2017 +0000"
      },
      "message": "Merge \"AAPT2: allow to generate R.txt without R.java\""
    },
    {
      "commit": "f8d1840fae3ea73afbed59c77f8016dd785ab7e7",
      "tree": "bbc3a8454a968d72133cdb82c4790f21640a0b1f",
      "parents": [
        "7888d2f9eb414ed68c7ffe23ed576b8dd82696c3",
        "725fb12c0d271c179c4f3689ee56296253f3cb62"
      ],
      "author": {
        "name": "Tom Dobek",
        "email": "tdobek@google.com",
        "time": "Mon Dec 11 15:13:23 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 11 15:13:23 2017 +0000"
      },
      "message": "Merge \"Aapt2 convert: skip processing resources when resource table is absent. Test: manual\""
    },
    {
      "commit": "725fb12c0d271c179c4f3689ee56296253f3cb62",
      "tree": "a69b7e539b47cee4583e63cb970bd3e6c96d5915",
      "parents": [
        "3a1e51ab804d27ab8a486e17af7f3ea0e6d8fb43"
      ],
      "author": {
        "name": "Tom Dobek",
        "email": "tdobek@google.com",
        "time": "Fri Dec 08 14:19:01 2017 +0000"
      },
      "committer": {
        "name": "Tom Dobek",
        "email": "tdobek@google.com",
        "time": "Mon Dec 11 10:30:12 2017 +0000"
      },
      "message": "Aapt2 convert: skip processing resources when resource table is absent.\nTest: manual\n\nChange-Id: Iafe20f98857a29d625e7a57a9201db6279d43e45\n"
    },
    {
      "commit": "e0b2ee52d2f274a2d46b2e6695e42d2764c39fa7",
      "tree": "b108622b940a6d004b50b2768f6738fecbb4dfb8",
      "parents": [
        "23627fbff5f13629e997a00b006a1ebdc423e735"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Dec 05 09:46:29 2017 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Dec 08 21:00:15 2017 +0000"
      },
      "message": "Convert services to Android.bp\n\nSee build/soong/README.md for more information.\n\nTest: m checkbuild\nExempt-From-Owner-Approval: trivial conversion\nChange-Id: I417409281c928ea667d937090d2a0d9d72a449a2\n"
    },
    {
      "commit": "dc785052d0fb8a6651df25f42bf4254330445ce9",
      "tree": "df63f49030c9bd97f81de074da33ef943972eac6",
      "parents": [
        "1523386d85517ce655ff5c4ffb30c70c27bc3fc6"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Dec 07 15:58:46 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Dec 07 17:23:25 2017 -0800"
      },
      "message": "AAPT2: Enable mangled symbol lookup in AssetManagerSymbolTable\n\nBug: 70045583\nTest: make AaptTestNamespace_Split\nTest: make aapt2_tests\nChange-Id: I25da9d58736fc9090d1527782391c9b2220d2f8d\n"
    },
    {
      "commit": "ab1a6b31a7533450497f3f9a7847e6a1cd5226e1",
      "tree": "daa4afe51192cb37529f24b4917002a9fd12a2c9",
      "parents": [
        "b5f48b2392c4e702a985ad88425ede9bcbf67a8c",
        "548fdbda19d327e2285e43bf72c136938dbe6817"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Dec 06 17:08:46 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 06 17:08:46 2017 +0000"
      },
      "message": "Merge \"Use -Werror in frameworks/base/tools/streaming_proto\""
    },
    {
      "commit": "23a6e1e3901e1ef1e2bd5ebb2aff08b767d19c49",
      "tree": "90eea395d30e3717e0efc5c6cd98d24c44bb9f00",
      "parents": [
        "f5cf390e416e964b915b8dcf3339230c93756547"
      ],
      "author": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Tue Dec 05 14:52:07 2017 +0000"
      },
      "committer": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Tue Dec 05 20:59:08 2017 +0000"
      },
      "message": "AAPT2: allow to generate R.txt without R.java\n\nBug: 69956357\nTest: manual\nChange-Id: If2bc32bd4efb1ea17c6cba7a17f2b2300164ede0\n"
    },
    {
      "commit": "49639bf6cd56c8c20398efa707db5f7a97ad73ba",
      "tree": "855df2a4ce6693f1eb3108fe71edef554e704297",
      "parents": [
        "1beccb0fc230d9e2030ad951d483fb0026ea2d49",
        "666de34a58320ecf24b78fff836732d8278f3e98"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 05 20:36:47 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 05 20:36:47 2017 +0000"
      },
      "message": "Merge \"AAPT2: Allow output artifacts to be filtered.\""
    },
    {
      "commit": "666de34a58320ecf24b78fff836732d8278f3e98",
      "tree": "e977214900398a0c8dc325893a5dc2aa0cbc3790",
      "parents": [
        "4f7413ea39e52fba994d41007f3f02170f1edfb2"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Wed Nov 29 16:07:51 2017 -0800"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Tue Dec 05 10:52:48 2017 -0800"
      },
      "message": "AAPT2: Allow output artifacts to be filtered.\n\nA new optional flag has been added to allow a list of artifacts that\nshould be written as output to be provided. If the flag is provided,\nonly artifacts that have an output name matching an entry in the list\nwill be processed.\n\nTest: manually ran against an APK with multiple artifacts in the\nconfiguration and confirmed that only the specified artifacts were\nwritten.\nTest: Ran all unit tests.\n\nChange-Id: Ia32b19acf1b2ef3711abf13df08dc7b1aa0cf161\n"
    },
    {
      "commit": "548fdbda19d327e2285e43bf72c136938dbe6817",
      "tree": "8aa413e11c7b49f026eea076ed7acdd11991dc9a",
      "parents": [
        "af807e02d07a3ee68f873830c5931f414d8df5a7"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 05 10:11:02 2017 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 05 10:18:23 2017 -0800"
      },
      "message": "Use -Werror in frameworks/base/tools/streaming_proto\n\n* Remove unused constants.\n\nBug: 66996870\nTest: build with WITH_TIDY\u003d1\nChange-Id: I43940e8c446bab25b8fa841ec8c17885ab5d88ed\n"
    },
    {
      "commit": "bedb3fcf1d2092cfd40c60e41a87b3e00c45b1fc",
      "tree": "d88a6fcbd14fc5348ff66b8ae3760e5a5f72567f",
      "parents": [
        "4ab869e1e6f2eb472d34ae18a185ca52ddd98be1"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Dec 05 09:42:28 2017 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Dec 05 09:42:31 2017 -0700"
      },
      "message": "Executors instead of Handlers; collections.\n\nNew API council guidance is to have developers provide an Executor\ninstead of a Handler for specifying where a callback should be\ndispatched.\n\nRecommend that raw arrays be switched to Collections\u003c\u003e instead.\n\nDisable overload checking, since it\u0027s far too noisy.\n\nTest: sanity-checked linter output\nBug: 37893784, 34192159\nChange-Id: Ifc9a69bfed1a1004c6604e12987a606d1d3fd6af\n"
    },
    {
      "commit": "4ab869e1e6f2eb472d34ae18a185ca52ddd98be1",
      "tree": "852085acfc20dcfabb6a20b575a23eb47f09caa4",
      "parents": [
        "b4de0609711eecc09bcbeed8b3cfd1186f86dff8",
        "11be9317efffafcac52cd2dc5cce1d951c966dd1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 05 16:03:26 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 05 16:03:26 2017 +0000"
      },
      "message": "Merge changes I2eef812b,I7b607192\n\n* changes:\n  AAPT v1 embed compile SDK version and codename into app\n  AAPT2: Embed version of framework an app was compiled against.\n"
    },
    {
      "commit": "5e50588e49189b9da31e82fabe33c49beeb1a7f7",
      "tree": "4ebac224f5c9aca652a263cf5cd3901d83e537a0",
      "parents": [
        "e888a8c60628e1a4dda813d97fffd45a277764d6",
        "b0643302c78d00db3036707a0df0ae5ce923ae15"
      ],
      "author": {
        "name": "Luke Nicholson",
        "email": "lukenicholson@google.com",
        "time": "Tue Dec 05 05:20:00 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 05 05:20:00 2017 +0000"
      },
      "message": "Merge \"Enable obfuscation of resource names, with whitelisting support.\""
    },
    {
      "commit": "b0643302c78d00db3036707a0df0ae5ce923ae15",
      "tree": "a77389c644eff8b5ef167c8e88f831a65a73e739",
      "parents": [
        "dcc0da281b4a7e250a732da524f90cbb954516eb"
      ],
      "author": {
        "name": "Luke Nicholson",
        "email": "lukenicholson@google.com",
        "time": "Fri Dec 01 15:29:03 2017 -0800"
      },
      "committer": {
        "name": "Luke Nicholson",
        "email": "lukenicholson@google.com",
        "time": "Mon Dec 04 17:54:05 2017 -0800"
      },
      "message": "Enable obfuscation of resource names, with whitelisting support.\n\nTest: Built aapt2, ran optimize on gmail apk with sample whitelist\nconfig file, and flags enabled. Added two unit tests to TableFlattener\ncovering obfuscation logic.\n\nChange-Id: Iad6329d75ff440121bf1a2cdf09c5f4bf4199d9d\n"
    },
    {
      "commit": "11be9317efffafcac52cd2dc5cce1d951c966dd1",
      "tree": "dda14779d25fc5e71e760c29b3c9dd3723c4143a",
      "parents": [
        "c6284379a5dde6bc5927409eff292db2f0add578"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Thu Nov 09 15:41:44 2017 -0500"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Dec 04 17:37:28 2017 -0800"
      },
      "message": "AAPT v1 embed compile SDK version and codename into app\n\nAlso adds support for dumping compile SDK attributes.\n\nBug: 63388434\nFixes: 68854953\nTest: manual, compiled \u0026 dumped ApiDemos APK\nChange-Id: I2eef812bd957950cdef5f1257b73b57044a1e731\n"
    },
    {
      "commit": "c6284379a5dde6bc5927409eff292db2f0add578",
      "tree": "be8da8977f7e1ae3339b9e6fd4dd4d60e80a19c1",
      "parents": [
        "36f46a87317be9c568649c423011b37e18698013"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Dec 04 13:46:23 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Dec 04 17:19:44 2017 -0800"
      },
      "message": "AAPT2: Embed version of framework an app was compiled against.\n\nThis change injects the \u0027android:compileSdkVersion\u0027 and\n\u0027android:compileSdkVersionCodename\u0027 into an app\u0027s AndroidManifest.xml,\nwhose values are dervied from the version name and version code of the\nframework AndroidManifest.xml that is being linked against.\n\nBug: 63388434\nTest: make aapt2_tests\nChange-Id: I7b607192ecb337307c4bcb5770e7f716c6d4c9d2\n"
    },
    {
      "commit": "427540609f8c276757551e2acdabbd01fb666526",
      "tree": "d09715446eefeaf224739dabecdef70364f613f7",
      "parents": [
        "382a2fd04b486bbf582f9ca2120baa1d4db4279f",
        "2427dce8205607a107880e13b4cdf1caa07cc425"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Dec 02 10:05:31 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Dec 02 10:05:31 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fix issue where exported symbols (@+id/*) were not exported\""
    },
    {
      "commit": "68ac35cdf6bac74e48cc8a6fad223c944ff463ac",
      "tree": "09ed189197bb741694b2f1a297ca7cf88cc3b00d",
      "parents": [
        "ace4014402bf6bbaf900b425da61e2b87677de60",
        "bdf58942c86240070bacc25203177cf47f6a1577"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 01 23:51:32 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 01 23:51:32 2017 +0000"
      },
      "message": "Merge \"1. Implement Privacy Policy Tag Inheritance 2. Expose Dest values in IIncidentReportArgs.h\""
    },
    {
      "commit": "86edf366252973ddd27e82f6e6b6bccf82ff90f6",
      "tree": "0786cb0e9d994618d95b422bd5e90025a4af2ada",
      "parents": [
        "4f7413ea39e52fba994d41007f3f02170f1edfb2",
        "f267a40400259483305a431250a4bd49e7312cb7"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Fri Dec 01 21:53:37 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 01 21:53:37 2017 +0000"
      },
      "message": "Merge \"AAPT2: Use manifest parsing to determine format of APK.\""
    },
    {
      "commit": "bdf58942c86240070bacc25203177cf47f6a1577",
      "tree": "08b0670d26381d0e897ba73582e0f8dd2958989d",
      "parents": [
        "316b8775ba5d5323025fca143539b2d792a528a6"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Tue Nov 14 17:58:19 2017 -0800"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Fri Dec 01 13:37:13 2017 -0800"
      },
      "message": "1. Implement Privacy Policy Tag Inheritance\n2. Expose Dest values in IIncidentReportArgs.h\n\nPlease see bug for detail descriptions.\n\nBug: 67869340\nTest: unit tested and on-device test. Ran command:\n$ out/host/linux-x86/bin/incident-section-gen incidentd\nto test various of privacy taggings.\nChange-Id: I12af3d7da4c7c72bd63598893fe2c1f70b09baa4\n"
    },
    {
      "commit": "f267a40400259483305a431250a4bd49e7312cb7",
      "tree": "50a66bca3644a31f6255ae3ecad041d42d9dafc3",
      "parents": [
        "031a2f1aafbc4e39ab5601567862d498e8949538"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Fri Dec 01 11:39:01 2017 +0000"
      },
      "committer": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Fri Dec 01 11:48:03 2017 +0000"
      },
      "message": "AAPT2: Use manifest parsing to determine format of APK.\n\nThis makes it possible to load APKs that don\u0027t have a resource table.\n\nBug: 69355482\nTest: Manual\nChange-Id: I8471dbe068e836b4beea9e6934d18dd16b70ef02\n"
    },
    {
      "commit": "2427dce8205607a107880e13b4cdf1caa07cc425",
      "tree": "4af999babef20cea944679544cc00fb25807eb4d",
      "parents": [
        "b4f84afccd933999fc3e507188ce04aecc2a28fe"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 30 15:10:28 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 30 16:12:29 2017 -0800"
      },
      "message": "AAPT2: Fix issue where exported symbols (@+id/*) were not exported\n\nTest: make AaptTestAppOne\nChange-Id: If3218c880e83c2cfaf535a099db38504471be676\n"
    },
    {
      "commit": "1da6e70b7eb8b72908131534a15877dea3db3f42",
      "tree": "82d8a3b3b13839b01cf05484285de8c03bf00301",
      "parents": [
        "d583858adc586aee445cf9885b17f9c6b3aa64f6",
        "e2a0c1d062527cb06aa53e3f8e7274d77f3abe02"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Thu Nov 30 23:51:04 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Nov 30 23:51:04 2017 +0000"
      },
      "message": "Merge \"Fix warning from clang+mingw\" am: 7fce15dc5e am: 31bcd7acea\nam: e2a0c1d062\n\nChange-Id: I9212bf71035641d5efedf8f06627a62e9694806c\n"
    },
    {
      "commit": "e2a0c1d062527cb06aa53e3f8e7274d77f3abe02",
      "tree": "3a4284c3bdb2ae57e74c11e92bc0520405e00318",
      "parents": [
        "54a7cba93448ba2f8f809d8883706a1b390be2aa",
        "31bcd7acea8aa81d1364f04bb259c9f37418a63a"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Thu Nov 30 23:26:44 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Nov 30 23:26:44 2017 +0000"
      },
      "message": "Merge \"Fix warning from clang+mingw\" am: 7fce15dc5e\nam: 31bcd7acea\n\nChange-Id: Ibb5c891fe3c219d75be8c124c9be215a31b2a241\n"
    },
    {
      "commit": "31bcd7acea8aa81d1364f04bb259c9f37418a63a",
      "tree": "8aab869221efd58c3f5787d9112089709f229ca0",
      "parents": [
        "4f9f278341edff643540d0da5c6dd53ae92ee23c",
        "7fce15dc5e190859ceef8e6a46f3cd4133eb9c7d"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Thu Nov 30 23:18:38 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Nov 30 23:18:38 2017 +0000"
      },
      "message": "Merge \"Fix warning from clang+mingw\"\nam: 7fce15dc5e\n\nChange-Id: I1b318913c3ead77369bdb62c10e5e08803cb10b8\n"
    },
    {
      "commit": "621ef3fa1c09c306508ab688881ca0d694351c65",
      "tree": "05053477d4038f2eaa5d2a9ee55d3a38eb6177c6",
      "parents": [
        "f01dd5e6261b032fb0728fafc595e6c8dff0610f",
        "20ac034086b641dbd93df3e4c63b2600cc3aa260"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 30 21:01:00 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 30 21:01:00 2017 +0000"
      },
      "message": "Merge \"AAPT2: Specify the output APK in log messages\""
    },
    {
      "commit": "20ac034086b641dbd93df3e4c63b2600cc3aa260",
      "tree": "71cfee08f4aededea6c816522dd271f718cf0bdb",
      "parents": [
        "41499dfe188cbd038005b8a07cc31ce2bca8cf5e"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Wed Nov 29 16:55:05 2017 -0800"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Thu Nov 30 10:24:18 2017 -0800"
      },
      "message": "AAPT2: Specify the output APK in log messages\n\nExtend the context wrapper to allow it to also know the current artifact\nthat is being generated and to use that as a source for diagnostics\nmessages.\n\nTest: ran unit tests\nTest: manually ran optimize to split and APK and verified log messages\n\nChange-Id: I1d66dacb38db58d57d2fffaa19f5fdaff9f908df\n"
    },
    {
      "commit": "fb4ed78bde052502861c913e1853f888ea297d2a",
      "tree": "f544fdfea82abf64851266041247a5d53550ad6f",
      "parents": [
        "06e314f6cc0d629f59579f8bd549915580f79b4b"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Nov 29 18:17:08 2017 -0800"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Nov 29 18:17:08 2017 -0800"
      },
      "message": "Fix warning from clang+mingw\n\nI suspect this is showing up in this configuration because we\u0027re now building\nwith -std\u003dgnu++14, but still using libstdc++.\n\nframeworks/base/tools/aapt2/link/ProductFilter_test.cpp:76:24: error: chosen constructor is explicit in copy-initialization\n  ProductFilter filter({});\n                       ^~\nprebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8/x86_64-w64-mingw32/include/c++/4.8.3/bits/unordered_set.h:132:7: note: explicit constructor declared here\n      unordered_set(size_type __n \u003d 10,\n      ^\nframeworks/base/tools/aapt2/link/Linkers.h:114:58: note: passing argument to parameter \u0027products\u0027 here\n  explicit ProductFilter(std::unordered_set\u003cstd::string\u003e products) : products_(products) {\n                                                         ^\n\nBug: 69933068\nTest: mmma frameworks/base/tools/aapt2\nTest: out/host/linux-x86/nativetest[64]/aapt2_tests/aapt2_tests\nChange-Id: I2133e364dd11f64fd13239125f8a3eff70ebb69c\n"
    },
    {
      "commit": "23034b911c60d4a24ca036436b3a3c138d904255",
      "tree": "fccd1980dfd69073cdb5da6ca65cc8ce23d9c272",
      "parents": [
        "bd03daf5a44818d9fb7e51ebf532c53b9e2e0697"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Nov 29 16:27:44 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Nov 29 16:29:08 2017 -0800"
      },
      "message": "AAPT2: Fix overzealous AndroidManifest fully qualified class names\n\nManifestFixer would go and fully qualify all elements with the attribute\n\u0027android:name\u0027, which is not correct, especially for cases like\n\n  \u003cuses-split android:name\u003d\"foo\" /\u003e\n\nTest: make aapt2_tests\nChange-Id: I4bea2550d0025179d2d48dca8c64e0cbf4451e99\n"
    }
  ],
  "next": "dcfe47bac2ced204fd2d0d4209012017971af1eb"
}
