)]}'
{
  "log": [
    {
      "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": "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": "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"
    },
    {
      "commit": "dcfe47bac2ced204fd2d0d4209012017971af1eb",
      "tree": "778f7d26defee98864206e652bc17ed8d4007fdb",
      "parents": [
        "70164985f534f667df19e7b789534a1a9d9d1138",
        "70fdf76c52224217179529be868c47b3194f1551"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Mon Nov 27 23:04:33 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 27 23:04:33 2017 +0000"
      },
      "message": "Merge \"AAPT2 - Make raw files of type unknown.\""
    },
    {
      "commit": "70fdf76c52224217179529be868c47b3194f1551",
      "tree": "9ca3710214c5e292136989e0332681a293b1cc46",
      "parents": [
        "15176cd986b0970c636036f60e97d5be53f3ce91"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Mon Nov 27 19:29:42 2017 +0000"
      },
      "committer": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Mon Nov 27 19:33:47 2017 +0000"
      },
      "message": "AAPT2 - Make raw files of type unknown.\n\nBug: 69791607\nTest: Manual.\n\nChange-Id: I6ee5ef37fb447ab79d46b57e0dc4eaad84eec723\n"
    },
    {
      "commit": "b356151e63140085cb96fa16804ee18b3862a4fc",
      "tree": "ecb892f399742cc0d7190b7700379b1a120bcb1e",
      "parents": [
        "16fd2e9a9a0a064491196d02957c7e94eaa870a7"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Tue Nov 21 18:07:17 2017 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Mon Nov 27 10:52:54 2017 -0800"
      },
      "message": "Add StatsdStats and guardrail.\n\n+ StatsdStats is the global class that tracks the stats about statsd.\n\n+ Added guardrail for classes that have a map which could potentially grow\n  unboundedly with the number of logs.\n\nTODO: add unit tests \u0026 CTS for StatsdStats, and guardrail\n      add stats for pulled atoms.\n\nTest: statsd_test\n\nChange-Id: I0ea562de4dd3f6162f7923a9c193420b482c1d51\n"
    },
    {
      "commit": "81d33e9b6ed158d979951f56daf9fd46742be7fd",
      "tree": "5162296b4cfe69d7bc21632c5c5d1752d525d3c4",
      "parents": [
        "e19dc30bd3046b62f1b6c3d9062066eecbfdded9",
        "f85eec8403226be8cb7584b95ea185616d2e017b"
      ],
      "author": {
        "name": "Adam Koski",
        "email": "adamkoski@google.com",
        "time": "Wed Nov 22 13:21:25 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 22 13:21:25 2017 +0000"
      },
      "message": "Merge \"Fix conditional keep rules for new semantics\""
    },
    {
      "commit": "8cfd3d03de5d96797d00b0a4dbdce46be6d8dde1",
      "tree": "faf906385067db5b40f6f4ec4b0e24a48b0964f6",
      "parents": [
        "f1f708f186cd8383f7cdd90ca6c277611245c1cb",
        "99a7b60e51748e77657eb62aba58605062b06260"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 21 01:40:34 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 21 01:40:34 2017 +0000"
      },
      "message": "Merge \"Use serif fonts for serif fallback.\""
    },
    {
      "commit": "f85eec8403226be8cb7584b95ea185616d2e017b",
      "tree": "7bdb41112e8a2d97dd9f1e64e690385dcf823e6a",
      "parents": [
        "de3766e95d880ea6c9f3e9280a8ac921effe47a8"
      ],
      "author": {
        "name": "Adam Koski",
        "email": "adamkoski@google.com",
        "time": "Wed Nov 15 12:48:49 2017 -0800"
      },
      "committer": {
        "name": "Adam Koski",
        "email": "adamkoski@google.com",
        "time": "Mon Nov 20 14:54:28 2017 -0800"
      },
      "message": "Fix conditional keep rules for new semantics\n\nNew conditional syntax is a logical AND, not OR. This means if a\nresource should be conditionally kept by multiple ids, we need to\ngenerate a separate rule for each condition (which will be interpreted\nas OR).\n\nTest: unit tests\nBug: 69341430\nChange-Id: I0786c65561d36fbf43d181a2dfd0c7eaf1d96b8c\n"
    },
    {
      "commit": "99a7b60e51748e77657eb62aba58605062b06260",
      "tree": "a223ab2309021295abd18335ff6fc4ef9a575cd5",
      "parents": [
        "28306600e6769ce708897d2a2c6b852228e2a9de"
      ],
      "author": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Wed Jul 05 16:06:23 2017 -0700"
      },
      "committer": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Mon Nov 20 14:46:31 2017 -0800"
      },
      "message": "Use serif fonts for serif fallback.\n\nBug: 31491668\nTest: m -j1024 fontchain_lint\nChange-Id: Ic1d356aa684f2284b0b0fc8de5d0e36380eb44bc\n"
    },
    {
      "commit": "c6c6c349f94638c81b0a3c2fc99b37266f6633ae",
      "tree": "7b1d676c79cabd758125edfe99788662293b694e",
      "parents": [
        "43699661dd43337939b6c682659b7e5beb0d6709"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Nov 13 09:13:37 2017 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Nov 20 13:48:45 2017 -0700"
      },
      "message": "Collect set of \"changed\" classes.\n\nGenerate hash of each class to quickly identify which classes have\nbeen touched between two API files.\n\nTest: manually verified\nBug: 69115817\nChange-Id: I0be92ec8a4e9ef6ca603e70c8164e10a2eaf4161\n"
    },
    {
      "commit": "f84b4204c3109e7f9feabe2536247193301a698d",
      "tree": "bc7a86b87837e85a61094f367c04b236272eef63",
      "parents": [
        "06b73ece42cb6775224763763a1322ac0c68a4fa",
        "e7b0a330db58c21366390c39896a4d1ca306495e"
      ],
      "author": {
        "name": "Donald Chai",
        "email": "dchai@google.com",
        "time": "Sat Nov 18 03:19:30 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Nov 18 03:19:30 2017 +0000"
      },
      "message": "Merge \"AAPT2: whitelist alphanums instead of blacklisting hyphens in package names.\" into oc-mr1-dev\nam: e7b0a330db\n\nChange-Id: I7943dc35ceeca0c3fdb4df668a761889cd0add2d\n"
    },
    {
      "commit": "e7b0a330db58c21366390c39896a4d1ca306495e",
      "tree": "472b36c6795f55deb9637448dfdd25325080769a",
      "parents": [
        "16277b2ac05540902036184b72c069a572004e40",
        "2ba1bc579fcc9085f95ca2061eabe2cd7ebe4613"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Nov 18 03:03:19 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Nov 18 03:03:19 2017 +0000"
      },
      "message": "Merge \"AAPT2: whitelist alphanums instead of blacklisting hyphens in package names.\" into oc-mr1-dev"
    },
    {
      "commit": "24c992479799c8330f6b837d504bac7970310947",
      "tree": "4d8c4df0319c7930dcc9dcb96a589f0f8af014fc",
      "parents": [
        "344072e2f678cf02b597e16a078c05ef270a4b5d",
        "67695d3aff7553f80bbcda88e6a2c1c0cb9f7632"
      ],
      "author": {
        "name": "Nan Zhang",
        "email": "nanzhang@google.com",
        "time": "Fri Nov 17 22:30:37 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Nov 17 22:30:37 2017 +0000"
      },
      "message": "Merge \"Build fontchain_lint using python_binary_host\" am: 7ecac139ea am: 7ade558ad2\nam: 67695d3aff\n\nChange-Id: I850304f79c1c35bfeb6951307b8ca2365da0330b\n"
    },
    {
      "commit": "67695d3aff7553f80bbcda88e6a2c1c0cb9f7632",
      "tree": "04574e0ab3879b0ed9360f80c2a9f51b7693765a",
      "parents": [
        "847acf2b9a08fff3b26fe1c0f7c62e7aa91fd572",
        "7ade558ad210c2374c0c9b1c773e012255156c7b"
      ],
      "author": {
        "name": "Nan Zhang",
        "email": "nanzhang@google.com",
        "time": "Fri Nov 17 22:20:57 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Nov 17 22:20:57 2017 +0000"
      },
      "message": "Merge \"Build fontchain_lint using python_binary_host\" am: 7ecac139ea\nam: 7ade558ad2\n\nChange-Id: Ie920005b39a476b281333b12fbed9e586a2ce3e7\n"
    },
    {
      "commit": "7ade558ad210c2374c0c9b1c773e012255156c7b",
      "tree": "f20814d46daaf5a8172ed17b146aca428c1bc1d6",
      "parents": [
        "80bfc216ca9969cab2dbd839f849d83d23be18df",
        "7ecac139eabd690d4bfb5b62e85f8966969c4969"
      ],
      "author": {
        "name": "Nan Zhang",
        "email": "nanzhang@google.com",
        "time": "Fri Nov 17 22:12:58 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Nov 17 22:12:58 2017 +0000"
      },
      "message": "Merge \"Build fontchain_lint using python_binary_host\"\nam: 7ecac139ea\n\nChange-Id: I4fef971c8fc8837f73644667988ddc3e7f4305ec\n"
    },
    {
      "commit": "80235403d2a80eee1c23dbe856d18194b1b93843",
      "tree": "5014d19013bcaabe27d990e8e2e11dc5e6e4724f",
      "parents": [
        "efe5f129ad2f0c8dbdbadf68a219169e423413cf"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Mon Nov 13 20:42:25 2017 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Fri Nov 17 11:53:15 2017 -0800"
      },
      "message": "statsd: parse the new format of stats log\n\n+ Changed how we construct LogEvent, now it\u0027s based on the context from log_msg\n  without making a copy of the list.\n\n+ All stats logs now have the same event tag, the atom id is the first elem in the log.\n\nTest: statsd_test\nChange-Id: I4419380f2ee1c2b2155d427b9f2adb78883b337f\n"
    },
    {
      "commit": "f7b3a7e908ec612abe33f14c51c7b9693e4d70c5",
      "tree": "e216d7a552798b91807d515b3e6681da6a0f99e8",
      "parents": [
        "ff3a8080f69a95787ce24e2218b8f091a1d38a19",
        "5a217b052d360d998ea809d894ebb164e436e5e4"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 17 19:25:28 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 17 19:25:28 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fix debugging output\""
    },
    {
      "commit": "ff3a8080f69a95787ce24e2218b8f091a1d38a19",
      "tree": "68b5daab26e34e8af96d4d6fb598d2c97ede9753",
      "parents": [
        "719c227c69ecd96be957f2ace5cbbf188dea9c03",
        "a693c4a32ebed4e96dcc1cf6a706e8ebbb004db2"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 17 19:24:06 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 17 19:24:06 2017 +0000"
      },
      "message": "Merge \"AAPT2: Move all file output to FileOutputStream\""
    },
    {
      "commit": "2db709de30688a5761b45116639bada335aae3b7",
      "tree": "4f9bdfe3880a94ec8ee0af39dd67e67b38d2d002",
      "parents": [
        "413a30812669dd34f73b748a9574308fc6a16d45"
      ],
      "author": {
        "name": "Nan Zhang",
        "email": "nanzhang@google.com",
        "time": "Wed Nov 08 20:48:46 2017 -0800"
      },
      "committer": {
        "name": "Nan Zhang",
        "email": "nanzhang@google.com",
        "time": "Fri Nov 17 09:22:12 2017 -0800"
      },
      "message": "Build fontchain_lint using python_binary_host\n\nTest: out/host/linux-x86/bin/fontchain_lint\nout/target/product/generic/system true external/unicode\nBug: b/27727331\n\nChange-Id: Ib9353d2338c3b939027069f49e3e847c65526581\n"
    },
    {
      "commit": "5a217b052d360d998ea809d894ebb164e436e5e4",
      "tree": "e0f81d930a0967c1e85962b3da4f337086bd3f70",
      "parents": [
        "9352e47db471dcbe659e6396797f09cebd455728"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 16 16:58:02 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 16 16:58:02 2017 -0800"
      },
      "message": "AAPT2: Fix debugging output\n\nTest: manual\nChange-Id: I3a362caf7bd691df399db00c6280e0a208a406da\n"
    },
    {
      "commit": "a693c4a32ebed4e96dcc1cf6a706e8ebbb004db2",
      "tree": "902f4d5abd493ccb8087b941676e2562c8db128b",
      "parents": [
        "60303333dc8ad61e640992cee2b5c601be73faf8"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 09 11:29:39 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 16 12:06:17 2017 -0800"
      },
      "message": "AAPT2: Move all file output to FileOutputStream\n\nFileOutputStream is safe to use on Windows, as it opens\nfiles using our compatibility API.\n\nBug: 68262818\nTest: make aapt2_tests\nChange-Id: Ib0b27e93edd609b49b1327db7d9867a002198ebb\n"
    },
    {
      "commit": "5209abad9b72623131cc4619d9eab01b386d7c01",
      "tree": "cad56dfc03776519769c40fc25727ffe9fb101fb",
      "parents": [
        "f8c2bdfe68a33273db364f868c14bc72764bcabb",
        "ca189f4db6e1ee01b477c683a2ba9f4ef82ebf51"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Nov 16 19:09:45 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 16 19:09:45 2017 +0000"
      },
      "message": "Merge \"Use -Werror in frameworks/base/tools/stats_log_api_gen\""
    },
    {
      "commit": "b1d9bd9c5d28413432cd071aa814ad9482764572",
      "tree": "851770cf7bb98e058afec9a3426a3962d7cc1c8f",
      "parents": [
        "a834309bd5c8ae276ae7b5e3aedffd47bb517b10",
        "0dfa752e67116940f04a988ca4a264f7140dd81f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 15 03:05:18 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 15 03:05:18 2017 +0000"
      },
      "message": "Merge \"Implement System Properties Section\""
    },
    {
      "commit": "220871a697290529278ed16db508eda8e12f3fc7",
      "tree": "bc13101b63c6fe39a9d92706ecb7ded7f98f5a9c",
      "parents": [
        "802f191b2b84a1b1b82c7f6f3268846084b35dfb",
        "98e12851336b7db16e583f9afac63ecc97465980"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Tue Nov 14 12:31:11 2017 -0800"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Tue Nov 14 12:31:11 2017 -0800"
      },
      "message": "Merge commit \u002798e12851336b7db16e583f9afac63ecc97465980\u0027 from\noc-mr1-dev-plus-aosp-without-vendor into stage-aosp-master.\n\nChange-Id: Ia7b8da4a00d215160e4a4fa40f6044208d1297b7\nMerged-In: I19846d2a3ee27aecbae2367a74ee49082eea154d\n"
    },
    {
      "commit": "ae2df01aae2ee7076af875c04e991140f685f733",
      "tree": "1c7d34d21d60444344cb8c1b153863702d9ae029",
      "parents": [
        "0253dd036468246b95161ae6ec1a87c7751d00a3"
      ],
      "author": {
        "name": "Stefan Lafon",
        "email": "stlafon@google.com",
        "time": "Tue Nov 14 09:17:21 2017 -0800"
      },
      "committer": {
        "name": "Stefan Lafon",
        "email": "stlafon@google.com",
        "time": "Tue Nov 14 11:56:05 2017 -0800"
      },
      "message": "Rename \"stats_events\" as \"atom\".\n\nAlso make atom WakelockStateChanged use the \"Type\" enum instead of int32.\n\nTest: Unittests are passing. Statsd is working.\n\nChange-Id: I0909e2d97297f78996a81366d66aae62d5bf5ce1\n"
    },
    {
      "commit": "0dfa752e67116940f04a988ca4a264f7140dd81f",
      "tree": "3aa662e1d9da3143bc0c3a05bf5711d346c58601",
      "parents": [
        "a379f499c8e27d2c18b7089feb18c7f0a44e0433"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Mon Nov 06 17:43:47 2017 -0800"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Tue Nov 14 10:54:24 2017 -0800"
      },
      "message": "Implement System Properties Section\n\nBug: 68774852\nTest: unit tested and on device tests\nChange-Id: I0d4aadf8d4203fe56e35bbfb77e5c532116fd27e\n"
    },
    {
      "commit": "d8b4beaae90dd342b34396f2fe94f88b6cd5dbdd",
      "tree": "d59174241c00213df85d7ad155cdb746cb00edb4",
      "parents": [
        "9bdd372e27e0d46b6a350bb4a21c94fdd3e5db81"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Fri Nov 10 23:50:17 2017 +0000"
      },
      "committer": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Tue Nov 14 09:05:27 2017 +0000"
      },
      "message": "AAPT2 - Add ProtoApkSerializer implementation to convert from Binary to Proto.\n\nAlso new flag to choose the conversion direction:\n  --output_format [binary|proto].\n\nTest: Manual\n\nChange-Id: I61d381aa49869b0fd6bd9f017dda0cac5ca998bb\n"
    },
    {
      "commit": "514971a39ca961c9fc748f9fb9a97e34a1067b3f",
      "tree": "833087829e7d7b2a8086c8fe5ac242dcb4827fb4",
      "parents": [
        "8d6eb1fdf857272c4f94a35d172ccf33ba58fd2c",
        "d55bef78a5f2a0fe8068b26b463b161bd0398791"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Mon Nov 13 23:52:28 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 13 23:52:28 2017 +0000"
      },
      "message": "Merge \"AAPT2 - Convert command to copy all the files.\""
    },
    {
      "commit": "d55bef78a5f2a0fe8068b26b463b161bd0398791",
      "tree": "05a154606f720ac82bf85797faee537d0edc4fde",
      "parents": [
        "a591149cbce49306a6a5e127f077b3551873d490"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Fri Nov 10 22:31:01 2017 +0000"
      },
      "committer": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Mon Nov 13 21:07:34 2017 +0000"
      },
      "message": "AAPT2 - Convert command to copy all the files.\n\nTest: Manual\n\nChange-Id: I8705966cb34ff41eb362126a35956720147fae91\n"
    },
    {
      "commit": "53ef795e28dd3e0bc2a9b7a289673591f1f2adaf",
      "tree": "dca1f9c5d9fb98f432d5b5544c45fa2c9c8a2d76",
      "parents": [
        "7246736167b6347ae86e311ff0ecd039a3d8b700",
        "53b2a73c375abcb20c0c8ec404720513555c5365"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 13 20:30:58 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 13 20:30:58 2017 +0000"
      },
      "message": "Merge \"Add api lint to upload checks\""
    },
    {
      "commit": "3f89bd678334a1cfd24e387a3be6c2c395ff2856",
      "tree": "7d1d81a4f801f86d1e9602d3a56cd96bcc4ee76e",
      "parents": [
        "1c4ab704d14c047775b3e42f87ea4081fa204e37",
        "09ef94e918870a55907b20f35348cc7b77bdc148"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 13 20:02:41 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 13 20:02:41 2017 +0000"
      },
      "message": "Merge \"Change conditional keep rule syntax\""
    },
    {
      "commit": "53b2a73c375abcb20c0c8ec404720513555c5365",
      "tree": "137a22ad3ce569fb8b48c8090202c98d021b6cd7",
      "parents": [
        "ae5eb83a32a2005bd2c872bdf7b0621190ddb062"
      ],
      "author": {
        "name": "Jason Monk",
        "email": "jmonk@google.com",
        "time": "Fri Nov 10 15:43:17 2017 -0500"
      },
      "committer": {
        "name": "Jason Monk",
        "email": "jmonk@google.com",
        "time": "Mon Nov 13 13:25:05 2017 -0500"
      },
      "message": "Add api lint to upload checks\n\nCurrently will never block upload, only considered a warning, but\nwill print out any lint issues discovered.\n\nTest: do an upload\nBug: 69115822\nChange-Id: I69b8e5a3f92ac28ee3c954408e88a1056c33af65\n"
    },
    {
      "commit": "e2f7f79d023f0b3ba2fee374492dde61f525ece6",
      "tree": "8ea7efe3b552f1cb23c2f4c2ef379be6fb02f19b",
      "parents": [
        "9a753af26b2ce27c10ad215aa70cf1bcd44d7915"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Wed Nov 01 17:08:27 2017 -0700"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Fri Nov 10 17:34:07 2017 -0800"
      },
      "message": "Implement Cpu Info Section\n\nSupport carriage return in Read class, and add a new way to parse lines\nwhich is not able to split purly by delimiters\n\nBug: 65642861\nTest: unit test and on device test\nChange-Id: Ib82dd4e458bb7d2fa33462b23fbe11b828325916\n"
    },
    {
      "commit": "ca189f4db6e1ee01b477c683a2ba9f4ef82ebf51",
      "tree": "d603b842278ce97f4118b53dde2a9a728688d14e",
      "parents": [
        "efcd7687147b3f59f2f8d599e6b72d75c5c1f2a4"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Nov 10 15:06:53 2017 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Nov 10 15:10:34 2017 -0800"
      },
      "message": "Use -Werror in frameworks/base/tools/stats_log_api_gen\n\n* Remove unused local variables.\n\nBug: 66996870\nTest: build with WITH_TIDY\u003d1\nChange-Id: I24b33facec0bfd73eb5c2a9759b42f9c98ee285f\n"
    },
    {
      "commit": "288536b6bd230ab216b2d19f3a6eff8099cde0cf",
      "tree": "a41eae51327a1fd6097c4e69630b614fceecc246",
      "parents": [
        "c061b4384744c3e7227bfe13a04a0c13c0e5121b",
        "7e8549dd57c28bc797049109e82cda245d33df15"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Fri Nov 10 20:09:47 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 10 20:09:47 2017 +0000"
      },
      "message": "Merge \"Refactor Convert command to use a ISerializer interface.\""
    },
    {
      "commit": "09ef94e918870a55907b20f35348cc7b77bdc148",
      "tree": "f1078d6bf7c7d1200c5c0981a16477576d0b6461",
      "parents": [
        "5d8150092ddd0e33849664d9b5f9abd260c3d408"
      ],
      "author": {
        "name": "Adam Koski",
        "email": "adamkoski@google.com",
        "time": "Fri Nov 10 11:15:55 2017 -0800"
      },
      "committer": {
        "name": "Adam Koski",
        "email": "adamkoski@google.com",
        "time": "Fri Nov 10 11:30:56 2017 -0800"
      },
      "message": "Change conditional keep rule syntax\n\nGoogle\u0027s ProGuard fork is migrating to a new syntax that upstream\nProGuard 6.0 will also support.\n\nTest: unit tests\nBug: 69162105\nChange-Id: I3b6d7e82eb99c2e2af6c4d851a4f97ec3e471b55\n"
    },
    {
      "commit": "cc8aa11f6c08ed621776dffc91bbbd6b21c6b6de",
      "tree": "d4489d7d4606485988653bebbd8d8f39ac2b2061",
      "parents": [
        "24f9ac4ecf1d0497d8175ba61b62d7fcfd9036b6",
        "07d8249c4bc1ac50ba1e81d99b39ce87ef4ed62c"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 10 17:50:49 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Nov 10 17:50:49 2017 +0000"
      },
      "message": "Merge \"AAPT2: Differentiate between Android and Java package names\" into oc-mr1-dev\nam: 07d8249c4b\n\nChange-Id: I0a3235052cea9041cf6c944f71879d304bce5a56\n"
    },
    {
      "commit": "07d8249c4bc1ac50ba1e81d99b39ce87ef4ed62c",
      "tree": "41ba55f3fe3c94fed1e517d26bc6bfbe50c4e54f",
      "parents": [
        "430ed075960430030270f55fa33fcdf6e0952b5f",
        "81e9ecfc0049883871ba72ecaf0908834e6ae3d5"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 10 17:32:52 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 10 17:32:52 2017 +0000"
      },
      "message": "Merge \"AAPT2: Differentiate between Android and Java package names\" into oc-mr1-dev"
    },
    {
      "commit": "2ba1bc579fcc9085f95ca2061eabe2cd7ebe4613",
      "tree": "d310c55369de6eaef9f80b61c1e13288e65aa86a",
      "parents": [
        "9e628b60ba92448045e28e920e482915c27d4d79"
      ],
      "author": {
        "name": "Donald Chai",
        "email": "dchai@google.com",
        "time": "Thu Nov 09 21:06:52 2017 -0800"
      },
      "committer": {
        "name": "Donald Chai",
        "email": "dchai@google.com",
        "time": "Fri Nov 10 17:23:26 2017 +0000"
      },
      "message": "AAPT2: whitelist alphanums instead of blacklisting hyphens in package names.\n\nBCP 47 uses plus signs for name mangling, and future qualifiers may\nstart using other reserved characters as well, so we might as well\nfutureproof the sanitizer.\n\nChange-Id: I1be7ee4234f8e30bb0ea832372b4dc932d30550c\nFixes: 69134786\nTest: UtilTest.SplitNamesAreSanitized\n(cherry picked from commit 414e48a54143d78498dff381518c81e0c64ad56e)\n"
    },
    {
      "commit": "6385bbd860b8837da6f307658cb7516790823250",
      "tree": "10299b8684dd65f244b93466404dc8ec425504d0",
      "parents": [
        "222f4a2c81d512a53e27fd012d6c549d9deccf81",
        "751e69b38b19398c221e9ef364e21d812763b3e2"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 10 10:13:26 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Nov 10 10:13:26 2017 +0000"
      },
      "message": "Merge \"AAPT2: Workaround for feature splits without namespacing\" into oc-mr1-dev\nam: 751e69b38b\n\nChange-Id: I8791a0cbfb32c25a0c73552c47509cce1d5f06e2\n"
    },
    {
      "commit": "414e48a54143d78498dff381518c81e0c64ad56e",
      "tree": "e3e341036686ff730c146af7bf8062f155e26ffd",
      "parents": [
        "7cd3fa6fa2d0862e1ff2b8117a1d48238ad0a579"
      ],
      "author": {
        "name": "Donald Chai",
        "email": "dchai@google.com",
        "time": "Thu Nov 09 21:06:52 2017 -0800"
      },
      "committer": {
        "name": "Donald Chai",
        "email": "dchai@google.com",
        "time": "Thu Nov 09 21:47:20 2017 -0800"
      },
      "message": "AAPT2: whitelist alphanums instead of blacklisting hyphens in package names.\n\nBCP 47 uses plus signs for name mangling, and future qualifiers may\nstart using other reserved characters as well, so we might as well\nfutureproof the sanitizer.\n\nChange-Id: I1be7ee4234f8e30bb0ea832372b4dc932d30550c\nFixes: 69134786\nTest: UtilTest.SplitNamesAreSanitized\n"
    },
    {
      "commit": "7e8549dd57c28bc797049109e82cda245d33df15",
      "tree": "29f7f4c0bce99f0514c25564c0db3a729a705c9a",
      "parents": [
        "3b382900a81a10498fc35e927086982bc8e18437"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Fri Nov 10 01:22:12 2017 +0000"
      },
      "committer": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Fri Nov 10 05:04:48 2017 +0000"
      },
      "message": "Refactor Convert command to use a ISerializer interface.\n\nThis will allow for other implementations.\n\nTest: Manual\n\nChange-Id: Ibf9cf8f5ac2b5b8e51a5fb684b434a0f59a3cbee\n"
    },
    {
      "commit": "c8e3c7c816a4d9de42579df11d9302e117070ea1",
      "tree": "b6e4fd42be8b5a0cd6a9a43294906f37f1d6be10",
      "parents": [
        "600c006cde00dcd14bc6ee85dc576148ad5bd5c9",
        "490595a5fc1c3618dbbc2da5d421d10c025fabac"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 10 01:27:34 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 10 01:27:34 2017 +0000"
      },
      "message": "Merge \"AAPT2: Workaround for feature splits without namespacing\""
    },
    {
      "commit": "1210e8c81bc3fafd49a18dee0ca26ae63d713c71",
      "tree": "85a6e65280f1b217641df617fe5fbd1f3e48cfbc",
      "parents": [
        "97ff9f9d27277b4d94eef0caf1afaae691e0ba6d"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Nov 07 17:08:07 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 09 23:00:56 2017 +0000"
      },
      "message": "AAPT2: Workaround for feature splits without namespacing\n\nAndroid Instant Apps in its current iteration does not use namespaces,\nbut due to limitations on the Android resource runtime, needs to make\nit look like it does.\n\nThis is due to a bug that treats any package ID that\u0027s not 0x01 or 0x7F\nas a shared library. Shared libraries require unique package names.\n\nAs a workaround, and since Android Instant Apps can not have a feature\ndepend on another feature, we can alter the resource package name of a\nfeature split just before writing it out to disk. This avoids using a\nunique package name while linking, thereby avoiding namespace issues.\n\nBug: 68820737\nTest: manual\nMerged-In: Ic553ed42656436bbb949393d0248ee7bb9d37860\nChange-Id: Ic553ed42656436bbb949393d0248ee7bb9d37860\n"
    },
    {
      "commit": "490595a5fc1c3618dbbc2da5d421d10c025fabac",
      "tree": "95b9f4a854da15241e2acc4b379693a9320c63f5",
      "parents": [
        "2dd3953ae00068a71da9f0a0d4e2fb9d8517424c"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Nov 07 17:08:07 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 09 14:57:49 2017 -0800"
      },
      "message": "AAPT2: Workaround for feature splits without namespacing\n\nAndroid Instant Apps in its current iteration does not use namespaces,\nbut due to limitations on the Android resource runtime, needs to make\nit look like it does.\n\nThis is due to a bug that treats any package ID that\u0027s not 0x01 or 0x7F\nas a shared library. Shared libraries require unique package names.\n\nAs a workaround, and since Android Instant Apps can not have a feature\ndepend on another feature, we can alter the resource package name of a\nfeature split just before writing it out to disk. This avoids using a\nunique package name while linking, thereby avoiding namespace issues.\n\nBug: 68820737\nTest: manual\nChange-Id: Ic553ed42656436bbb949393d0248ee7bb9d37860\n"
    },
    {
      "commit": "81e9ecfc0049883871ba72ecaf0908834e6ae3d5",
      "tree": "7c30097ed6ffce65efd3dc09e82deca3a335b198",
      "parents": [
        "97ff9f9d27277b4d94eef0caf1afaae691e0ba6d"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 06 10:44:46 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 09 01:49:58 2017 +0000"
      },
      "message": "AAPT2: Differentiate between Android and Java package names\n\nAndroid package names are more strict (ASCII only) than Java package names.\nAlso fixed an issue where trailing underscores were disallowed in Android\npackage names.\n\nBug: 68468089\nTest: make aapt2_tests\nMerged-In: I1052e9e82b6617db6065ce448d9bf7972bb68d59\nChange-Id: I1052e9e82b6617db6065ce448d9bf7972bb68d59\n"
    },
    {
      "commit": "903ed1b6f9947ac919e9d110d4b82d25a3ff0de0",
      "tree": "157c6ed9b61fad7612d5b47b8437fc33715cae5c",
      "parents": [
        "6bd2b53f46b4ab786ab1f7b95fe836debdf446df",
        "96ea08f1e737e0d19e274e9a29f71c387d81b09a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 08 21:08:26 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 08 21:08:26 2017 +0000"
      },
      "message": "Merge \"AAPT2: Differentiate between Android and Java package names\""
    },
    {
      "commit": "96ea08f1e737e0d19e274e9a29f71c387d81b09a",
      "tree": "1e8f202dfd7f1dd1e46af2cebb1afb548fbd6890",
      "parents": [
        "b54be8de65b09c85992b30dbb1d52032f0498b6d"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 06 10:44:46 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Nov 07 11:31:17 2017 -0800"
      },
      "message": "AAPT2: Differentiate between Android and Java package names\n\nAndroid package names are more strict (ASCII only) than Java package names.\nAlso fixed an issue where trailing underscores were disallowed in Android\npackage names.\n\nBug: 68468089\nTest: make aapt2_tests\nChange-Id: I1052e9e82b6617db6065ce448d9bf7972bb68d59\n"
    },
    {
      "commit": "93190b79d11d874199cfe7258526a48cfc8399fc",
      "tree": "3a7ae2b44c7f9693d54cdb0849e21338398de3d3",
      "parents": [
        "b54be8de65b09c85992b30dbb1d52032f0498b6d"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 03 15:20:17 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Nov 07 11:21:10 2017 -0800"
      },
      "message": "AAPT2: Better debugging output\n\nTest: make aapt2_tests\nChange-Id: I7778b773201381538dc1f2e376abee4eb33e44c0\n"
    },
    {
      "commit": "4ee829a707e15aca85793ef65d588be51ac58d40",
      "tree": "7515318e3c0af975cf87a3382b98084de8c978a7",
      "parents": [
        "c7b5f787654a604fa43b35c2ad0e0c3fffa4eaa7",
        "8780eb6e4918ae24fb1ae74d631042c32e41dc3d"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Nov 07 19:05:22 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 07 19:05:22 2017 +0000"
      },
      "message": "Merge \"AAPT2: Add convert command\""
    },
    {
      "commit": "2475c68edf36431aab487c8f188f2549dab8ce7a",
      "tree": "0a0e6775c4c884899854e2eec6f04ab360566aef",
      "parents": [
        "0b1b62d27f7a96af7eca739cb4e08e7caf8b6b3c",
        "3a725dc11f54cb68745ebdf3aa20908c58dc94f2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 03 22:10:35 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 03 22:10:35 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fix GetFileType for unicode and long paths on Windows\""
    },
    {
      "commit": "3a725dc11f54cb68745ebdf3aa20908c58dc94f2",
      "tree": "daa2299531d22d1a5b26ab534fff54a2524ce099",
      "parents": [
        "d46f87a9e2b444b6f9999d7ec86d347e2fe1b596"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 02 16:14:59 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 03 11:19:36 2017 -0700"
      },
      "message": "AAPT2: Fix GetFileType for unicode and long paths on Windows\n\nBug: 68262818\nTest: manual\nChange-Id: I4f02e544e45865984ff4e021a7d1e83f8baf24c3\n"
    },
    {
      "commit": "a544f25b1aa4f89389496decfdbacd11a0567d39",
      "tree": "bd0597b579da3c8a7f10b32cbebb1e2003156a8f",
      "parents": [
        "4c7db0543e062a5fb98c2e104379554a52fd7342",
        "ed37f4842ad838792b16bf19768ed9b2519b0194"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 03 11:13:33 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 03 11:13:33 2017 +0000"
      },
      "message": "Merge \"AAPT2: Better error messages for ManifestFixer\""
    },
    {
      "commit": "e20e09d184309ae442e8b1e63048f1e9126c8ca9",
      "tree": "04de33413d9abdce7a2c03e88cf88d07c3f0c67f",
      "parents": [
        "b7eac6f0a5a544e0027bef08c967025faf2711c2",
        "04465e7f252eb1531c9387bbb4bc5170e685087d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 03 01:18:16 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 03 01:18:16 2017 +0000"
      },
      "message": "Merge \"AAPT2: Introduce command to run unit tests\""
    },
    {
      "commit": "181799bc53c45282ffa50669430a5cb41f5c194d",
      "tree": "65018b2a6bffde3a249dd8c797a6861e6d782dd3",
      "parents": [
        "bd1bb1d9067ec32b3fd0914e7eb1ccd629ef25dc",
        "178e67835a954511a6567064f3081ecd7796f737"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 02 23:28:32 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 02 23:28:32 2017 +0000"
      },
      "message": "Merge \"AAPT2: Update tests to reflect new development API \u0027P\u0027\""
    },
    {
      "commit": "04465e7f252eb1531c9387bbb4bc5170e685087d",
      "tree": "cc28831dc1b4ed80f4a30df8fd2d09d26f226599",
      "parents": [
        "178e67835a954511a6567064f3081ecd7796f737"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 02 15:23:36 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 02 15:33:26 2017 -0700"
      },
      "message": "AAPT2: Introduce command to run unit tests\n\nThis command will execute the aapt2_tests with a parameter\nto emit XML test results into the out/dist directory.\n\nTest: manual\nChange-Id: I10cf119bb47b7698ddd91b1adf7323e51d169970\n"
    },
    {
      "commit": "178e67835a954511a6567064f3081ecd7796f737",
      "tree": "7c8d8ddd2161377d0aeab138001baefdbcacb5ec",
      "parents": [
        "4f340a4f8b50b29b562407e39563ee78a90bea3f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 02 14:12:38 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 02 14:12:38 2017 -0700"
      },
      "message": "AAPT2: Update tests to reflect new development API \u0027P\u0027\n\nBug: 68346913\nTest: make aapt2_tests\nChange-Id: Ic1435c529b6c80206d2326ac0da076777dffcc9a\n"
    },
    {
      "commit": "ed37f4842ad838792b16bf19768ed9b2519b0194",
      "tree": "8356e6a292ac53a5d7aebdab88576d771b4bbf9e",
      "parents": [
        "4f340a4f8b50b29b562407e39563ee78a90bea3f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 02 12:07:08 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 02 12:07:55 2017 -0700"
      },
      "message": "AAPT2: Better error messages for ManifestFixer\n\nAAPT2 will now print the XML hierarchy where it found an unexpected\nelement.\n\nTest: make aapt2_tests\nChange-Id: Iac7918b2f344fab874f0a3e7aa9c6936ecde8913\n"
    },
    {
      "commit": "9cc9ad632b25e7ebbb680654dcc4561b02f088cb",
      "tree": "46ffc3c1982a143915035dadab5b5775f9a9d485",
      "parents": [
        "0d16870b691611b983c49f68fb293b7082f0b5d8",
        "be6de3017b2045926424dcbc8b65ce63376963a2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 02 18:19:37 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 02 18:19:37 2017 +0000"
      },
      "message": "Merge \"Enable Window Dumpsys Section\""
    },
    {
      "commit": "be6de3017b2045926424dcbc8b65ce63376963a2",
      "tree": "c4d89ef04122743902ff5b64cc7825cb466c7584",
      "parents": [
        "6b0ea8ae9334f2aab85fe470690133844dc0e8ee"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Tue Oct 24 12:30:24 2017 -0700"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Wed Nov 01 18:24:57 2017 -0700"
      },
      "message": "Enable Window Dumpsys Section\n\nProtobuf defines classes, which can have self recursive message\ndefinitions and cause a bug in generating privacy flags.\nSolve the problem here. The details is in incident_section_gen/main.cpp.\nThe logic is a bit complicated to address more than one level of self\nrecursion proto message definition.\n\nAlso solve a bug when PrivacyBuffer strips fields.\nModify PRIVACY_POLICY_LIST to be type Privacy** in order to allow\ninitialization by a method.\n\nBug: 68162512\nTest: unit tested and on device tests\nChange-Id: I1d0b79f6813e5fd66c4cf5823d0fa17efc57bb1d\n"
    },
    {
      "commit": "8780eb6e4918ae24fb1ae74d631042c32e41dc3d",
      "tree": "938e18951a562fcd043ac779c7e758444b4bf0a8",
      "parents": [
        "4f340a4f8b50b29b562407e39563ee78a90bea3f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Oct 31 17:44:39 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Nov 01 10:58:28 2017 -0700"
      },
      "message": "AAPT2: Add convert command\n\nThis command allows a developer to convert their proto APK\n(generated from the link phase using --proto-format) into\na binary APK suitable for use on device.\n\n  aapt2 convert -o output.apk input.apk\n\nTest: manual + make aapt2_tests\nChange-Id: I10a7c33bb4b57006d01fe00a8bf92f78e04e7e50\n"
    },
    {
      "commit": "f9ed04b3d938b06329fcd14d4f2b461000d028da",
      "tree": "2a660ca1ce48c4e9deaea14524393a63ba98d1c1",
      "parents": [
        "f8a9169949c589755d300530f7b2390e687a9f8b"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Fri Oct 20 16:17:58 2017 -0700"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Wed Nov 01 17:49:42 2017 +0000"
      },
      "message": "Remove the extra mapping of field types in ProtoOutputStream\n\nIt is very unlikely the protobuf changes the value in descriptor.h,\nand if defines an extra mapping, there are several places to maintain:\n1. java-stream,\n2. cpp-stream,\n3. ProtoOutputStream.java\n4. ProtoOutputStream.cpp\n5. Privacy.h (GetFieldId)\n6. StatsLog to generate field id (type \u003c\u003c 32 + field number)\n\nTherefore use the current value in descriptor.h seems reasonable unless\nthey change that, very very unlikely, they probably will just add new\ntypes, and deprect the existing ones like Group.\n\nTest: test output of dumpsys proto\nChange-Id: I6e150ab427851dd3b5dd55d3b273deeed7a0963c\n"
    },
    {
      "commit": "6b0ea8ae9334f2aab85fe470690133844dc0e8ee",
      "tree": "10b9ea22c99c8f6a97b64f0614fcfc310056ca71",
      "parents": [
        "acff9042978d4ca8a63e9cf76bf77905ec87f156",
        "04625ad4886a478bf74bbfc13937c10fa63eb272"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 01 17:31:06 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 01 17:31:06 2017 +0000"
      },
      "message": "Merge \"Refactor incident_helper to use protoutil and cppstream plugin.\""
    },
    {
      "commit": "114616b27dd4f3da313e933a51980e68f5c5cce7",
      "tree": "11897358ca90d547a6f32872e9cfedc764545b1a",
      "parents": [
        "42884cf71da00b54ce86a6f2ca5f3eb61e2e7e09",
        "c8f5fc284cc635f7056307e55121e439b21ac83a"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Wed Nov 01 15:49:39 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Nov 01 15:49:39 2017 +0000"
      },
      "message": "AAPT2: Allow for nested inline xmls\nam: c8f5fc284c\n\nChange-Id: Ie80ba078d893d1b894d289645dae84fa2af58c40\n"
    },
    {
      "commit": "38a3f5e24527927efe048ab4daea33dcad7bb39a",
      "tree": "a01243b224b3850df36b7f56e3626916860d693b",
      "parents": [
        "ae74e89ec5bf3f9260da27d6465d5c3a8394d7d3",
        "9478f3515b2e0ccc8320b1911e6f911e3a3ffde0"
      ],
      "author": {
        "name": "Stefan Lafon",
        "email": "stlafon@google.com",
        "time": "Wed Nov 01 02:44:58 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 01 02:44:58 2017 +0000"
      },
      "message": "Merge \"Generate constants for enum values.\""
    },
    {
      "commit": "04625ad4886a478bf74bbfc13937c10fa63eb272",
      "tree": "ba39988adb170b2e6e744ab304de7f8846a4d444",
      "parents": [
        "eb7d335641ec1b9c91c1609a94cb1cbdba1d3987"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Tue Oct 17 18:29:33 2017 -0700"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Tue Oct 31 16:54:38 2017 -0700"
      },
      "message": "Refactor incident_helper to use protoutil and cppstream plugin.\n\n1. Split the parsers to its own file to prevent all the parsers in one\ngaint file.\n\n2. Completely get rid of protobuf-cpp-full in incident_helper, use\nProtoOutputStream and cppstream instead, the incident_helper binary is\nreduced from ~500K to ~113K.\n\n3. Write data to protobuf even its values are zero/default, the reason\nis for example we have a repeated int32 orders \u003d 1; and people\nexplicitly append 0 so the total repeated field has 10 values, if zero\nis not written to serialized data, this repeated field will only have 9\nvalues which is not what we want at first place. This also aligns with\nthe default protobuf serialization behavior in incident_helper_test.\n\n4. Use Android.bp for protoutil lib since it is not able to depend on\nlibs compiled by .mk file, it works the other way.\n\n5. Add a new custom message option for streaming_proto, if specified,\nthe cppstream will create extra metadata to get field ids by field name.\nA Table class is created in incident_helper to use it.\n\nBug: 67860303\nTest: unit tested as well as on device test\nChange-Id: I8e136fd15f343a4a623d20910ec64b622b478a3e\n"
    },
    {
      "commit": "c8f5fc284cc635f7056307e55121e439b21ac83a",
      "tree": "5076d7cc590aa4cb8d7bada63302642d49acc421",
      "parents": [
        "49767aa7f70462cf4b6a1bcdf3832eb6e74f9d65"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Mon Oct 30 19:06:23 2017 -0700"
      },
      "committer": {
        "name": "Tenghui Zhu",
        "email": "ztenghui@google.com",
        "time": "Tue Oct 31 23:13:03 2017 +0000"
      },
      "message": "AAPT2: Allow for nested inline xmls\n\nAdd recursion to InlineXmlFormatParser::Consume for handling nested\naapt:attr\n\nChange-Id: Iabf98945b4f5ef22a3b8fdc4ca2bac092a377629\nFixes: 64385167\nTest: make aapt2_tests\n(cherry picked from commit 7b6b02bd13aea90b938c3ab3b1eaa3fb5043f931)\n"
    },
    {
      "commit": "9478f3515b2e0ccc8320b1911e6f911e3a3ffde0",
      "tree": "d6f3b618e3854b1037852e8a6d56970b495a6822",
      "parents": [
        "941dcba6e310e0bafcc1459422e7db01c5b70bb0"
      ],
      "author": {
        "name": "Stefan Lafon",
        "email": "stlafon@google.com",
        "time": "Mon Oct 30 21:20:20 2017 -0700"
      },
      "committer": {
        "name": "Stefan Lafon",
        "email": "stlafon@google.com",
        "time": "Tue Oct 31 11:23:09 2017 -0700"
      },
      "message": "Generate constants for enum values.\n\nTest: Builds successfully, tests pass and statsd works (it seems).\n\nThis will allow us to use those constants instead of literals.\nThe generated code only augmentes the java constant file.\nIf needed, the same can be done for the C++ file.\nSome of the constant names are very long, but this is due to enum value names that are unnecessarily redundant with the enum names, i.e.\nenum ENUM_NAME {\n  ENUM_NAME_UNKNOWN \u003d 0;\n  ENUM_NAME_VALUE1 \u003d 1;\n  ENUM_NAME_VALUE2 \u003d 2;\n  ...\n}\nwhich can be fixed by avoiding the \u0027ENUM_NAME_\u0027 part in the value names above.\nSo, when possible, we should use shorter value names in stats_events.proto.\n\nChange-Id: I1ad19b86e28d0df0f8c15d4c995d101423cff4c2\n"
    },
    {
      "commit": "7b6b02bd13aea90b938c3ab3b1eaa3fb5043f931",
      "tree": "4bb3d2bd08947ef3ff84b084564a8073657ac29a",
      "parents": [
        "b235036e0a57b984503f3f74f5d772f141109f66"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Mon Oct 30 19:06:23 2017 -0700"
      },
      "committer": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Tue Oct 31 11:02:48 2017 -0700"
      },
      "message": "AAPT2: Allow for nested inline xmls\n\nAdd recursion to InlineXmlFormatParser::Consume for handling nested\naapt:attr\n\nChange-Id: Iabf98945b4f5ef22a3b8fdc4ca2bac092a377629\nFixes: 64385167\nTest: make aapt2_tests\n"
    },
    {
      "commit": "65d74c771f9f2fe1c389c12ab045c4c98788dc7b",
      "tree": "3a48227aec13ad4f97a82efdf67c02e12a4d0aab",
      "parents": [
        "c98b189f434414b7e3e54058a56dd44d7fc38ad3",
        "dc21dea9b8b1157a4a9347b68301da4307c51168"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 27 20:44:48 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 27 20:44:48 2017 +0000"
      },
      "message": "Merge \"AAPT2: Produce Conditional Proguard Keep Rules\""
    },
    {
      "commit": "461c80573b0ef0447f8757f1c32ae9e9be85c9b8",
      "tree": "8b582c8ce33280f1e1e0457b2bdce80e77b7a6f1",
      "parents": [
        "4f340a4f8b50b29b562407e39563ee78a90bea3f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Oct 26 17:18:19 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Oct 26 17:18:19 2017 -0700"
      },
      "message": "AAPT2: Fix issue where generated XML would be tagged with UNKNOWN type\n\nCompiledFiles with UNKNOWN type are copied through, leading to protobuf\noutputs in the final APK.\n\nTest: make aapt2_tests\nChange-Id: Ia0c464caa3951ff27436d1d50c2a8555bc89302b\n"
    },
    {
      "commit": "2db5d3d3a816e84532cb2a091e2c7ecc233faa54",
      "tree": "30124bb5cd0f34b86cf64ad499307de055388d2e",
      "parents": [
        "0d53970f3a1e1283a51f2e14d48701a8da1cecb0",
        "2461194985fac8b2933e4bd3e75f4006341aecf1"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Oct 25 05:57:34 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Oct 25 05:57:34 2017 +0000"
      },
      "message": "Merge changes from topic \"keystorebp\" am: a12eab69d1 am: 315bbfc213\nam: 2461194985\n\nChange-Id: Ibb0723012dd3a2e1a5b12810acd77c0a24292208\n"
    },
    {
      "commit": "2461194985fac8b2933e4bd3e75f4006341aecf1",
      "tree": "357176f155712254ee3f9165e3434cd8180031a4",
      "parents": [
        "b5154d71b2689e6d47177b6a6a53533388d58b12",
        "315bbfc21316f24925c64079ee34b24063929a07"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Oct 25 05:39:06 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Oct 25 05:39:06 2017 +0000"
      },
      "message": "Merge changes from topic \"keystorebp\" am: a12eab69d1\nam: 315bbfc213\n\nChange-Id: I5ac8aa1079a4fdb23a8745e9998d947c85c98e7f\n"
    },
    {
      "commit": "ec4dbd4d401b1c9a3b0a9ca24cfa98e9800ccb95",
      "tree": "c41e524f1a9654546ad061dada4075e3c1556181",
      "parents": [
        "d303f80780be4eedc0c1b6d12a7de7a35481d4ca",
        "d476e2902f4c96578b59a7c7d2853a1acc2b3973"
      ],
      "author": {
        "name": "Donald Chai",
        "email": "dchai@google.com",
        "time": "Tue Oct 24 23:27:27 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 24 23:27:27 2017 +0000"
      },
      "message": "Merge \"AAPT: treat \"-I\" with lower precedence than main APK for dumping.\" into oc-mr1-dev\nam: d476e2902f\n\nChange-Id: I3ee9ce17439f2a4378c890b954c57a7049fbe036\n"
    },
    {
      "commit": "d476e2902f4c96578b59a7c7d2853a1acc2b3973",
      "tree": "ed13d9492a44a9093364901763d8a7458270ac89",
      "parents": [
        "81831f89ce65ee275652f95322cc167f54da7c85",
        "94251fac62b12f030c404132a395fdef73e7ab29"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 24 23:17:34 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 24 23:17:34 2017 +0000"
      },
      "message": "Merge \"AAPT: treat \"-I\" with lower precedence than main APK for dumping.\" into oc-mr1-dev"
    },
    {
      "commit": "a218b561e82a1df82987ecc672bb559bc056766f",
      "tree": "4df7fdd3bdc2506a4e30c7fc6016096d0f046e24",
      "parents": [
        "01478ec1839e89e72c7367f678171a9afa53d5db"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Oct 20 13:00:58 2017 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Oct 24 16:09:01 2017 -0700"
      },
      "message": "Convert lockregioncodeinjection to Android.bp\n\nSee build/soong/README.md for more information\n\nTest: m checkbuild\nChange-Id: I78e91a70e786df8e6722c6ec3fe762371e8f475a\n"
    },
    {
      "commit": "fa1d67a6f88fcbfdb3d91e59a2ceac1f9003cda6",
      "tree": "c87c3554cfac0ca44484cdf78f81e16820698789",
      "parents": [
        "b08aa082a400274606093a4b163560cf31914b1c",
        "81831f89ce65ee275652f95322cc167f54da7c85"
      ],
      "author": {
        "name": "Tenghui Zhu",
        "email": "ztenghui@google.com",
        "time": "Tue Oct 24 16:36:28 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 24 16:36:28 2017 +0000"
      },
      "message": "Merge \"AAPT leave \u003cgradient\u003e alone for VDC\" into oc-mr1-dev\nam: 81831f89ce\n\nChange-Id: I0ee4801c31a63b8e617adb053a773456814b65ff\n"
    },
    {
      "commit": "81831f89ce65ee275652f95322cc167f54da7c85",
      "tree": "d4e1c6aaca7b0e8da4cd6baf1b860fb6ec6030fc",
      "parents": [
        "72b3d46794cf1630f5938bd6c50568d96037abe9",
        "f49cce3aa6f625cfc7288886c044992e1580dbbc"
      ],
      "author": {
        "name": "Tenghui Zhu",
        "email": "ztenghui@google.com",
        "time": "Tue Oct 24 16:22:49 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 24 16:22:49 2017 +0000"
      },
      "message": "Merge \"AAPT leave \u003cgradient\u003e alone for VDC\" into oc-mr1-dev"
    }
  ],
  "next": "b08aa082a400274606093a4b163560cf31914b1c"
}
