)]}'
{
  "log": [
    {
      "commit": "7884d6b9090c586ac0d72abe0e6efab191a143a7",
      "tree": "4ed450af149c833f1993118610fe1ca4acd03278",
      "parents": [
        "7f8886a9933abbb6f1fdd97d920185b80d439339"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Sat Jan 05 22:04:55 2019 +0100"
      },
      "committer": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Sat Jan 05 22:53:22 2019 +0100"
      },
      "message": "ApiLint: Add Kotlin-style type support\n\nTest: tools/apilint/apilint_sha.sh HEAD \u0026\u0026 python tools/apilint/apilint_test.py\nChange-Id: Iac1fdabcbeffe57c8288d73b2359e8ce0b2bc3eb\n"
    },
    {
      "commit": "7f8886a9933abbb6f1fdd97d920185b80d439339",
      "tree": "dfa81ddd1767669b0be886739b73a1ba201985c3",
      "parents": [
        "a30d062775da3812589a6ce3e49be9d697ef0d6d"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Sat Jan 05 20:09:38 2019 +0100"
      },
      "committer": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Sat Jan 05 20:09:38 2019 +0100"
      },
      "message": "ApiLint: Performance improvements for verification\n\nTest: tools/apilint/apilint_sha.sh HEAD\nTest: python tools/apilint/apilint_test.py\nChange-Id: I90f18181cd0d3c43f176d7c9d1b198f6f5172390\n"
    },
    {
      "commit": "a30d062775da3812589a6ce3e49be9d697ef0d6d",
      "tree": "be1f15e96df17a4dcd86b193a63e1475f17b570d",
      "parents": [
        "d170961b02bf67189ddd14f358c9f263009df786"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Fri Jan 04 20:10:06 2019 +0100"
      },
      "committer": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Sat Jan 05 14:02:38 2019 +0100"
      },
      "message": "ApiLint: Performance improvements for 2.0 signature format parsing\n\nTest: tools/apilint/apilint_sha.sh HEAD\nTest: python tools/apilint/apilint_test.py\nChange-Id: I76b979dd81702afce6468ac377230e589a25e08f\n"
    },
    {
      "commit": "d170961b02bf67189ddd14f358c9f263009df786",
      "tree": "01739004aab7eda46a3effcd10155f8290d19862",
      "parents": [
        "86760ea679faae596ee5aed2ac2cde5fefca3076"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Thu Jan 03 18:54:33 2019 +0100"
      },
      "committer": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Sat Jan 05 14:02:38 2019 +0100"
      },
      "message": "ApiLint: Allow parsing 2.0 API signature files\n\nTest: tools/apilint/apilint_sha.sh HEAD\nTest: python tools/apilint/apilint_test.py\nChange-Id: Id2e1792392b3626746f1ec99f481d0cb27e523a1\n"
    },
    {
      "commit": "3b3be3f10f666f0c9fc368d0567466ee9bb8cc68",
      "tree": "f1a91f4089ea24dea0d4ce26dc3f950867205e93",
      "parents": [
        "e2ad62f797d794717790ee955c09dd378a4c74bf",
        "0bf62f1309fc279039b98a5faaa999ac95f9ee24"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Jan 04 12:20:01 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jan 04 12:20:01 2019 -0800"
      },
      "message": "Merge \"Fix/suppress aapt/aapt2 google-explicit-constructor warnings\" am: cdf6be573f am: d42fe48c93\nam: 0bf62f1309\n\nChange-Id: Iffb7e4a145b172a35dd58b9450d4a5184d8b07f7\n"
    },
    {
      "commit": "1fc78e1814d6e1ad8d49e905a569d2589bbb2b8f",
      "tree": "aed2dad2df847dd375759f3ab6378466a9abe482",
      "parents": [
        "bd7379858523c4e06175ee6cd92b46750d05b1dd"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Dec 20 13:37:44 2018 -0800"
      },
      "committer": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Jan 04 17:38:13 2019 +0000"
      },
      "message": "Fix/suppress aapt/aapt2 google-explicit-constructor warnings\n\n* Add explicit to conversion constructors/operators\n* Use NOLINT or NOLINTNEXTLINE to suppress warnings on intended converters\n\nBug: 28341362\nTest: make with WITH_TIDY\u003d1 DEFAULT_GLOBAL_TIDY_CHECKS\u003d-*,google-explicit-constructor\nChange-Id: Ie02101ea7c422e8add535c111a30a2f21ead0ace\n"
    },
    {
      "commit": "a4ee276629a0289364d9100157b031e3b225f0eb",
      "tree": "f26e7432bcb430ae14d0fd0931728afd563271c2",
      "parents": [
        "e4efe2af7c981f5128dd6a20bdf0bf76cdb8b725",
        "479fa39d6583188a1d7be8b4ebebbd87f250d510"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Jan 04 16:43:22 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 04 16:43:22 2019 +0000"
      },
      "message": "Merge \"Remove raw values from proto APK\""
    },
    {
      "commit": "479fa39d6583188a1d7be8b4ebebbd87f250d510",
      "tree": "cbb0f89d93549f57d9216c9bca8ac78b7afcdbfe",
      "parents": [
        "d692ddf66dc1ccc184a6a6b2fff9aa072d142006"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Jan 02 17:15:39 2019 -0800"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Jan 03 16:19:04 2019 -0800"
      },
      "message": "Remove raw values from proto APK\n\nRaw attribute values are not included in xml files when building binary\nAPKs but they are when building proto APKs. Remove raw attribute values\nand create a new convert flag that (--keep-raw-values) that allows raw\nvalue to be kept.\n\nAlso added flag to link to keep raw attribute values.\n\nBug: 115915884\nBug: 116700688\nTest: aapt2_tests\nChange-Id: Id50136b775b3f43d159ca06181282f6a7b8eaf40\n"
    },
    {
      "commit": "a695f1da1f35c912523bfbea934abb9d1bf02927",
      "tree": "81dd7727b77e56b5018f052c7be78a393f52eccd",
      "parents": [
        "05c48793f4dc8ccd7828e4d88578e87b0f64abec",
        "2c8fc8669477c8f075215e4a076a4c7c150ca862"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Jan 03 23:38:21 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 03 23:38:21 2019 +0000"
      },
      "message": "Merge \"Fix long file paths for Windows\""
    },
    {
      "commit": "b708a7953d306cb79177bd79862b363292ac02e5",
      "tree": "a6fc23abbc5d383586bcb478c429dfc5cb8beb86",
      "parents": [
        "34ba791b2576047c188370b57ff391f8d3891a25",
        "ee844ad9a20fe1922ee04d9f8dfc17ed932f864d"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Dec 21 09:24:28 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Dec 21 09:24:28 2018 -0800"
      },
      "message": "Merge \"Fix/suppress incident* google-explicit-constructor warnings\" am: 6af0e228f3 am: 78085ba0a3\nam: ee844ad9a2\n\nChange-Id: I53c2fd3886e565d824e2765671fb7965f07bd08d\n"
    },
    {
      "commit": "6af0e228f3a3dccd3c7eb5d2fba16007fd710297",
      "tree": "e5b3d3625558eca65ab73d87a89c7ed63c51985b",
      "parents": [
        "63790135f49cea682497bfeb85bc5488e25f0f21",
        "7a88a938d2988a95e70ab73905f040d8c8fcc425"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Dec 21 16:30:12 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 21 16:30:12 2018 +0000"
      },
      "message": "Merge \"Fix/suppress incident* google-explicit-constructor warnings\""
    },
    {
      "commit": "fe88a7d7f2915c44107f35f3ce5a7917896ed075",
      "tree": "072ea91c1f21d159d4432ec1d018c513e5309e8f",
      "parents": [
        "222a0f4e21fb034d09257380c0a97da855657727",
        "b60a7cdc07576acd4e74613f1178b6ceb178cab5"
      ],
      "author": {
        "name": "Jack He",
        "email": "siyuanh@google.com",
        "time": "Thu Dec 20 15:04:34 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Dec 20 15:04:34 2018 -0800"
      },
      "message": "Merge \"Statsd: Enable host_supported for libstatslog\" am: 0d7970f4e9 am: 46efaea281\nam: b60a7cdc07\n\nChange-Id: I59c5e4c8e27d31ba38af827162e0adb50fc183b1\n"
    },
    {
      "commit": "0d7970f4e9e83915f4f6e2d74d7f4b44f723ef73",
      "tree": "7029a69be2e4a8b38648e23debf338f2b7757498",
      "parents": [
        "bcf293c674307a90238671edcf5c82b17e3bca62",
        "34a892d2f5d770ceea4d7a5bbb6de2bb41588f4d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 20 22:05:58 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 20 22:05:58 2018 +0000"
      },
      "message": "Merge \"Statsd: Enable host_supported for libstatslog\""
    },
    {
      "commit": "7a88a938d2988a95e70ab73905f040d8c8fcc425",
      "tree": "470255ec6f136d95eb55cf6a558b6b6bf9032a8e",
      "parents": [
        "bcf293c674307a90238671edcf5c82b17e3bca62"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Dec 20 13:45:04 2018 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Dec 20 13:45:04 2018 -0800"
      },
      "message": "Fix/suppress incident* google-explicit-constructor warnings\n\n* Add explicit to conversion constructors/operators\n* Remove redundant explicit of copy constructors\n\nBug: 28341362\nTest: make with WITH_TIDY\u003d1 DEFAULT_GLOBAL_TIDY_CHECKS\u003d-*,google-explicit-constructor\nChange-Id: I26a11bb798d25605577269ed340e97afc8566960\n"
    },
    {
      "commit": "b34e8528ca7e6aee84ba5eef9739155f658690c5",
      "tree": "4fdd8e30aa99ca95122a218207ca25a2893943a8",
      "parents": [
        "bdadd6cc4c666f3fc1ddb742a778d3b708e33b8d",
        "b9e195546ee80e46fca5e075c9b1ea069821f18a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 20 14:39:20 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 20 14:39:20 2018 +0000"
      },
      "message": "Merge \"Use vector instead of VLA to avoid uninitialized values\""
    },
    {
      "commit": "bdadd6cc4c666f3fc1ddb742a778d3b708e33b8d",
      "tree": "c09101dd5f72fad93000a7516e46184e4185f0ed",
      "parents": [
        "9ad1461eb9faebf81c62b3fdf211483081c20b99",
        "61e3730bc07e04181a01760d2eb1db834a854683"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Thu Dec 20 14:31:47 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 20 14:31:47 2018 +0000"
      },
      "message": "Merge changes Ibe09f115,Ib015669e\n\n* changes:\n  apilint: Fix API lint issues 2/2\n  apilint: Fix API lint issues\n"
    },
    {
      "commit": "34a892d2f5d770ceea4d7a5bbb6de2bb41588f4d",
      "tree": "a95ac5f92b72ad3249d04bd7e961a4deb685b702",
      "parents": [
        "783ec049091357ae892d4c62e4e75008734815e7"
      ],
      "author": {
        "name": "Jack He",
        "email": "siyuanh@google.com",
        "time": "Thu Dec 20 00:42:31 2018 -0800"
      },
      "committer": {
        "name": "Jack He",
        "email": "siyuanh@google.com",
        "time": "Thu Dec 20 00:56:15 2018 -0800"
      },
      "message": "Statsd: Enable host_supported for libstatslog\n\n* libutils must be used as a static library when compiled on host\n* Host does not have Android system properties and hence we cannot\n  use \u003ccutils/properties.h\u003e. In fact, properties.cpp is not even\n  compiled on host for libcutils. Therefore, this CL adds a check\n  for __ANDROID__ macro before including \u003csys/propoerties.h\u003e and\n  before calling properties_get_bool()\n* On host, statsd logging will be disabled since host does not\n  use statsd for anything\n\nFixes: 121294178\nTest: test drive statsd\nChange-Id: I838ff02468c650c5f7d85e68fa5008b98f08ce8c\n"
    },
    {
      "commit": "cfc7952cc8649a1b2418f6502f40cef32487464f",
      "tree": "ef3a4ad7adf71ed67ae16ad2e18607be320b37ff",
      "parents": [
        "a89f04a7421a519e2625959fa474b5cf2bcca083"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Fri Nov 23 14:57:28 2018 +0000"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Thu Dec 20 07:47:29 2018 +0000"
      },
      "message": "Include annotation property values in output.\n\nWhen editing annotations, we want the ability *not* to overwrite any\nexisting annotation properties already in place. Include any properties\nset on the annotation in the output, so that the edit_annotations script\ncan know that they\u0027re there.\n\nThe annotation properties are encoded like URL query parameters for\nconvenience; it makes them easy to encode here \u0026 subsequently decode on\nthe other side (in Python).\n\nTest: m framework-annotation-proc \u0026 inspect output.\n\n(cherry picked from commit bd7077065c211f49b090aa4250b53b58461adfd9)\n\nMerged-In: I71fb1215ad2790751be336b4955c163bb323a4a6\nChange-Id: I0b33e2b379076346ce258d93a9225a9143b7d91a\n"
    },
    {
      "commit": "b9e195546ee80e46fca5e075c9b1ea069821f18a",
      "tree": "67facfdda4183f890cd01858d5b2277cf3047b5f",
      "parents": [
        "90c5bfe0776fe185abaf2fc983f5320cb9d6a78f"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Dec 19 22:55:15 2018 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Dec 19 23:04:42 2018 -0800"
      },
      "message": "Use vector instead of VLA to avoid uninitialized values\n\nI502b34f23d61a7346d79ff0dc378add8461d2d27 added a continue before\nskip[i] was set, which left it uninitialized and caused\nnon-deterministic output of incident-section-gen incidentd and a\nnon-deterministic incidentd binary.  Use a vector instead of a\nvariable length array for skip so that it is always initialized.\n\nTest: valgrind incident-section-gen incidentd\nChange-Id: Iac9778dc8bbf4ec5540e5e2ffdaa8e2dd852d6cc\n"
    },
    {
      "commit": "2c8fc8669477c8f075215e4a076a4c7c150ca862",
      "tree": "f5b06cb76fc89b91fe41fad338ac7906c5f500ed",
      "parents": [
        "802c62150985110df7718e874e7b0a0f89dc4d8f"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Dec 13 16:56:07 2018 -0800"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Dec 19 14:07:43 2018 -0800"
      },
      "message": "Fix long file paths for Windows\n\nAllows specifying which arguments into aapt2 are file paths.\nIf the path exceeds the maximum path length for Windows, encode the path using\nthe extended-length prefix.\n\nBug: 120853927\nTest: aapt2_tests.exe\n\nChange-Id: Ibe5c1cc79a70c33c302157f2ffd54525439a910f\n"
    },
    {
      "commit": "ed2af4df00028b1cdee2a4d45b20102b46441daa",
      "tree": "c26a691f8b242ed52cdfbf9b5d09eec608129f84",
      "parents": [
        "7b2b4c838be94e6ca7cfbb255523c800da4a0cce",
        "54237ffed4e63279042084968b77cc17e13c84a8"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Dec 19 17:31:50 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 19 17:31:50 2018 +0000"
      },
      "message": "Merge \"Add actor and name parsing for overlayable\""
    },
    {
      "commit": "61e3730bc07e04181a01760d2eb1db834a854683",
      "tree": "086b9db1c7ebb4915b6d878e2c6055856d00e01d",
      "parents": [
        "2c5cacfd36128f43f5fab4f0665acf69ac049a44"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Wed Dec 19 17:11:21 2018 +0100"
      },
      "committer": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Wed Dec 19 17:27:12 2018 +0100"
      },
      "message": "apilint: Fix API lint issues 2/2\n\nFixes false positives that occur when a class in current.txt is faulty, and an\nentry for that class is then added to system-current.txt.\n\nThis was so because when parsing the previous revison\u0027s system-current.txt, we\ndid not know about the class and thus didn\u0027t look for it in current.txt, and\nthus never recorded that the error is preexisting.\n\nTo avoid that, we track all classes in system-current.txt with a matching entry\nin current.txt in the current revision, and later use that to look up all classes we\nmay have missed when examining the previous revision.\n\nTest: python tools/apilint/apilint_test.py\nChange-Id: Ibe09f1159e351e56b35b8816ce0db760de4ef791\n"
    },
    {
      "commit": "2c5cacfd36128f43f5fab4f0665acf69ac049a44",
      "tree": "c3117af188895220c1df9ee5ac5b5178d320c6ae",
      "parents": [
        "bb28a036c3cd0ef6433efb16ed99ae703bcfe4a7"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Wed Dec 19 17:10:22 2018 +0100"
      },
      "committer": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Wed Dec 19 17:27:12 2018 +0100"
      },
      "message": "apilint: Fix API lint issues\n\nFixes a bug where only the name instead of the fully qualified name was\nconsidered when looking for a class, which lead to faulty results for inner\nclasses.\n\nTest: python tools/apilint/apilint_test.py\nChange-Id: Ib015669ed3faef21d2bdd16f1e27bc55c8669d70\n"
    },
    {
      "commit": "d4dcb418634fcab4090e6952895bdd8e3e3913e0",
      "tree": "2a2aac9d8fc172bd9afa3278787f3f4fe0148ab4",
      "parents": [
        "342b64cd411087abf2e18f74f354177df730032b",
        "cd2d8e2021e1d91765f61357d9585bd6969f93bb"
      ],
      "author": {
        "name": "Anton Hansson",
        "email": "hansson@google.com",
        "time": "Wed Dec 19 10:36:08 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 19 10:36:08 2018 +0000"
      },
      "message": "Merge \"Make aapt2 dump badging print overlay info\""
    },
    {
      "commit": "2491af24a8f7195d7c2ae0b2450dcaa701852891",
      "tree": "6318ba7aada88a08b48d8293cea7aa3bd708f0e5",
      "parents": [
        "73d3d815cd5e7613735d429be7f1398a9053b9f1",
        "2296036a400e77572c0e346db1f499438d5196d5"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Dec 17 14:31:14 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Dec 17 14:31:14 2018 -0800"
      },
      "message": "Merge \"Fix performance-for-range-copy warnings\" am: bc29242288 am: 7adb73f332\nam: 2296036a40\n\nChange-Id: Ia99ea6c9633986e68340bc88983d06baa7a1c597\n"
    },
    {
      "commit": "a1b644e88cfe5319e9ada7ad24e6cd215a7ea402",
      "tree": "e4b24972d2c59b6512cd981b3edf78b03f7c1add",
      "parents": [
        "d0c404cb21de6e86329b5ceb79d1459dd8f2f4cb"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 11 11:09:20 2018 -0800"
      },
      "committer": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Dec 17 20:00:55 2018 +0000"
      },
      "message": "Fix performance-for-range-copy warnings\n\nBug: 30413223\nTest: make with WITH_TIDY\u003d1 DEFAULT_GLOBAL_TIDY_CHECKS\u003d-*,performance*\nChange-Id: Ie481e88025a7a1f3abde8ff63420d5ccd8577e52\n"
    },
    {
      "commit": "d66ecfccf6f5a1be8f934776dfe72e5bf9c779ec",
      "tree": "c523edb8be2d421c72178d2af0db7f5f29813e26",
      "parents": [
        "2822b4f42f49650b194f6561454aeb48f4f3d9d1"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Thu Dec 06 10:34:25 2018 -0800"
      },
      "committer": {
        "name": "Jack He",
        "email": "siyuanh@google.com",
        "time": "Sat Dec 15 13:52:47 2018 -0800"
      },
      "message": "Add byte size of the bytes fields to statslog c++ APIs.\n\nThe proto binary data can contain \u0027\\0\u0027s and in the native layer,\nthe current liblog api would convert that into string and thus\nthe data is truncated.\n\nThis CL adds a \"size_t bytes_field_len\" after the bytes fields so that\nwe can correctly pass the data from JAVA to native.\n\nJava StatsLog.write() APIs remain the same\n\nBug: 120635548\nTest: test_drive with atom 103\nChange-Id: I34f1c4ddd6a4ec5f3604b0c67a47a5399e3c6ddd\nMerged-In: I34f1c4ddd6a4ec5f3604b0c67a47a5399e3c6ddd\n(cherry picked from commit 1fe9f594984b47144b958f0ac423eeffc56b62ea)\n"
    },
    {
      "commit": "2822b4f42f49650b194f6561454aeb48f4f3d9d1",
      "tree": "76a4e9cc9ad13c0acd8878c86a5ce4594cd4c003",
      "parents": [
        "046b51295ea28500333794fb93b6ce96ad71c6af"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Thu Nov 29 09:39:45 2018 -0800"
      },
      "committer": {
        "name": "Jack He",
        "email": "siyuanh@google.com",
        "time": "Sat Dec 15 13:52:27 2018 -0800"
      },
      "message": "Skip writing message field in an atom if it\u0027s empty\n\nTest: unit test added\nBug: 120635548\nChange-Id: I825b1ce526944a20fe65705508ad180ece37492c\nMerged-In: I825b1ce526944a20fe65705508ad180ece37492c\n(cherry picked from commit 8e6f9983009eadf32d05ad65e38906d3985bc9ba)\n"
    },
    {
      "commit": "8b71c74894462fc68f2ebe551b82615d0cd67184",
      "tree": "ec08fbb4f907b0572f78fa30a45cce2d9e688ec9",
      "parents": [
        "cb61d10c905f6ca40ae21fd8f0fb7efb4ae90444"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed Oct 24 12:15:56 2018 -0700"
      },
      "committer": {
        "name": "Jack He",
        "email": "siyuanh@google.com",
        "time": "Sat Dec 15 13:51:08 2018 -0800"
      },
      "message": "Allow atoms to log fields in bytes format.\n\nThere are an increasing number of requests to log data in complex format to statsd, while the data\nis not expected to be parsed or aggregated by statsd and only to be uploaded as events.\n\nInstead of making an exception for each of these cases in a hard coded way, this CL add a feature to\nannotate these field in atoms.proto and the stats-log-api-gen tool will produce byte array\ninterfaces for them.\n\nNote that log_msg does not have byte array type, and only has string type, when statsd receives the\nlog, these fields are in string type. Only when the atom is written to proto, we will check if this\nfield should be bytes field and write it to protobuf in message format.\n\nChange-Id: If53dd95c5826710c76d7fe982bf951a435dfc738\nMerged-In: If53dd95c5826710c76d7fe982bf951a435dfc738\nFix: 118386797\nBug: 120635548\nTest: unit test \u0026 manual test\n(cherry picked from commit bbdd67d19f4912fbec00220b22e44c68eff5ab3f)\n"
    },
    {
      "commit": "54237ffed4e63279042084968b77cc17e13c84a8",
      "tree": "4fa2731f7d0174066653690725f68377895b0b05",
      "parents": [
        "066f0314793d7beac785d0bd736eb01de88c3f97"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Dec 13 15:44:29 2018 -0800"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Dec 13 16:05:10 2018 -0800"
      },
      "message": "Add actor and name parsing for overlayable\n\nAdd parsing of two overlayable attributes:\n name : The unnique identifying name of the overlayable set of resources\n actor: The component responsible for enabling and disabling overlays\n        targeting the specified set of resources\n\nBug: 110869880\nBug: 119390855\nTest: m -j aapt2_tests\nChange-Id: Id42463e2b92b69034fb39cd29bc8606affb61ba7\n"
    },
    {
      "commit": "7690d0d4eea0ffa429351b0b1caa34cdb3e0d37f",
      "tree": "5e4ea8b06eb395713262eb453a1de875c4a9d28e",
      "parents": [
        "b85be43648150015620fcc6bb24eb07433fb4628"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Thu Dec 13 22:08:29 2018 +0100"
      },
      "committer": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Thu Dec 13 22:35:00 2018 +0100"
      },
      "message": "API Lint: Add support for base current.txt\n\nAllows specifying a base current.txt and previous.txt file when linting\nsystem-current.txt and test-current.txt to avoid false positive error\nmessages due to public API members not being duplicated in the respective\nnon-public APIs\n\nTest: python tools/apilint/apilint.py --base-current\u003dapi/current.txt api/system-current.txt\nChange-Id: I306a99b1423584ef3fcdc9272a83cb5eacc37227\n"
    },
    {
      "commit": "267d6ac11e3066dff3c3b664891bae468239ebe8",
      "tree": "4732e1f246d5e7b695b0567d1212b98dfa1ce150",
      "parents": [
        "81e6e1dc1fed99d621ce0984f2ad647b52558838",
        "1bb1fe068a7e719711963c3cf3a50209e083a17f"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Dec 13 00:07:32 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 13 00:07:32 2018 +0000"
      },
      "message": "Merge \"Refactor policy parsing\""
    },
    {
      "commit": "cd2d8e2021e1d91765f61357d9585bd6969f93bb",
      "tree": "b458969b8f6c188d3b5946e6e4aa5178c6cb2655",
      "parents": [
        "754fbf92a11e54e3ee437469801265ed7beaa5db"
      ],
      "author": {
        "name": "Anton Hansson",
        "email": "hansson@google.com",
        "time": "Tue Dec 11 13:52:17 2018 +0000"
      },
      "committer": {
        "name": "Anton Hansson",
        "email": "hansson@google.com",
        "time": "Wed Dec 12 13:17:26 2018 +0000"
      },
      "message": "Make aapt2 dump badging print overlay info\n\nThis adds the contents of the manifest \u003coverlay\u003e tag to the\noutput of aapt2 dump badging.\n\nSample output:\n  overlay: targetPackage\u003d\u0027android\u0027 priority\u003d\u00271\u0027 isStatic\u003d\u0027false\u0027\n\nBug: 119938467\nTest: aapt2 dump badging \\\n  $ANDROID_PRODUCT_OUT/vendor/overlay/framework-res__auto_generated_rro.apk\nChange-Id: Ie9d904e6206ff8cf092744e630ee6f496672673c\n"
    },
    {
      "commit": "745bdd02cda76324cccf14fb8aa9c24af87f22cb",
      "tree": "afaaad01be3f4ef6597ec483714cf39dda3b5557",
      "parents": [
        "754fbf92a11e54e3ee437469801265ed7beaa5db",
        "96c419f90686ea7f16cde37cf1a137ae6cddf4c6"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Wed Dec 12 11:05:53 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 12 11:05:53 2018 +0000"
      },
      "message": "Merge \"Implement signature check.\""
    },
    {
      "commit": "cc50ce302f4254d6a0f8bb27e88fb719cb5ac8e3",
      "tree": "d7d95eaf5253a03a82abe4b417d86b835a4fa20a",
      "parents": [
        "02e7db9b6adfb83b714cd11c22f54c1eec9c084d",
        "171a723c10cf6e5d0218874034bc5975d1fea210"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 12 10:31:21 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 12 10:31:21 2018 +0000"
      },
      "message": "Merge \"Code generation for @InspectableProperty\""
    },
    {
      "commit": "5374655451456d4c9984067524182e588f05e944",
      "tree": "0753eec9f577d5708825fb8fc8f58f458cd4a569",
      "parents": [
        "c3a79dcf45f1c15a1e3cc0f5d57d95f5698ccead",
        "82b999a59c61f12523011a25f4a40f90cb39ee85"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 11 19:34:07 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Dec 11 19:34:07 2018 -0800"
      },
      "message": "Merge \"Fix cert-dcl16-c clang-tidy warnings.\" am: 20b64c4bc7 am: 3038f743bf\nam: 82b999a59c\n\nChange-Id: Ie4bb31fc7366d65e92209c31f6721e20c8538e9a\n"
    },
    {
      "commit": "20b64c4bc707c99ebe32d44f4ffb1df27484ab9f",
      "tree": "fae403d7bacd763b8e5dde0771493c65ace599b6",
      "parents": [
        "833bc7dba78e5727f79048016204558057c2bfc1",
        "054dab1d476eab03823d4cbce40b1b081a65bf46"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Dec 12 02:58:22 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 12 02:58:22 2018 +0000"
      },
      "message": "Merge \"Fix cert-dcl16-c clang-tidy warnings.\""
    },
    {
      "commit": "171a723c10cf6e5d0218874034bc5975d1fea210",
      "tree": "6b6e325591ce6ae7fb943d1107583759ad0ec9a8",
      "parents": [
        "9943de9fb9a6c338d2d06d237e0cc9938caa4c63"
      ],
      "author": {
        "name": "Ashley Rose",
        "email": "ashleyrose@google.com",
        "time": "Tue Dec 11 17:32:58 2018 -0500"
      },
      "committer": {
        "name": "Ashley Rose",
        "email": "ashleyrose@google.com",
        "time": "Tue Dec 11 23:57:10 2018 +0000"
      },
      "message": "Code generation for @InspectableProperty\n\nThis does not include the annotation processing needed to build the\nproperty model the generator consumes or support for IntEnumMapping or\nIntFlagMapping. Support will be added in subsequent CLs.\n\nBug: 117616612\nTest: atest --host view-inspector-annotation-processor-test\nChange-Id: I1d7829a12c7243645a96a32c8fc22b13c70c64e1\n"
    },
    {
      "commit": "1bb1fe068a7e719711963c3cf3a50209e083a17f",
      "tree": "70a6d9fbaa6e7f03626b92d345f73b48fcc3fa4a",
      "parents": [
        "c622083df99a87afef8348dd8e4bdfecf3050d94"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Nov 16 11:21:41 2018 -0800"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue Dec 11 13:48:45 2018 -0800"
      },
      "message": "Refactor policy parsing\n\nThis change removes the ability for an overlayable resource to be\ndefined in multiple policy blocks within the same overlayable. This\nchange also changes aapt2 to use a bit mask to keep track of the parsed\npolicies.\n\nBug: 110869880\nBug: 120298168\nTest: aapt2_tests\nChange-Id: Ie26cd913f94a16c0b312f222bccfa48f62feceaa\n"
    },
    {
      "commit": "054dab1d476eab03823d4cbce40b1b081a65bf46",
      "tree": "06d7f8189b94f2899cb27d97723cc8e392fb78b4",
      "parents": [
        "3cfdb9484505f565025c8c2646b9fc2c7ceae7b9"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Dec 10 13:52:46 2018 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 11 11:27:17 2018 -0800"
      },
      "message": "Fix cert-dcl16-c clang-tidy warnings.\n\nBug: 120614316\nTest: make with WITH_TIDY\u003d1 DEFAULT_GLOBAL_TIDY_CHECKS\u003d-*,cert-dcl16-c\nChange-Id: I2dc262d3407aafa969e921236dc3fc3ae60eb9d4\n"
    },
    {
      "commit": "96c419f90686ea7f16cde37cf1a137ae6cddf4c6",
      "tree": "621d63aa561fb72a4ca02d5fb2c8e6adf06686c0",
      "parents": [
        "9a7fdeb32beab2863f234941773c2bc77cd9bd4c"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Tue Dec 04 11:52:42 2018 +0000"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Tue Dec 11 17:06:27 2018 +0000"
      },
      "message": "Implement signature check.\n\nCurrently, we just have debug keys, and always fail verification on\nuser builds. Production keys will be added later.\n\nThis CL also includes some helper scripts:\n- Used to generate debug keys, for the record\n- To sign data using the debug keys\n- To verify base64 encoded data, used for debugging\n\nTest: atest CtsSignedConfigHostTestCases\nNote: The test also relies on some other changes going in too; it has\nbeen verified with all relevant change in place, but will not pass at\nHEAD quite yet.\n\nBug: 110509075\nChange-Id: I8bd420c44a0a523cbefb21f90c49550c25beb0a6\n"
    },
    {
      "commit": "7a7a823422762fe2e6d5f5888b9ca29d2e81ece1",
      "tree": "ae0422552c5c897b07ca2a59933b84798186492f",
      "parents": [
        "7b3b969f3a4c67b71dc74a50dc8cc4ad242efbcd",
        "37d00de39001fbf790d01dcbd23eb434e7a470f6"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Dec 11 06:08:23 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Dec 11 06:08:23 2018 -0800"
      },
      "message": "Merge \"Switch last c.a.i18n.phonenumbers hiddenapi entries to annotations\" am: 15152e7d95 am: f0e9bc79dd\nam: 37d00de390\n\nChange-Id: If39b82b838f2a71a69f32eba98320726758642fe\n"
    },
    {
      "commit": "de080eb7b0374882cfe3dbea01540f477ff59e5d",
      "tree": "328ec34832a38f40de0a9a8c037062b76d77fb6c",
      "parents": [
        "52fe5dd97fb749aad4f570914a22aebf8d0de1c1"
      ],
      "author": {
        "name": "Ashley Rose",
        "email": "ashleyrose@google.com",
        "time": "Fri Dec 07 17:20:25 2018 -0500"
      },
      "committer": {
        "name": "Ashley Rose",
        "email": "ashleyrose@google.com",
        "time": "Mon Dec 10 23:30:43 2018 +0000"
      },
      "message": "Annotation processor for @InspectableNodeName\n\nBug: 117616612\nTest: atest --host view-inspector-annotation-processor-test\nChange-Id: I48f62544655adbc33e3ccdd3301d6dc471fe4163\n"
    },
    {
      "commit": "a96d8d0b78b93a428edad06b0202cb38741213ef",
      "tree": "4ac63e6389b1ea0905d2f3690304e4a5a6dae7b9",
      "parents": [
        "7597ca884d9c464a9b6f833b9183374582670155",
        "1fe9f594984b47144b958f0ac423eeffc56b62ea"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 10 19:46:10 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 10 19:46:10 2018 +0000"
      },
      "message": "Merge \"Add byte size of the bytes fields to statslog c++ APIs.\""
    },
    {
      "commit": "352956b07e1cd5d7bdc3f3e747679fa49859f8ee",
      "tree": "7416429ef98a3da5a289606d6b10395a87818654",
      "parents": [
        "17f9b9bfb66be366e874ed98d52a622e0b97df2a"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Dec 07 11:52:19 2018 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Dec 10 16:05:54 2018 +0000"
      },
      "message": "Switch last c.a.i18n.phonenumbers hiddenapi entries to annotations\n\nPrevious changes could not remove these entries as they are implicit\nmethods, i.e. are not present in the source, and so could not be\nannotated. That is no longer true and so these entries can now be\nremoved.\n\nThis was tested by making and then manually checking that the generated\nout/target/common/obj/PACKAGING/hiddenapi-light-greylist.txt was the\nsame (after sorting) before and after this change.\n\nBug: 117818301\nBug: 119861512\nTest: as above\nChange-Id: Ic33c693f50cac011332c5ba5a5c0e2b6562e6ef8\n"
    },
    {
      "commit": "1fe9f594984b47144b958f0ac423eeffc56b62ea",
      "tree": "38ab2a5a130b9a327f294cef65603250b41ad23d",
      "parents": [
        "b53030f983b8f606a6fed7527605073613895f67"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Thu Dec 06 10:34:25 2018 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Thu Dec 06 13:06:04 2018 -0800"
      },
      "message": "Add byte size of the bytes fields to statslog c++ APIs.\n\nThe proto binary data can contain \u0027\\0\u0027s and in the native layer,\nthe current liblog api would convert that into string and thus\nthe data is truncated.\n\nThis CL adds a \"size_t bytes_field_len\" after the bytes fields so that\nwe can correctly pass the data from JAVA to native.\n\nJava StatsLog.write() APIs remain the same\n\nTest: test_drive with atom 103\nChange-Id: I34f1c4ddd6a4ec5f3604b0c67a47a5399e3c6ddd\n"
    },
    {
      "commit": "764acc461c88a836a1c12569a5a643b2541763cc",
      "tree": "2c5dc201f80fdfaf8428ab5cb7b0bd0945247b2e",
      "parents": [
        "f4764351fc419bdcbe4f767f3b7aca285343f1ca",
        "75e20dda2b1ef3d2593b02f6a366a02656c1c89d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 05 07:06:21 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 05 07:06:21 2018 +0000"
      },
      "message": "Merge \"Encoding of \u003coverlayable\u003e and \u003cpolicy\u003e\""
    },
    {
      "commit": "75e20dda2b1ef3d2593b02f6a366a02656c1c89d",
      "tree": "8fbbab15ed762cd27097f38e4db0279d679f14eb",
      "parents": [
        "7208efc83baa70999d2ab264c289b0a38d716ed5"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue Nov 06 16:39:36 2018 -0800"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue Dec 04 16:45:26 2018 -0800"
      },
      "message": "Encoding of \u003coverlayable\u003e and \u003cpolicy\u003e\n\nThis change defines two new chunks for encoding overlayable information.\nRES_TABLE_OVERLAYABLE_POLICY_TYPE contains flags that represent\nrestrictions enforced on overlays that try to overlay a specific set of\nresource ids. The chunk header is followed by ResTable_ref for each id\nthat belongs to the policy type. A policy chunk will be created for\nevery unique combination of policies that are defined in overlayable\ndeclarations.\n\nRES_TABLE_OVERLAYABLE_TYPE holds policy blocks. Since \u003coverlayable\u003e\ndoes not currently have any attributes, only one overlayable block is\nencoded in an APK.\n\nThis change also removes the SPEC_OVERLAYABLE flag because the runtime\ndoes not use the flag, and the overlayable chunk encoding renders it\nobsolete.\n\nBug: 110869880\nBug: 117545186\nTest: libandroidfw_tests and aapt2_tests\nChange-Id: I45ae9bf4176699f14c85e2b7a2e8560185d8a0b8\n"
    },
    {
      "commit": "0bf7ab1631aeffa44ef827bdbd917fdf2bc4c810",
      "tree": "3f5b1e48c172afb44671dba0fd74fe918c5ace98",
      "parents": [
        "b4287e0c49a700b9dcd937cfece594b271afe922",
        "f29f0de34c7423efc0c6e7a3328078d0c4f17959"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Dec 04 03:07:34 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Dec 04 03:07:34 2018 -0800"
      },
      "message": "Merge \"hiddenapi: Add constants for \u0027greylist-max-p\u0027\" am: ec62f08f8c am: 8a822605d2\nam: f29f0de34c\n\nChange-Id: I31647f9e58e86d1bb18891534fcf1e3d4226298e\n"
    },
    {
      "commit": "ec62f08f8c0a5a947cd2042854e2b5055a291fa5",
      "tree": "dfc3576a4c1fab4cde5cdc25eba55e322a7dde57",
      "parents": [
        "08cbafefdc4924e1619da99082e8af3b94cc9ab3",
        "5cd148fc7ae213ceda868c22ee5c573b5b1a47c9"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Dec 04 10:07:59 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 04 10:07:59 2018 +0000"
      },
      "message": "Merge \"hiddenapi: Add constants for \u0027greylist-max-p\u0027\""
    },
    {
      "commit": "719883458c156360bd72139d565b40026257abaf",
      "tree": "a6e286e2daa71bd6cf923139d91b427380ad41a0",
      "parents": [
        "dccf3cacd7d4caaca65fa1ec03d5069d00a12d40",
        "91d3383b45b82458598f5ff3b01d3b1fbacffa48"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@google.com",
        "time": "Mon Dec 03 15:15:24 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Dec 03 15:15:24 2018 -0800"
      },
      "message": "Merge \"People don\u0027t read warnings.\" am: ea41708f12 am: 602393351b\nam: 91d3383b45\n\nChange-Id: I5d4770a434cff9e0b10c9a0f36128d285b0f67c3\n"
    },
    {
      "commit": "be8607dcd543b9dabcd9a2d950e3cfa1eb60ef60",
      "tree": "6c760c790123644e9b2aebff346d8ade9969e05a",
      "parents": [
        "e8f76a36429349736a56da423d38db3bd908b922"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Mon Dec 03 11:28:42 2018 -0800"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Mon Dec 03 12:01:24 2018 -0800"
      },
      "message": "Add @hide support for styleable attributes\n\nAAPT2 generates documentation for styleables. The documentation contains\nreferences to the attributes of the styleable. If the attributes are\nmarked @hide, remove the references to the attributes in the generated\ncoments.\n\nBug: 120262117\nTest: m -j offline-sdk-docs\nChange-Id: I541002077b17771d89caead04df2f4ae66c623f0\n"
    },
    {
      "commit": "aaaf1b7a88894a1b7cddd4b830245b7985ca7ee1",
      "tree": "bff0177ab3ddac93893c93b27c4a396e7594f689",
      "parents": [
        "4627ad60204e9afae1b531007c1a35b7e5577695"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Dec 03 10:56:56 2018 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@google.com",
        "time": "Mon Dec 03 10:58:42 2018 -0700"
      },
      "message": "People don\u0027t read warnings.\n\nBug: 113136846\nTest: manual\nChange-Id: If7e313b4f0fa90875795b24817553bbd9a8c60ff\n"
    },
    {
      "commit": "96116e6fd7b8419fb3a11f68a26c6e230c656ddc",
      "tree": "26f5be569e49a4b1bb4876112b80697f3748e54c",
      "parents": [
        "53753b943463280e3217997435241a5c1f11c2d7",
        "ab0802a50a0d85ec91234cf976f0f6b2054312fa"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Dec 03 07:14:34 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Dec 03 07:14:34 2018 -0800"
      },
      "message": "Merge \"Turn hidden API lists into a single CSV\" am: 0edec143d9 am: 7423a90d8c\nam: ab0802a50a\n\nChange-Id: Id5540ddacf047de8dd106bdd22c708b2a00b96eb\n"
    },
    {
      "commit": "3d31b4e018742c492c3ebc8d52272e26d873000c",
      "tree": "055095519d992b6bd625c594afae6801c8b64ff8",
      "parents": [
        "3ce70560d8eeb425fa3fdae5c4d5c7b061637388",
        "41773b73ea02db5b2dc19b6077a5b965feeac374"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 30 20:18:25 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 30 20:18:25 2018 +0000"
      },
      "message": "Merge \"Don\u0027t rely on fallthrough in incident_section_gen\""
    },
    {
      "commit": "bd7077065c211f49b090aa4250b53b58461adfd9",
      "tree": "f97634299fd45f85b7aabe02d369ffb9ca1a433a",
      "parents": [
        "0ba5e3d6cbf9e5666a0db15d330f5424c1fad391"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Fri Nov 23 14:57:28 2018 +0000"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Fri Nov 30 09:00:43 2018 +0000"
      },
      "message": "Include annotation property values in output.\n\nWhen editing annotations, we want the ability *not* to overwrite any\nexisting annotation properties already in place. Include any properties\nset on the annotation in the output, so that the edit_annotations script\ncan know that they\u0027re there.\n\nThe annotation properties are encoded like URL query parameters for\nconvenience; it makes them easy to encode here \u0026 subsequently decode on\nthe other side (in Python).\n\nTest: m framework-annotation-proc \u0026 inpsect output.\nChange-Id: I71fb1215ad2790751be336b4955c163bb323a4a6\n"
    },
    {
      "commit": "2a0e196a54571ed70fe2d856ea9e4220bcc52505",
      "tree": "4209aa31ca1553627d62ff8c23e46951a8acfd1b",
      "parents": [
        "8faacd383d997996273f289218b519a23f700f46",
        "795bfbaabfac07be7063b12789a5286ac1ebf579"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Fri Nov 30 01:25:54 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 30 01:25:54 2018 +0000"
      },
      "message": "Merge changes Ibc9ada6f,I2c5fce16\n\n* changes:\n  Power model calculation based on batterystats data.\n  Parse the raw batterystats into an ActivityReport object.\n"
    },
    {
      "commit": "f69ca4e970166c2c26f5f6b5fef90daf1112db89",
      "tree": "cfbdde4e7259f59b948a3026f928a2f4fabb1c1d",
      "parents": [
        "ab4a8d2eb702d417ec7633baad2f6ea6dfe8b148",
        "8e6f9983009eadf32d05ad65e38906d3985bc9ba"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 29 22:52:57 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 29 22:52:57 2018 +0000"
      },
      "message": "Merge \"Skip writing message field in an atom if it\u0027s empty\""
    },
    {
      "commit": "626a973099ade26adffbb81945986a490782187d",
      "tree": "fb5b0711c4dcac051adf38d3ffbf781ff4cab72f",
      "parents": [
        "d930083b079269fa3cfe7a867eb5dc26ccd8f1e2",
        "6e6208769903f2fd466250033abf7084fbef550e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 29 21:02:10 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 29 21:02:10 2018 +0000"
      },
      "message": "Merge changes If2dee6bf,Ifeae68ce,Ib0f7aceb,I79802f91\n\n* changes:\n  Add the concept of apps to the battery stats parser.\n  Class to parse the raw batterystats csv.\n  Add csv parser for the power profile library.\n  Off-device library for the power model.\n"
    },
    {
      "commit": "8e6f9983009eadf32d05ad65e38906d3985bc9ba",
      "tree": "347aee3288ccf837ddb4f8edb6eb1217c4af1dd4",
      "parents": [
        "d8a9db84862b7f9a8d2dc50373e7642b818862f4"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Thu Nov 29 09:39:45 2018 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Thu Nov 29 10:59:57 2018 -0800"
      },
      "message": "Skip writing message field in an atom if it\u0027s empty\n\nTest: unit test added\nChange-Id: I825b1ce526944a20fe65705508ad180ece37492c\n"
    },
    {
      "commit": "795bfbaabfac07be7063b12789a5286ac1ebf579",
      "tree": "7ac092bdba8e9914b7f9b1d76756266ad44a3360",
      "parents": [
        "68cf7a9e196d1702082a61f02ae259a59c0fe800"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Fri Nov 16 17:41:09 2018 -0800"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Thu Nov 29 10:48:26 2018 -0800"
      },
      "message": "Power model calculation based on batterystats data.\n\nSimilar to the ActivityReport, the PowerReport contains the power\nusage for a device.  To do the calculations, each of the\nComponentActivity objects are called, giving them the whole activity\ninfo (in case they need to apportion blame) and the PowerProfile.\nFrom that, they compute the per-component power usage, which is\nthen summed up into the AppPower and PowerReport objects.\n\nTest: atest frameworks/base/tools/powermodel --host\nChange-Id: Ibc9ada6f7f4a667152fc4af388f04766125ca74c\n"
    },
    {
      "commit": "6e6208769903f2fd466250033abf7084fbef550e",
      "tree": "2d115e1e0fab4fcc4e5964bb5769216d69c25256",
      "parents": [
        "a3f265fa2e28a2ea1f4fc0e7eeea64bbb1423028"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Fri Nov 16 16:26:13 2018 -0800"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Thu Nov 29 10:48:26 2018 -0800"
      },
      "message": "Add the concept of apps to the battery stats parser.\n\nAttributionKey is how we identify an app.  It contains either\na set of package names, read from the uid records from batterystats\n(or later UidMap from statsd), or one of the hard coded SpecialApps.\n\nTest: atest frameworks/base/tools/powermodel --host\nChange-Id: If2dee6bffd2d3dafccfeff5c92bafc651b356b15\n"
    },
    {
      "commit": "68cf7a9e196d1702082a61f02ae259a59c0fe800",
      "tree": "375f0ffa6117d2b162981c457bf8c538e39369fd",
      "parents": [
        "6e6208769903f2fd466250033abf7084fbef550e"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Fri Nov 16 17:27:01 2018 -0800"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Thu Nov 29 10:48:26 2018 -0800"
      },
      "message": "Parse the raw batterystats into an ActivityReport object.\n\nFor each app that appears in the batterystats data, there is an AppActivity\nobject (which subclasses from AppInfo, because the needs of the upcoming\nPowerReport object are similar).  Inside the AppActivity, there are\nComponentActivity objects.  Each power using component has a ComponentActivity\nfor the fields required.  The additional Report objects in RawBatteryStats are\nalso added here.\n\nThis change usess modem data as a proof of concept. The exact fields in it\nmay evolve, even though the calculation uses tx and rx packets, the final power\ncalculation uses time, and putting the batterystats apportioning logic in the\nbatterystats handling code seems better than what we\u0027re doing here.  Anyway,\nthat can be iterated upon.\n\nTest: atest frameworks/base/tools/powermodel --host\nChange-Id: I2c5fce16d4fef3628d64107562d6cf9ea4edbbc2\n"
    },
    {
      "commit": "41773b73ea02db5b2dc19b6077a5b965feeac374",
      "tree": "a0c8f06d65bda3c31deee6bc755775b68e4324b2",
      "parents": [
        "edc46f4239c3f7410468c115d1604e5c871b8809"
      ],
      "author": {
        "name": "Robin Lee",
        "email": "rgl@google.com",
        "time": "Thu Nov 29 14:38:30 2018 +0100"
      },
      "committer": {
        "name": "Robin Lee",
        "email": "rgl@google.com",
        "time": "Thu Nov 29 19:11:41 2018 +0100"
      },
      "message": "Don\u0027t rely on fallthrough in incident_section_gen\n\nSilences the following warning during build:\n\nframeworks/base/tools/incident_section_gen/main.cpp:265:13:\n    warning: unannotated fall-through between switch labels\n[-Wimplicit-fallthrough]\n            default:\n            ^\nframeworks/base/tools/incident_section_gen/main.cpp:265:13:\n    note: insert \u0027GOOGLE_FALLTHROUGH_INTENDED;\u0027 to silence this warning\n            default:\n            ^\n            GOOGLE_FALLTHROUGH_INTENDED;\n\nframeworks/base/tools/incident_section_gen/main.cpp:265:13:\n    note: insert \u0027break;\u0027 to avoid fall-through\n            default:\n            ^\n            break;\n\nTest: make -j50 2\u003e\u00261 | grep incident_section\nChange-Id: Ie59510025e59e96f0763726794ff19dae595c672\n"
    },
    {
      "commit": "da1293aba95a63aff11927e1b8b09743b3de1944",
      "tree": "43f2a852f125f789e6421e2060529343715370f1",
      "parents": [
        "46f1f376e5e8fa0218a4c82d95a485b1909718c7",
        "da53a737cab7126917fb654b54bb74f5bb48f2bb"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Nov 29 08:34:17 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Nov 29 08:34:17 2018 -0800"
      },
      "message": "Merge changes from topic \"libcore-remaining-hiddenapi\" am: 74c171b4da am: a51da7d3be\nam: da53a737ca\n\nChange-Id: I7e5ca251a6c15ea6f040897a8e5cf4c653f4ddd1\n"
    },
    {
      "commit": "5cd148fc7ae213ceda868c22ee5c573b5b1a47c9",
      "tree": "b10725627f827ff755006452fb828ff6b7ff5f52",
      "parents": [
        "89bf0f28bf8dfe728083913f641202f103af9bf6"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Nov 01 09:54:25 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Nov 29 15:43:02 2018 +0000"
      },
      "message": "hiddenapi: Add constants for \u0027greylist-max-p\u0027\n\nNew category of hidden API has been created. Update the script\ngenerate_hiddenapi_lists.py with the new flag name.\n\nTest: m, phone boots\nChange-Id: I79e5478678880939e20e500cb8dad9b2a56fc84f\n"
    },
    {
      "commit": "89bf0f28bf8dfe728083913f641202f103af9bf6",
      "tree": "c90fde6bc79ceb1dd0cce4dbb54c9f49fd524cc2",
      "parents": [
        "74c171b4daa481301152f268e2f7cbdd7960b325"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Oct 30 18:21:24 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Nov 29 15:43:01 2018 +0000"
      },
      "message": "Turn hidden API lists into a single CSV\n\nMaintaining multiple text files has become too cumbersome as adding\neach new category of API requires changes across many projects.\nThis patch changes generate_hiddenapi_lists.py to produce a single\nCSV file in the format:\n\n  \u003capi_signature\u003e,\u003cflag1\u003e,...,\u003cflagN\u003e\n\nIt can accept legacy API list files as input (for existing\nframeworks/base/config/hiddenapi-*.txt files) as well as per-package\nCSVs produced by class2greylist.\n\nTest: m, check lists have not changed\nTest: phone boots\nTest: tools/hiddenapi/generate_hiddenapi_lists_test.py\nChange-Id: Iebcef426ec93ea1d72b662bbff91d4e068fa0a70\n"
    },
    {
      "commit": "00537c15e876d88a967d9f656ea8fadb1a4015ef",
      "tree": "6a3f41d6b9b7b55dfa68029d7c8697a4c8b098c3",
      "parents": [
        "900ab8accef15f3a7622f0edccd53e99c44c03b7"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Nov 28 12:22:14 2018 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Nov 29 09:41:56 2018 +0000"
      },
      "message": "Prevent hiddenapi entries being added for libcore related projects\n\nThe libcore related projects (see below) have been (mostly) switched\nover to use UnsupportedAppUsage annotations, This change will prevent\nentries for those projects being added to a config/hiddenapi-* file.\n\n* libcore\n* external/bouncycastle\n* external/conscrypt\n* external/icu\n* external/okhttp\n* external/libphonenumber - still has a couple of entries in\n      config/hiddenapi-light-greylist.txt due to limitations in\n      UnsupportedAppUsage/class2greylist.\n\nTested by attempting to upload the file with entries for libcore\nprojects and without those entries and checking that the behavior\nis expected.\n\nTest: see above\nBug: 117818301\nChange-Id: I67a30b307e12e842b28cfb2160fab0029868fa06\n"
    },
    {
      "commit": "a3f265fa2e28a2ea1f4fc0e7eeea64bbb1423028",
      "tree": "ae107465017db127872ecae4398ce14fdc650a84",
      "parents": [
        "7d1851fe49b2f923bb33f2a2db2f0baeb38b413b"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Fri Nov 16 16:15:31 2018 -0800"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Wed Nov 28 13:01:47 2018 -0800"
      },
      "message": "Class to parse the raw batterystats csv.\n\nThis parser builds a set of objects from the csv by looking\nat the annotations on the fields.  Each line in the csv\ncorresponds to a Record object.\n\nTest: atest frameworks/base/tools/powermodel --host\nChange-Id: Ifeae68ce3bc3a6ea9330ff924204f016bff20663\n"
    },
    {
      "commit": "7d1851fe49b2f923bb33f2a2db2f0baeb38b413b",
      "tree": "c441ffb622077e0c291b9dc7d94a81579e123073",
      "parents": [
        "9112a5e07a82d0e27d91e34971dc7afce53542f9"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Fri Nov 16 16:08:15 2018 -0800"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Wed Nov 28 12:34:31 2018 -0800"
      },
      "message": "Add csv parser for the power profile library.\n\nThere are enough variants of csv, and it\u0027s simple enough that\nit\u0027s easier to just have our own parser than to introduce a\ndependency on some other library, as this library will be used\nin a variety of environments.\n\nTest: atest frameworks/base/tools/powermodel --host\nChange-Id: Ib0f7aceb2a58b58f447f6bcef5c95729303dee8a\n"
    },
    {
      "commit": "9112a5e07a82d0e27d91e34971dc7afce53542f9",
      "tree": "bff058569e07a5a2dcbadea6f37e112222939c92",
      "parents": [
        "5af89dfbd56d6ca829c1c5c31a3e364f1eab0561"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Fri Nov 16 15:56:37 2018 -0800"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Wed Nov 28 12:06:31 2018 -0800"
      },
      "message": "Off-device library for the power model.\n\nThis first CL adds a class, PowerProfile that parses the power\nprofile xml file into a set of individual *Profile classes, one\nfor each of the hardware \"components.\"\n\nThere will be more to come.  This library will be used to compute\nthe power model from a batterystats or statsd dump, with abstractions\nso clients don\u0027t need to know all of the nuances of batterystats\u0027\nold versions, or statsd\u0027s configs.\n\nTest: atest frameworks/base/tools/powermodel --host\nChange-Id: I79802f91234b09539072d10f15534cef391fe04a\n"
    },
    {
      "commit": "86445841ac90e04941dbc8dad34f2a893a2e0f8b",
      "tree": "8cff063d0f414bc5721cf3e2b0e72b72c37ff115",
      "parents": [
        "9ba4a5ceeaf475d742eb06c97ec118b64066d878"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Nov 27 17:33:42 2018 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Nov 27 17:36:07 2018 -0700"
      },
      "message": "Guide towards Context.createPackageContextAsUser().\n\nIt\u0027s a better alternative that should be used instead of adding\nnew \"ForUser\" or \"AsUser\" methods.\n\nBug: 115654727\nTest: manual\nChange-Id: I8742c2ef42d743ef69f8f7a91378f498fdc81e43\n"
    },
    {
      "commit": "2f5dd12af0c78ba077a9dc2b9cf77b772b618cd1",
      "tree": "8e3bfa22f96a7d8ed6a72a5f293e8c167f1a089a",
      "parents": [
        "abbcfb2dba6517d19455ce565a782977b827b11f"
      ],
      "author": {
        "name": "Anton Hansson",
        "email": "hansson@google.com",
        "time": "Fri Nov 23 15:21:20 2018 +0000"
      },
      "committer": {
        "name": "Anton Hansson",
        "email": "hansson@google.com",
        "time": "Fri Nov 23 15:25:52 2018 +0000"
      },
      "message": "Add linter for strings attribute names\n\nOnly one bad example for now, which is a misspelling that\u0027s not\nentirely uncommon and can lead to real problems (see linked bug).\n\nExample output:\nLine 58: \u0027my_new\u0027: Misspelled \u003cstring\u003e attribute.\n        Actual: translateable\n        Example: translatable\n\nBug: 119884572\nTest: with a misspelled attribute\nChange-Id: If61412fe318a34191920781c4834584363080e11\n"
    },
    {
      "commit": "19954a261cdc6f1022faa2fca16f5b62660c4c3d",
      "tree": "71adf5c0aa7114e18ca6ce0c6cf5c390eac80e61",
      "parents": [
        "c8a685abf9e703e97230a5f445840683c0c12ce2",
        "467b689a4c0869b98b4c8c67c8accd1422cd1956"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Mon Nov 19 22:13:35 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 19 22:13:35 2018 +0000"
      },
      "message": "Merge \"Do not serialize empty text in manifest proto\""
    },
    {
      "commit": "adc63f02b36c2f80a02f30cdb04985abcf03f469",
      "tree": "883d2eeccff247393883e62dbbc13ed86808da67",
      "parents": [
        "5c9cf0e485c8f6c741fe0265829f7eaa358ac223",
        "beea2153abc5a56e9986080051b2303230983d50"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Nov 19 13:46:31 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Nov 19 13:46:31 2018 -0800"
      },
      "message": "Merge changes I664fb325,I5e289469 am: 701001688f am: 833a491fab\nam: beea2153ab\n\nChange-Id: Ifd30d79d06e4e80103ff2f09b0ae960ceb8bc7f9\n"
    },
    {
      "commit": "d1633c3bdba426143f06c8c89fa942e761140908",
      "tree": "3b20816c31a6a8f9d3d20aafa3ee0c09d521fe77",
      "parents": [
        "c2d4773ec8cbfb162fd756cc732c7ba97971cfd0",
        "da9b8d0ad19f439bc4c77ada798edd02a92de85e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 19 20:14:12 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 19 20:14:12 2018 +0000"
      },
      "message": "Merge \"Incidentd: Fix switch break warnings\""
    },
    {
      "commit": "467b689a4c0869b98b4c8c67c8accd1422cd1956",
      "tree": "71f32b75baec19f724bada5594ad754ba20d89b5",
      "parents": [
        "67dd91e6a301c9dd15f4f95ac715064534296a53"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Nov 09 15:52:07 2018 -0800"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Nov 16 15:58:06 2018 -0800"
      },
      "message": "Do not serialize empty text in manifest proto\n\nWhen linking an APK in the proto format, the manifest is currently\nserializes text nodes that only contain whitespace:\n\nchild: {\n  text: \"\\n        \"\n  source: {\n    line_number  : 0x0000000f\n    column_number: 0x0000002f\n  }\n}\n\nThese whitespace bloat the proto size unnecessarily. Do not write these\ntext nodes for proto apks.\n\nBug: 118800653\nTest: make aapt2_tests\nChange-Id: Icfaaf88976f81450bbf51610a316b336deeae60c\n"
    },
    {
      "commit": "a7d9f269d614fe3d38ca51c2c2fc276a8ddb7547",
      "tree": "6b9413fc173491daefa1495c34a95d91fb0e746e",
      "parents": [
        "46fa840747307c6679c214c30f8c37b7e692a5d6",
        "4e9a922ede24f7f7bfe793321f7328623ee2a061"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Nov 16 17:27:23 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 16 17:27:23 2018 +0000"
      },
      "message": "Merge \"Fix loaded apk string pool order\""
    },
    {
      "commit": "4e9a922ede24f7f7bfe793321f7328623ee2a061",
      "tree": "b74d2ecefc7e6902ff37c1be7798adc5861ae13d",
      "parents": [
        "67dd91e6a301c9dd15f4f95ac715064534296a53"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue Nov 13 10:40:07 2018 -0800"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Nov 15 11:37:01 2018 -0800"
      },
      "message": "Fix loaded apk string pool order\n\nLoading in an APk changed the ordering of strings in the string pool.\nWhen loading an apk, assign the strings to the same index as they\nare in the ResStringPool.\n\nBug: 118831219\nTest: \"aapt2 dump strings left.apk\" prints in the correct order,\n\"aapt2 convert left.apk --output-format binary -o left_binary.apk\" has\nentries in the correct order, and aapt2_tests\n\nChange-Id: I00014c02195f39c1152a110e90083d9b14e9216e\n"
    },
    {
      "commit": "d100107806bc02f8f9866790e0df8975d4764d4a",
      "tree": "e6ac242f964ae0fc24cd60dee7417e7b7ee22e8a",
      "parents": [
        "7751045a3aede1e938a1ab0a390db25bb3fafa0b"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Nov 14 15:13:39 2018 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Nov 14 15:54:32 2018 -0800"
      },
      "message": "switch to using android-base/file.h instead of android-base/test_utils.h\n\nTest: compile\nBug: 119313545\nChange-Id: I664fb32522d01909c603d7b903475c4e9aea9223\n"
    },
    {
      "commit": "da9b8d0ad19f439bc4c77ada798edd02a92de85e",
      "tree": "db3d8e762f3dc1010c01b97200cec7c6ea683b4d",
      "parents": [
        "10113a7c36838cb7da6b36e7f4800d6cfae6178d"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Wed Nov 14 13:14:45 2018 -0800"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Wed Nov 14 13:35:30 2018 -0800"
      },
      "message": "Incidentd: Fix switch break warnings\n\nA few switches didn\u0027t have explicit breaks in them, which was causing\nwarnings. They were all benign, as the logic did not necessitate a\nbreak. But this is will stop the warnings and perhaps prevent future\nbugs.\n\nChange-Id: Idb293a4896f4df8d3f11d748e0e716efc26bbd6a\nFixes: 119047812\nTest: N/A\n"
    },
    {
      "commit": "252c7c43c916aafb1f7d137285b64a4e667ffcbf",
      "tree": "16ebd45f6d42c7f74a63c8f7fc810c1a62200a35",
      "parents": [
        "4d75ccd3287e71711e667fb44a474c335108df02",
        "39b679925aaeb47fdf5bd39f9afbd4025be79a44"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 12 19:27:58 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 12 19:27:58 2018 +0000"
      },
      "message": "Merge \"Pass the last error code when statslog.write fails\""
    },
    {
      "commit": "39b679925aaeb47fdf5bd39f9afbd4025be79a44",
      "tree": "c4e0a0e8fb2353ef140a1a866cb34f43e430560f",
      "parents": [
        "306406790868def006d6cebf4c4b2830e73916aa"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Thu Nov 08 15:32:17 2018 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Fri Nov 09 09:56:36 2018 -0800"
      },
      "message": "Pass the last error code when statslog.write fails\n\nThe error code will give us some clue on what caused the loss (e.g., EBUSY, or ENOENT)\n\nTest: manual\nBug: 80538532\n\nChange-Id: I446c6e2255bdae063dfb8803ad0b702ead87c645\n"
    },
    {
      "commit": "4b55bd77fb69629798e3221025e0740252cbfe41",
      "tree": "d728588b86154588e68ef0d777272d5b6b2093ba",
      "parents": [
        "70c02611090acb5627aaa71b3d5cbac8229c80d7"
      ],
      "author": {
        "name": "Mårten Kongstad",
        "email": "marten.kongstad@sony.com",
        "time": "Thu Oct 11 08:38:08 2018 +0200"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Nov 07 08:23:06 2018 -0800"
      },
      "message": "AAPT2: propagate SPEC_OVERLAYABLE to splits\n\nA resource marked SPEC_OVERLAYABLE in the base package was not marked as\nsuch in the corresponding split packages. Add missing copy statement.\n\nTest: manual (aapt2 dump test content in libandroidfw)\nChange-Id: I800e92111a9da7c6f5e83f8a546d260c8d93b308\n(cherry picked from commit ee41b3a36dcd87f79f3c2a21383a97743530099d)\n"
    },
    {
      "commit": "e0c2f7e17d2dfb426d1f0f09a5f61c4284fd150e",
      "tree": "8cd77449e221f9fcd633cabf140098ae7dae7e29",
      "parents": [
        "e07602d79ba6b7438117206f9b55a59d0fe17c29",
        "e4e989ccba19f9bfad44d070873d67e7a3fd29c4"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 06 16:49:55 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 06 16:49:55 2018 +0000"
      },
      "message": "Merge \"RRO: Added partition policies for overlays\""
    },
    {
      "commit": "e4e989ccba19f9bfad44d070873d67e7a3fd29c4",
      "tree": "35b0df5967d8878063bb98bbc0c8c1e5fd2508b7",
      "parents": [
        "cfc152af9cbfc47ed4c8ab8a8b6e9ee4214206ea"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Mon Oct 29 02:21:50 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue Nov 06 00:10:26 2018 +0000"
      },
      "message": "RRO: Added partition policies for overlays\n\n\u003coverlayable\u003e tags can now have policy elements that indicate which\npartition the overlay apk must reside on in order to be allowed to\noverlay a resource. This change only adds parsing of \u003cpolicy\u003e and\nencoding of policy in the proto ResourceTable. A later change will add\nthe encoding of policy and overlayable in the binary APK.\n\n\u003coverlayable\u003e\n  \u003cpolicy type\u003d\"system|vendor|product|product_services|public\" \u003e\n    \u003citem type\u003d\"string\" name\u003d\"oof\" /\u003e\n  \u003c/policy\u003e\n\u003c/overlayable\u003e\n\nBug: 110869880\nTest: make aapt2_tests\nChange-Id: I8d4ed7b0e01f981149c6e3190af1681073b79b03\n"
    },
    {
      "commit": "51025d638d9a949b2863ad3a56d8b783ec9fc6c4",
      "tree": "00583af19fe8c69a8c2501aeb3675070383d2e94",
      "parents": [
        "c18cd05c6f69b028720a5bc66e2b2a361062805a",
        "469705cca4939f024808eeb4316cdb134e6d6c2c"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Oct 25 17:58:17 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 25 17:58:17 2018 -0700"
      },
      "message": "Merge \"Allow implicit-fallthrough warnings locally.\" am: 36afe11a64 am: 9c5738238d\nam: 469705cca4\n\nChange-Id: I4bc5f389495ed535762438632e65ccd6c66f3739\n"
    },
    {
      "commit": "6baf5e4e1c3aba355dfffc48247231e032679ab8",
      "tree": "8909143628ca94664d39da8ff5dd70c23407277c",
      "parents": [
        "f456997a8ab47acbdba5c36a5cbee2798a5650ff",
        "18f16d6241c6398a034237c2a5343f94d1938f6a"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Oct 25 19:39:11 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 25 19:39:11 2018 +0000"
      },
      "message": "Merge \"Don\u0027t try to compress opus resources\""
    },
    {
      "commit": "18f16d6241c6398a034237c2a5343f94d1938f6a",
      "tree": "f97f35b6880f0b25b9aa203b13001ec580e52292",
      "parents": [
        "c2896a27fadc416458e883282bb0d8a0f81ee13a"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Oct 25 08:18:22 2018 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Oct 25 08:31:19 2018 -0700"
      },
      "message": "Don\u0027t try to compress opus resources\n\nTest: build\n\nChange-Id: Ibf398b3afca02d4111d88b126c8d107ac44068a6\n"
    },
    {
      "commit": "bbdd67d19f4912fbec00220b22e44c68eff5ab3f",
      "tree": "a837c507d7b7006e54330db020729d73d8dc1e98",
      "parents": [
        "7a1b30e9db4c73e9109e99fc8cdaeafbb8218709"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed Oct 24 12:15:56 2018 -0700"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed Oct 24 13:12:13 2018 -0700"
      },
      "message": "Allow atoms to log fields in bytes format.\n\nThere are an increasing number of requests to log data in complex format to statsd, while the data\nis not expected to be parsed or aggregated by statsd and only to be uploaded as events.\n\nInstead of making an exception for each of these cases in a hard coded way, this CL add a feature to\nannotate these field in atoms.proto and the stats-log-api-gen tool will produce byte array\ninterfaces for them.\n\nNote that log_msg does not have byte array type, and only has string type, when statsd receives the\nlog, these fields are in string type. Only when the atom is written to proto, we will check if this\nfield should be bytes field and write it to protobuf in message format.\n\nChange-Id: If53dd95c5826710c76d7fe982bf951a435dfc738\nFix: 118386797\nTest: unit test \u0026 manual test\n"
    },
    {
      "commit": "e8abd0677674aab095aa192f2a85b1632a962791",
      "tree": "a1561a64a462aa2764852ee75be1a06bb45bf754",
      "parents": [
        "fccdf46adf096e9ba200ce79e00f6df379b5c649"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Oct 22 09:56:12 2018 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Oct 22 09:56:12 2018 -0700"
      },
      "message": "Allow implicit-fallthrough warnings locally.\n\nIt will be a global error by default.\n\nTest: make checkbuild\nBug: 112564944\nChange-Id: I26616fd50ccf3639fa7c01d850a14d079273ede7\nExempt-From-Owner-Approval: do not block on new warnings\n"
    },
    {
      "commit": "061b522b91dc9d5955af4cd6033f75d899998ee9",
      "tree": "1c711c964cb8b5af4eb71b94be7d38ae75e6bb88",
      "parents": [
        "840f2758f8c6cc2f476f77eab00ccc11e9e95b99",
        "92b1736e661102bf539f599263889035d6b6e52e"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Thu Oct 18 08:23:01 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 18 08:23:01 2018 -0700"
      },
      "message": "Merge \"Merge hidden API metadata into a single CSV file.\" am: 5037a7eb93 am: 3ffa1cad11\nam: 92b1736e66\n\nChange-Id: I55b39b42411e93adf2716bf59ef15eb5981f526a\n"
    },
    {
      "commit": "67f94b40024e07e64fd2875b7382b762805bebae",
      "tree": "02be1e3f80ad96ee835ce682b4960698196f5637",
      "parents": [
        "7aa64840b8a7098b4feb2587aba32dfe1504f139",
        "ec74f2fbd56a5021ab7c74bd7e65c165e287ad7f"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Oct 17 23:53:04 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 17 23:53:04 2018 +0000"
      },
      "message": "Merge \"Fix incorrect proto apk loading\""
    },
    {
      "commit": "3ffa1cad1142aa97146e066be1f8de28dc8e6e6e",
      "tree": "4b01ec9dd62be648a1603e1b526eeda18529c597",
      "parents": [
        "f093798a61ed90b68c14b86e7fb8c88d375ce51a",
        "5037a7eb93ec73c152da5f0f19f0ff04e9c3a02c"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Wed Oct 17 10:35:39 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Oct 17 10:35:39 2018 -0700"
      },
      "message": "Merge \"Merge hidden API metadata into a single CSV file.\"\nam: 5037a7eb93\n\nChange-Id: I0efce89576b0ca7ae90d49de3455466a866521de\n"
    },
    {
      "commit": "ec74f2fbd56a5021ab7c74bd7e65c165e287ad7f",
      "tree": "02a209b2729d37ee6d2453f543b9d84ad80a7b11",
      "parents": [
        "bbcfda0d35e83b95b2acc742c36ced3f92700ce9"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Oct 17 09:30:01 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Oct 17 09:30:01 2018 -0700"
      },
      "message": "Fix incorrect proto apk loading\n\nIf a proto apk is missing resources.pb, AAPT2 would fail to detrmine the\napk format because of an incorrect check. This fixes that check and\nremoves the checking fuction from the LoadedApk header.\n\nBug: 117820549\nTest: removed resources.pb from proto apks and confirmed that loading in\napks still works\n\nChange-Id: If3628a821e7b59c7dfcbefb502b6080be083cec1\n"
    },
    {
      "commit": "5037a7eb93ec73c152da5f0f19f0ff04e9c3a02c",
      "tree": "08f784442741cc842cbc70c5e8fb1c79f92a7f65",
      "parents": [
        "23ccecc4ca9f58139baa72bd4783451b780b1eb5",
        "ea14c0c36f2ff5c18c2e62c71f50f01cef47f077"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Wed Oct 17 09:20:04 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 17 09:20:04 2018 +0000"
      },
      "message": "Merge \"Merge hidden API metadata into a single CSV file.\""
    },
    {
      "commit": "9ad6ab595d02c2d8a2b5a97266acc4d261b8928d",
      "tree": "82153599744d02d6c6812b01b522d6da2db0b9c3",
      "parents": [
        "cd75edb817892de713f433b35527a5e2d193bb49",
        "fa5b2040297119265bbb34cc25c79098c431ec08"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Tue Oct 16 18:01:26 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 16 18:01:26 2018 -0700"
      },
      "message": "Merge \"Stop using DIST_DIR directly, use dist-for-goals instead\" am: a8f2601d28 am: 9b767e275e\nam: fa5b204029\n\nChange-Id: Ic052f5d1de317c2f271f5a2df83c733c79978679\n"
    },
    {
      "commit": "9b767e275e252cef0a8df2ecce68ea97cfed322b",
      "tree": "e6627c95883fb6f2df99eaccd46a01cdbb84bae6",
      "parents": [
        "646684732122d9dfe782a38145f7cf4c038247f3",
        "a8f2601d282018ff5e27a4f56f059701bc16afbe"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Tue Oct 16 17:43:35 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 16 17:43:35 2018 -0700"
      },
      "message": "Merge \"Stop using DIST_DIR directly, use dist-for-goals instead\"\nam: a8f2601d28\n\nChange-Id: Iabb2ddb086dda71887c3d50152db50f813c9556a\n"
    },
    {
      "commit": "a8f2601d282018ff5e27a4f56f059701bc16afbe",
      "tree": "3f517886066c3791c3c85b4a9a61866bc051e165",
      "parents": [
        "e5688052098f96e91feb1c6b9242153f15ca586f",
        "5cc170017128c25eb4ee887855444cbfcb930893"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 17 00:18:07 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 17 00:18:07 2018 +0000"
      },
      "message": "Merge \"Stop using DIST_DIR directly, use dist-for-goals instead\""
    },
    {
      "commit": "043424db98c24b08ea949ce97ae79c33f88d067d",
      "tree": "0cc88a35e85f725203864c7dfec0b0608b9c9795",
      "parents": [
        "ef3026c190d9f4d4799dcf29b5aa9e73794f2946",
        "1a73c07ab40ab8dedd670bb2a8bc82cf07b09f61"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Oct 16 10:41:54 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 16 10:41:54 2018 -0700"
      },
      "message": "Merge \"Fix issue with sort_api.sh\" am: f943c52105 am: 66e9d98618\nam: 1a73c07ab4\n\nChange-Id: I214977be62710e359839acd25fda1b22d7f043f8\n"
    }
  ],
  "next": "66e9d98618c96ad2c03168bf76c83b27ab0bc7a0"
}
