)]}'
{
  "log": [
    {
      "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": "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"
    },
    {
      "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"
    }
  ],
  "next": "288536b6bd230ab216b2d19f3a6eff8099cde0cf"
}
