)]}'
{
  "log": [
    {
      "commit": "a117526b4a7555a355e784de35cc7750c6c2abdf",
      "tree": "be06363b2157990471cc246d336ffabba0b557bc",
      "parents": [
        "9853845074f1d44c1498b9ca4b7fbd3544122abb",
        "02d9c1e931610d4732d474b1b33ad836db450016"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Jan 18 00:41:31 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 18 00:41:31 2019 +0000"
      },
      "message": "Merge \"Remove RRO policy product_services\""
    },
    {
      "commit": "54938a0534b2dfdc98a3113eadacb5196929577c",
      "tree": "9ae0b075c5f8209ccf7527f2f232d7320e6b464f",
      "parents": [
        "46c2a56f6d21bed16a75f378de6756b3e4952ef4",
        "79f039689895f620d8dee5d3a58e63f8cca1ba3e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 16 23:24:10 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 16 23:24:10 2019 +0000"
      },
      "message": "Merge \"AAPT2: Add support for parsing codeNames with fingerprints.\""
    },
    {
      "commit": "02d9c1e931610d4732d474b1b33ad836db450016",
      "tree": "e7eba585fa7280552667fab9c771121b19302c57",
      "parents": [
        "d10d06d0b01151d6fcdf7ac70b5382e08858e233"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Jan 11 16:36:58 2019 -0800"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Jan 16 11:47:33 2019 -0800"
      },
      "message": "Remove RRO policy product_services\n\nSince Q will no longer have a product_services partition, remove instances of\nthe product_services policy across aapt2, androidfw, and idmap2.\n\nBug:122745343\nTest: aapt2_tests and libandroidfw_tests\nChange-Id: I97c223a0bf5a2eab95811e5f738b44af6335e0ea\n"
    },
    {
      "commit": "bf08b91174dfd3fab0fd1001f1624544776018d2",
      "tree": "0f8de7c6201369ea2de3e7fdc0ff5d85d0994a56",
      "parents": [
        "e59718c3d1480755a4b0cae997be93a536887bc2",
        "e1de284ae9e163b90c8bac9f428026f3213ef358"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Jan 16 19:18:59 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 16 19:18:59 2019 +0000"
      },
      "message": "Merge \"Add android.hardware.fingerprint for pre-Q\""
    },
    {
      "commit": "79f039689895f620d8dee5d3a58e63f8cca1ba3e",
      "tree": "b32eea286726171e5cc9bcff40bc9b7355942120",
      "parents": [
        "f8e7ff917512017baf1fff7b2a9efd533fec78a5"
      ],
      "author": {
        "name": "Nicholas Lativy",
        "email": "nlativy@google.com",
        "time": "Wed Jan 16 16:19:09 2019 +0000"
      },
      "committer": {
        "name": "Nicholas Lativy",
        "email": "nlativy@google.com",
        "time": "Wed Jan 16 16:49:31 2019 +0000"
      },
      "message": "AAPT2: Add support for parsing codeNames with fingerprints.\n\nIn addition to supporting manifest declared codenames of the form\n\"[codename]\", also support codenames of the form \"[codename].[fingerprint]\".\n\nMatches the behaviour of PackageParser as of ag/6056697.\n\nTest: ResourceUtils_test\nChange-Id: I814330eba9d383e4549e35da791fcfa9bd0cdf57\n"
    },
    {
      "commit": "cf9dd94323e0bf4934281582a1851e60f1fa36ac",
      "tree": "1a7a160c3f03987d1929a6c23717f0ffb78bd040",
      "parents": [
        "edb5e1a1b8e6791f85040a6b602d5c7929260be7",
        "ef5673a4c4021ca27b40e48020203928d71c95a8"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue Jan 15 19:34:30 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 15 19:34:30 2019 +0000"
      },
      "message": "Merge \"Add encoding of name and actor overlayable fields\""
    },
    {
      "commit": "c6223792246f1188f4357f10cd360bd695cb18b9",
      "tree": "fbead0cc9100dba48a703a21ba448c3a4eb7aea6",
      "parents": [
        "149b0d29c6f9a5558111e5d8ae7832c5b7280f88",
        "403c8e35d8e7cc0f81a0a2c42d038c47e1b2703f"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Tue Jan 15 15:37:37 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 15 15:37:37 2019 +0000"
      },
      "message": "Merge \"ApiLint: Add operator keyword and property parsing\""
    },
    {
      "commit": "149b0d29c6f9a5558111e5d8ae7832c5b7280f88",
      "tree": "e15fe81ca2b3e62bc91226162dc08e85b288150a",
      "parents": [
        "40f4cb5d5e440789cc0862a6bd81a39d9b3a271d",
        "c76940363197de1772b761aa38e819b55fb80cb7"
      ],
      "author": {
        "name": "Mohamed Heikal",
        "email": "mheikal@google.com",
        "time": "Tue Jan 15 15:34:06 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 15 15:34:06 2019 +0000"
      },
      "message": "Merge \"Resource Path Obfuscation\""
    },
    {
      "commit": "403c8e35d8e7cc0f81a0a2c42d038c47e1b2703f",
      "tree": "a9edcd83f36b9b12b5073b8ca318baf1398489fa",
      "parents": [
        "efad1da2f1559decf1d8ed41d353dfa338af0a92"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Mon Jan 14 15:44:15 2019 +0100"
      },
      "committer": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Tue Jan 15 14:32:57 2019 +0100"
      },
      "message": "ApiLint: Add operator keyword and property parsing\n\nAlso fix up some issues with expression parsing, type use annotations, etc.\n\nTest: python tools/apilint/apilint_test.py\nChange-Id: I38145a51470ce6c3e5813a546d681489fd87fc19\n"
    },
    {
      "commit": "45942518a5f7a94ae90c9e0204dc3cdc891fc7d7",
      "tree": "f1fd0d98fea36fd905f0a9e2d9055cd2e222db60",
      "parents": [
        "38421787e12081e0d3a4871f4c5012ab4bdad4d8"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Fri Dec 14 13:53:52 2018 +0000"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Tue Jan 15 11:54:18 2019 +0000"
      },
      "message": "Add prod key for serverless config.\n\nIntegrate this into SignatureVerifier too.\n\nBug: 110509075\nTest: atest CtsSignedConfigHostTestCases\nTest: atest SignedConfigTest\nChange-Id: I816598c3332f9577c802109053d0d0b9b1f2a699\n"
    },
    {
      "commit": "ef5673a4c4021ca27b40e48020203928d71c95a8",
      "tree": "b97e02462524775bd8a1a5a6104ff0b726d3a478",
      "parents": [
        "56ac01ebb4475440669f5f009c453dba0a86f6dd"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Dec 12 18:45:34 2018 -0800"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Jan 11 14:45:09 2019 -0800"
      },
      "message": "Add encoding of name and actor overlayable fields\n\nEncode the actor and name attributes of \u003coverlayable\u003e elements in the\noverlayable chunks. Two chunks cannot have the same name.\n\nBug: 110869880\nBug: 119390855\nTest: aapt2_tests and libandroidfw_tests\nChange-Id: I0ed95efef640b3927046b6155d1840f0d96030dd\n"
    },
    {
      "commit": "e1de284ae9e163b90c8bac9f428026f3213ef358",
      "tree": "5761d873fa96714c0ef9f2d3dad23e07bc15c26e",
      "parents": [
        "98bb5d4dd26ec24660c0d398ef395d62e442e802"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Jan 04 10:20:16 2019 -0800"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Jan 11 14:36:20 2019 -0800"
      },
      "message": "Add android.hardware.fingerprint for pre-Q\n\nAdd \"android.hardware.fingerprint\" when\n\"android.hardware.biometric.fingerprint\" is found, since the former is\ndeprecated in Q and the latter is not present pre-Q.\n\nBug: 115639644\nTest: aapt2_tests\nChange-Id: Id2b30e9fcc208759ee2e14a05d17c43db1e63db8\n"
    },
    {
      "commit": "56ac01ebb4475440669f5f009c453dba0a86f6dd",
      "tree": "0c8727e845d304900f5f077905db5d320c0e7070",
      "parents": [
        "4ffbbbb8c8728c955e3d520f9a957cbd1e550dbb",
        "81bae2d1583c983bbd584218b419241b388044f7"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Jan 11 22:35:25 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 11 22:35:25 2019 +0000"
      },
      "message": "Merge \"Statically link libc++ into aapt2\""
    },
    {
      "commit": "8940b940c1408dc1688ff5fdb01793ab15ad63bb",
      "tree": "61d48d4046842ed7a33d5bf7ec11261884ea3ece",
      "parents": [
        "9c14f5d103ea6bab070d20cfbbb08d590de58938",
        "c7aeafd2db8bf96b4086b259d54c314177ddec97"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Jan 11 10:15:59 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jan 11 10:15:59 2019 -0800"
      },
      "message": "Merge \"Fix/suppress tools google-explicit-constructor warnings\" am: 18f469b088 am: 0d2565a424\nam: c7aeafd2db\n\nChange-Id: I5fd12dc7ffdfc72da9dd1de7f67e23e7e05136df\n"
    },
    {
      "commit": "e89572cb941f1b1b158a91e962b86d9b5ff834cb",
      "tree": "6dfa6ebbe4f9ea1b77dd53f00e9185b4348b9837",
      "parents": [
        "2c9dad72bddfd16bc0d111d4f3e86337e6ee13a4"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed Jan 09 15:41:50 2019 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Thu Jan 10 15:18:21 2019 -0800"
      },
      "message": "Add a struct wrapper for bytes fields in stats_log cpp APIs.\n\nTo avoid conflict between statslog.write() function signatures for\n\nAtom1 {\n  Foo foo \u003d 1 [logMode\u003dbytes];\n}\n\nand\n\nAtom2 {\n  string bar \u003d 1;\n  int64 arg2 \u003d 2;\n}\n\nBug: 122571213\nTest: manually tested with new atoms.\nChange-Id: Ied0f0bd81cef8d0964f571e921f47022301157d9\n"
    },
    {
      "commit": "93561ab3b902746f679f8ef7ac73b9d069c322e8",
      "tree": "5bb5c9c3b00f18a85ad58aaaf387a14a77a5bd04",
      "parents": [
        "c0f3daa11ab5038ea6338db8822c7a7bacb07a40"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Dec 20 13:54:17 2018 -0800"
      },
      "committer": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Jan 10 19:52:49 2019 +0000"
      },
      "message": "Fix/suppress tools 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: Ic11c22c59beb7aa32b878a23315b1036ca4e3c6a\n"
    },
    {
      "commit": "6948154e7012e74f50e9686455bf303801d513b7",
      "tree": "1c0712ea699a7e0dd902092bc908f81e6be7316d",
      "parents": [
        "b867295c3ea7204e8e9278a05f7d3e6bc957683e",
        "9e9899720c4ad3a74b783318ce729c72db87ca9b"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Wed Jan 09 07:43:04 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 09 07:43:04 2019 -0800"
      },
      "message": "Merge \"118395019: Hide constants and methods in StatsLogInternal\" am: 0a5f26376f am: d6393758a7\nam: 9e9899720c\n\nChange-Id: I7814e47f241fc433c5baa5d45b630088e5b8876b\n"
    },
    {
      "commit": "0f2dc8d0f0ff6b15cdfed0087a1ed527169cc324",
      "tree": "19df8f9d20ea2669648d6cf0d2a827431037aadf",
      "parents": [
        "9ebc299b734ee2babf1587ec9537c18dfc302dd0"
      ],
      "author": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Tue Jan 08 12:07:15 2019 -0800"
      },
      "committer": {
        "name": "Tor Norbye",
        "email": "tnorbye@google.com",
        "time": "Tue Jan 08 14:20:31 2019 -0800"
      },
      "message": "118395019: Hide constants and methods in StatsLogInternal\n\nThis CL updates the code generator which creates the\nhidden StatsLogInternal class to explicitly hide\nthe generated constants and write methods as well.\n\nThe intent of this class was for everything to be hidden,\nbut it turns out that public methods and fields in\nhidden classes which are extended by a public class also\nends up in the SDK, even though they don\u0027t appear in the\nsignature file. StringBuilder#setLength(int) is an\nexample of this.\n\nBug: 118395019\nTest: make sdk\nChange-Id: I97e510e8155ee50ade653f6abeb5479c7ca9029d\n"
    },
    {
      "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": "81bae2d1583c983bbd584218b419241b388044f7",
      "tree": "9828af5066f3095a7037c33f1f2be67e2f6d0242",
      "parents": [
        "d59bfa45683c53d27402a48380c889d0d36dc483"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Jan 04 13:48:04 2019 -0800"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Jan 04 22:27:51 2019 +0000"
      },
      "message": "Statically link libc++ into aapt2\n\nBug: 121280559\nChange-Id: Ide6513d5cf51b832ad2c4a15676db050856728df\nTest: ldd aapt2 and manual testing\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": "c76940363197de1772b761aa38e819b55fb80cb7",
      "tree": "28c9afa0e073be59b396dbe8aebc6a118deca382",
      "parents": [
        "9da2ff0fdc6af2153c12701ae8344f10f9a26413"
      ],
      "author": {
        "name": "Mohamed Heikal",
        "email": "mheikal@google.com",
        "time": "Wed Nov 07 16:49:02 2018 -0500"
      },
      "committer": {
        "name": "Mohamed Heikal",
        "email": "mheikal@google.com",
        "time": "Thu Dec 20 18:19:25 2018 -0500"
      },
      "message": "Resource Path Obfuscation\n\nThis CL allows aapt2 to obfuscate resource paths within the output apk\nand move resources to shorter obfuscated paths. This reduces apk size\nwhen there is a large number of resources since the path metadata exists\nin 4 places in the apk.\n\nThis CL adds two arguments to aapt2, one to enable resource path\nobfuscation and one to point to a path to output the path map to (for\nlater debugging).\n\nTest: make aapt2_tests\nBug: b/75965637\n\nChange-Id: I9cacafe1d17800d673566b2d61b0b88f3fb8d60c\n"
    },
    {
      "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"
    }
  ],
  "next": "da9b8d0ad19f439bc4c77ada798edd02a92de85e"
}
