)]}'
{
  "log": [
    {
      "commit": "03f311cb75b4d4dcce48c3ec3c12dd76ec76dc8b",
      "tree": "31ab7a95adfe1fe4b250850460b1c6d60da22e6d",
      "parents": [
        "42596b17627cd498163a588612e114c903299110",
        "90b7a08aaf189824ec89c99063ae73c0de69fcdf"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Feb 16 00:46:04 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 16 00:46:04 2019 +0000"
      },
      "message": "Merge \"Revert \"Fix loaded apk string pool order\"\""
    },
    {
      "commit": "6d9fc1c8de5333181705e4a38624c746f2c9f643",
      "tree": "fb5f7fe166988b36faa8abac6392bbacb1f3f4be",
      "parents": [
        "f7ecba9f152e5135a3f6f35a9c6e36e0aee4a159",
        "a00d969c9cc5fe5ed40b26e9d10bbc96a6b6aec9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 15 23:26:25 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 15 23:26:25 2019 +0000"
      },
      "message": "Merge \"Prevent AAPT2 from versioning \u003cset\u003e tags\""
    },
    {
      "commit": "ed6c556145bafe07e4603245f613618a5cc3817d",
      "tree": "0ce0361cb301fbbdbb844aae904195a1f5bcc621",
      "parents": [
        "7a9c11c08c4277262f7ee60fb683592688d4c347",
        "b5b162bfe68e3c004ad606a83af07a02cd15cd82"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 15 22:57:17 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 15 22:57:17 2019 +0000"
      },
      "message": "Merge \"Do not derive source from binary APK\""
    },
    {
      "commit": "90b7a08aaf189824ec89c99063ae73c0de69fcdf",
      "tree": "f9bb4c92a8df6d34a827348335bf0edf52e4a38f",
      "parents": [
        "29405ed8c501f50247e7e4012b6da80bf51eb3b1"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Feb 15 17:39:58 2019 +0000"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Feb 15 14:37:45 2019 -0800"
      },
      "message": "Revert \"Fix loaded apk string pool order\"\n\nThis reverts commit 4e9a922ede24f7f7bfe793321f7328623ee2a061.\n\nReason for revert: \u003cb/122518436\u003e\n\nChange-Id: I3650b2c6c9bdfa69a3034f9ca49e95a9698c3cdd\n"
    },
    {
      "commit": "b2d7f5343d341c86887d20c61e10fdf8975150de",
      "tree": "8510de4a0261af65514bb61ba3d8f4328385d518",
      "parents": [
        "c20de15455a9551cf290722c502dd3f7d8fb27cb"
      ],
      "author": {
        "name": "Winson",
        "email": "chiuwinson@google.com",
        "time": "Mon Feb 04 16:32:43 2019 -0800"
      },
      "committer": {
        "name": "Winson",
        "email": "chiuwinson@google.com",
        "time": "Thu Feb 14 10:07:13 2019 -0800"
      },
      "message": "Signature policy for overlayable items\n\nAdd encoding/decoding of new policy for overlays. Signature enforces\nthat an overlay package is signed with the same key as the actor of\nthe target resource, so that an overlay can be installed by the user\nas a normal app but restricted to those built by the author of the\nactor (which can be the same as the target).\n\nThis also enforces that a valid policy is specified.\n\nThis doesn\u0027t implement the actors nor the signature check.\n\nBug: 119402606\n\nTest: ResourceParserTest ParseOverlayablePolicy\nTest: ProtoSerializerTest SerializeAndDeserializeOverlayable\nTest: aapt2_tests\n\nChange-Id: I8495ad790c2ebd51759bc6eba81149680c209475\n"
    },
    {
      "commit": "15c8c26efb647a9d01bb6ca4abb67f6add8a0b1e",
      "tree": "38c2d7e421c66c5b3d258859dbd12f3c92cefe21",
      "parents": [
        "2f9ebd59822a83f7d1126f827e6a9b3ff6cb9896",
        "6bee42559146676454b77bd4bd755a5cfeb75aed"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 13 20:05:10 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 13 20:05:10 2019 +0000"
      },
      "message": "Merge \"aapt2: Add signature policy to Resources.proto\""
    },
    {
      "commit": "6bee42559146676454b77bd4bd755a5cfeb75aed",
      "tree": "56bdd77ed0163ce3e917e46f0b90f6da575f5108",
      "parents": [
        "5d56e66495fc7651a4d1b7b78ad36808c784d013"
      ],
      "author": {
        "name": "Winson",
        "email": "chiuwinson@google.com",
        "time": "Wed Feb 13 07:57:24 2019 -0800"
      },
      "committer": {
        "name": "Winson",
        "email": "chiuwinson@google.com",
        "time": "Wed Feb 13 07:59:55 2019 -0800"
      },
      "message": "aapt2: Add signature policy to Resources.proto\n\nAdds the new enum values for none and the new signature policy.\nNone is needed to ensure we don\u0027t accidentally deserialize public,\nas protobuf uses the first or 0 value enum as the default.\n\nTest: aapt2_tests pass\n\nChange-Id: Ibcb6b961abaa7e5c048e80c4a3eaf1b6d1d421b5\n"
    },
    {
      "commit": "aada89ce19e36569cfe165753dc4cb6c09fe3b73",
      "tree": "1a5866733caec94f754096f2b2751788ddf4ee27",
      "parents": [
        "e34c699d84fcf4cb764536994de229a3190100af"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue Feb 12 08:06:26 2019 -0800"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue Feb 12 08:16:03 2019 -0800"
      },
      "message": "Correctly insert platformBuildVersionCode/Name\n\nAAPT(1) encodes platformBuildVersionCode and\nplatformBuildVersionName into the manifest along with\ncompileSdkVersion and compileSdkVersionCodename. AAPT2 was extracting\nthe platform attributes from the app being created rather than the\nframework.\n\nThis change inserts the correct platform attributes.\n\nBug: 124227171\nTest: aapt2_tests\nChange-Id: I4bc7986d25f065cecf01b9e988de4d37283ef7de\n"
    },
    {
      "commit": "0f167a214aca5fd02b42a8efaa7e14468598ae3e",
      "tree": "be4bb42eefcc541971b4999c6165325493ce93e2",
      "parents": [
        "9f6f2e7990dd14b89f03a4ce8dd8c648c9ff2855",
        "8d838a3cedbcb360ab3d6cdacaaecbd95dc2c404"
      ],
      "author": {
        "name": "Sasha Smundak",
        "email": "asmundak@google.com",
        "time": "Mon Feb 11 18:05:30 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Feb 11 18:05:30 2019 -0800"
      },
      "message": "Merge \"Convert Android.mk file to Android.bp\" am: 190ff7457c am: 4bb2c54698\nam: 8d838a3ced\n\nChange-Id: I2c2c5ccb7da321ee7896e01131f84090797eb6db\n"
    },
    {
      "commit": "31754eb5df1f5a98638ce5c93b90c0814bf43b35",
      "tree": "fcd66370633d5825517e64de2a6ae1d6df1c70bb",
      "parents": [
        "3b988d1782981ac2c0a491c022c00d90e1696622"
      ],
      "author": {
        "name": "Sasha Smundak",
        "email": "asmundak@google.com",
        "time": "Mon Feb 11 14:41:25 2019 -0800"
      },
      "committer": {
        "name": "Sasha Smundak",
        "email": "asmundak@google.com",
        "time": "Mon Feb 11 14:58:20 2019 -0800"
      },
      "message": "Convert Android.mk file to Android.bp\n\nSee build/soong/README.md for more information.\n\nBug: 122332340\nTest: treehugger\nChange-Id: I52416790e1e4493dd4fe57404095351b8d37ea22\n"
    },
    {
      "commit": "10357ba7673e26eb78c0359b3207f80c147556f9",
      "tree": "6191a21761e0dd0dbd2ff407df62b1d84016aa21",
      "parents": [
        "1c30b0f889bc72718c55d6744196a4cbe93a7622",
        "dc132af79072ff1ef0ac0172eb64b16188e47d5b"
      ],
      "author": {
        "name": "Muhammad Qureshi",
        "email": "muhammadq@google.com",
        "time": "Sat Feb 09 01:44:43 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 09 01:44:43 2019 +0000"
      },
      "message": "Merge \"Generate constants for enum values in cpp header\""
    },
    {
      "commit": "b5b162bfe68e3c004ad606a83af07a02cd15cd82",
      "tree": "7164724d1cbd2436c32f060e25f0a2964f037da1",
      "parents": [
        "31e6a70ca1f4c92da43468cb1da67b0e68773f10"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Feb 07 20:07:21 2019 -0800"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Feb 07 20:28:26 2019 -0800"
      },
      "message": "Do not derive source from binary APK\n\nWhen loading the binary APK, do not set the paths of Source structs to\nthe path of the binary APK. This causes the merge_zips step of the build\nsystem to fail.\n\nBug: 124082573\nTest: vendor/google/build/build_mainline_modules.sh\nChange-Id: I84b8d43c5b6a5835e7ff6bd579c4eb744e02c20f\n"
    },
    {
      "commit": "dc132af79072ff1ef0ac0172eb64b16188e47d5b",
      "tree": "da88ed7854edaa0f1f6615156fd1d98170ac4301",
      "parents": [
        "affa55b49baebce7ae1b8bb893e015379df83a49"
      ],
      "author": {
        "name": "Muhammad Qureshi",
        "email": "muhammadq@google.com",
        "time": "Tue Feb 05 13:07:40 2019 -0800"
      },
      "committer": {
        "name": "Muhammad Qureshi",
        "email": "muhammadq@google.com",
        "time": "Wed Feb 06 23:17:21 2019 +0000"
      },
      "message": "Generate constants for enum values in cpp header\n\nThis is the C++ counterpart of the enum generation for Java done in\nag/I1ad19b86e28d0df0f8c15d4c995d101423cff4c2\n\nBug: 120990429\nTest: builds successfully, logged one of atoms with an enum in C++ code and verified statsd logcat\n\nChange-Id: I2c1452c0590aecdef0dbede6d88014c748e6509e\n"
    },
    {
      "commit": "da01ea5b1cf324ca4d083696618131c5ba1c0cee",
      "tree": "3175aec8e374c4f59b15e656f0ef5afdd9db90f0",
      "parents": [
        "72be7c2a2f200a94435f6edd9c4c5be6e5185f50"
      ],
      "author": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Wed Jan 30 15:28:36 2019 +0000"
      },
      "committer": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Wed Feb 06 18:55:06 2019 +0000"
      },
      "message": "Add whitelist atom field option\nWhitelisted atoms can be triggered from any source\nTest: stats-log-api-gen-test\nBug: 119217680\nChange-Id: Ia5faed04d696b59ba4ffaab13f5046f943d8a8b7\n"
    },
    {
      "commit": "275c3ec6584534739c43da9508f8623508edebeb",
      "tree": "e5eaeaa8e8f2173c5e9837ef04161d785a3a4747",
      "parents": [
        "439c73b13e999e51340557ebd459eeeb699951ed",
        "3c918b8cee9a5dc5381cc7a5f4938a1095e99559"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 01 02:13:08 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 01 02:13:08 2019 +0000"
      },
      "message": "Merge \"Option to exclude configs from AAPT2 Link\""
    },
    {
      "commit": "ab364fc3b6ab26ddf4f1b4a6bf01b64056a181ef",
      "tree": "33e2040299ad0f39ab677a98f01334d97cc18a34",
      "parents": [
        "447919d2e5efdf907976e7d2b5f6860dc1400bf3"
      ],
      "author": {
        "name": "Aurimas Liutikas",
        "email": "aurimas@google.com",
        "time": "Wed Jan 30 08:32:57 2019 -0800"
      },
      "committer": {
        "name": "Aurimas Liutikas",
        "email": "aurimas@google.com",
        "time": "Wed Jan 30 08:32:57 2019 -0800"
      },
      "message": "Suppress -Wimplicit-fallthrough in aapt code\n\nAaptAsssets intentinally falls through in a switch statement.\nThis change adds [[fallthrough]]; to suppress this implicit fallthrough.\n\nframeworks/base/tools/aapt/AaptAssets.cpp:305:17: warning: unannotated fall-through between switch labels [-Wimplicit-fallthrough]\n                case 5:\n                ^\nframeworks/base/tools/aapt/AaptAssets.cpp:305:17: note: insert \u0027[[fallthrough]];\u0027 to silence this warning\n                case 5:\n                ^\n                [[fallthrough]];\nframeworks/base/tools/aapt/AaptAssets.cpp:305:17: note: insert \u0027break;\u0027 to avoid fall-through\n                case 5:\n                ^\n                break;\n\nTest: make -j aapt\nChange-Id: Ia9d2ca3b59eb804e20c6295791f6a19f0f5f63ab\n"
    },
    {
      "commit": "1ebc40339a7102f95a3938703ff1f20e41c45ed8",
      "tree": "893a5ae2db60bea555dc0fef9d457fcbb4cdcf96",
      "parents": [
        "526e9a00da70a8fa4ec343109acb844ecd4663e9",
        "06f2c9fc73299b5440b25eab5718a1e757b4e1ab"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 29 22:23:21 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 29 22:23:21 2019 +0000"
      },
      "message": "Merge \"Revert \"Add android.hardware.fingerprint for pre-Q\"\""
    },
    {
      "commit": "b47ddd4a1d3363ed6477e6cf4ffbc13cc8164c24",
      "tree": "eae01a52e23563abcf8a7efe0a8f7154abd07491",
      "parents": [
        "a319c6448b027f1169722295ceedac564a13de78"
      ],
      "author": {
        "name": "Ashley Rose",
        "email": "ashleyrose@google.com",
        "time": "Mon Jan 28 19:54:09 2019 -0500"
      },
      "committer": {
        "name": "Ashley Rose",
        "email": "ashleyrose@google.com",
        "time": "Tue Jan 29 13:34:31 2019 -0500"
      },
      "message": "Run inspector annotation processor on framework\n\nTest: m\nBug: 117616612\nChange-Id: Ifb013cf576e57818493a52aefec9729ecca4ac08\n"
    },
    {
      "commit": "fcbec265e6c08a4a837752925ee78687bac51e5c",
      "tree": "de3a34ce0b95ba11ace306b3b1ba530e87989ed1",
      "parents": [
        "3fce7487c3a9b4358202285b09603a31f5e84a69",
        "ea23830f1b0214287d0ed24ff5f023b56b49681e"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Tue Jan 29 08:43:16 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jan 29 08:43:16 2019 -0800"
      },
      "message": "Merge \"apilint: Allow parsing 3.0 signature files\" am: 34b11c92b3 am: f9cd2cb759\nam: ea23830f1b\n\nChange-Id: Ifaf2deff0451455d26a3301354753b751c3b464d\n"
    },
    {
      "commit": "34b11c92b34c8244c47fc2c1f9d8eb733b884004",
      "tree": "1a330d29a994899c0be4191325a553216519b489",
      "parents": [
        "9fdc6d296378bd17432ba1de507c83f4c3b8ed3a",
        "cf82e044003398a57d29c31f498ea2428edc7587"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Tue Jan 29 16:05:21 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 29 16:05:21 2019 +0000"
      },
      "message": "Merge \"apilint: Allow parsing 3.0 signature files\""
    },
    {
      "commit": "cf82e044003398a57d29c31f498ea2428edc7587",
      "tree": "1591912465efdbc16ccd0d3a2137acb9a8040176",
      "parents": [
        "87c1081c4222e490364422a1f21dbec9a35c6791"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Tue Jan 29 15:01:28 2019 +0100"
      },
      "committer": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Tue Jan 29 15:01:28 2019 +0100"
      },
      "message": "apilint: Allow parsing 3.0 signature files\n\nTest: python apilint_test.py\nChange-Id: I59df950229c05329afde93f94efc13adb4640ad7\n"
    },
    {
      "commit": "171c9cdc6addc3528733a47541ed7b93b139693b",
      "tree": "c3060f2f6d0447bdd1d8e0084506d2db575047f3",
      "parents": [
        "3ffdb26aa8da4778c10739049299a09d6d9febf5",
        "32885536233f16b1369d6cc93616de03d0e97559"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 28 22:15:35 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 28 22:15:35 2019 +0000"
      },
      "message": "Merge \"clang-format ManifestFixer_test.cpp\""
    },
    {
      "commit": "3c918b8cee9a5dc5381cc7a5f4938a1095e99559",
      "tree": "ea49c379af359c91043cdff577e2adc60ce5c335",
      "parents": [
        "2ddb1c8f521413112042aafbdb95a889e1a69ef8"
      ],
      "author": {
        "name": "Winson",
        "email": "chiuwinson@google.com",
        "time": "Fri Jan 25 14:25:37 2019 -0800"
      },
      "committer": {
        "name": "Winson",
        "email": "chiuwinson@google.com",
        "time": "Mon Jan 28 11:06:33 2019 -0800"
      },
      "message": "Option to exclude configs from AAPT2 Link\n\nAdds --exclude-configs to remove matching configs from resulting APK. This matches on explicitness, so if the resource contains all the flags set by the option exactly, it will be removed, but not the other way around.\n\n\"--exclude-configs fr\" with fr-land resource will remove.\n\"--exclude-configs fr-land\" with fr resource will not remove.\n\nBug: 119678846\n\nTest: aapt2_tests ResourceExcluder_test\nTest: manually ran link on a test set of res\n\nChange-Id: Ieccdecde4aea1fa0502abfd092dffa7da8f929ea\n"
    },
    {
      "commit": "0b671da4b19c7bd36ac7de01c65912fd09d2f36f",
      "tree": "b4e3688893296eb690b07cf77eedfdf78d182f01",
      "parents": [
        "e8d1eaa1dcc8308c5959a83ce483f3194a40cd82"
      ],
      "author": {
        "name": "Ashley Rose",
        "email": "ashleyrose@google.com",
        "time": "Fri Jan 25 15:41:29 2019 -0500"
      },
      "committer": {
        "name": "Ashley Rose",
        "email": "ashleyrose@google.com",
        "time": "Mon Jan 28 18:21:30 2019 +0000"
      },
      "message": "Annotation processing for int enum and flag mapping\n\nBug: 117616612\nTest: atest --host view-inspector-annotation-processor-test\nChange-Id: I791ffd8ce6bf6ec3ba408bb2a781fd91871b0ed6\n"
    },
    {
      "commit": "70edfa8c31309032b27277f1b897a374dbbd6f23",
      "tree": "29b14fa9dec09570b70b19a044bbc0549b8e6795",
      "parents": [
        "ce0bd06d174460b69594518e5cf35a85e13b73f8"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Fri Dec 14 15:46:27 2018 -0800"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Sat Jan 26 09:48:40 2019 -0800"
      },
      "message": "[bit] Use aapt2 instead of aapt, and don\u0027t also adb install apps on the system partition\n\nTest: bit services\nChange-Id: I7d44ffbb2745b1a6265bbc77f24f885e5f1d3981\n"
    },
    {
      "commit": "ce0bd06d174460b69594518e5cf35a85e13b73f8",
      "tree": "41bbda1fbcb89427e7c6313f8b056694fc5ee3b0",
      "parents": [
        "08f1ef2d156eed9e3a4f8cd85ef0123f049c16b9"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Mon Jan 14 15:30:05 2019 -0800"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Sat Jan 26 09:48:25 2019 -0800"
      },
      "message": "[bit] Cache the build variables so we don\u0027t have to run make to figure them out unless the environment has changed.\n\nTest: bit GooglePermissionControllerTest:*\nChange-Id: Ie79226026477df22115ed1146875b82c2255bdef\n"
    },
    {
      "commit": "ced0b0c90c05007b0b0e223a6afcf6f5a3672a56",
      "tree": "3b8a22b776283fe19e9f67dad5ed4eb9c16accf2",
      "parents": [
        "cea31af085a8ad79c71fe52fbce3ad358c6e6bc2",
        "f54c9a1d72aa3f307e6d78b7f9221354d72fc6e1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 25 22:03:49 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 25 22:03:49 2019 +0000"
      },
      "message": "Merge \"De-duplicate entries written with AAPT2 convert\""
    },
    {
      "commit": "32885536233f16b1369d6cc93616de03d0e97559",
      "tree": "b00ccf9375f10eb244c103ff58ac8539e8e8071a",
      "parents": [
        "1b9de57f3844c8aa784a5163a4581851c2f17baf"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Jun 11 13:20:17 2018 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Jan 25 21:33:02 2019 +0000"
      },
      "message": "clang-format ManifestFixer_test.cpp\n\nFix formatting errors introduced by Iee2bd9a3981c7d4681509f18b735c6e9e6c1a336.\n\nTest: m checkbuild\nChange-Id: I5d9a4cec277e31f4124bff281bf7a52cc97f73e3\nMerged-In: I10b27abb8fa8a99a41976c42c4d684b99978b4f9\n"
    },
    {
      "commit": "f54c9a1d72aa3f307e6d78b7f9221354d72fc6e1",
      "tree": "664f1f24f58a89a407724aebdf85135eae396190",
      "parents": [
        "3b943e777e57c6f3c7351c23daea2f12ac8ea928"
      ],
      "author": {
        "name": "Winson",
        "email": "chiuwinson@google.com",
        "time": "Wed Jan 23 12:39:40 2019 -0800"
      },
      "committer": {
        "name": "Winson",
        "email": "chiuwinson@google.com",
        "time": "Thu Jan 24 16:10:16 2019 -0800"
      },
      "message": "De-duplicate entries written with AAPT2 convert\n\nThere was no check for whether we had already written a specific file path to the APK when using the convert command.\n\nIf the resources table points 2 resource IDs at the same file on disk, the convert command would write the file twice, creating two entries.\n\nThis holds a set of file paths already written and ignores duplicates.\n\nBug: 123271593\n\nTest: Ran convert on linked bug\u0027s weird.apk\nTest: aapt2_tests case for duplicate entries\n\nChange-Id: Ia22515bf8e8297624aaadbf6a9e47159026c63e5\n"
    },
    {
      "commit": "a00d969c9cc5fe5ed40b26e9d10bbc96a6b6aec9",
      "tree": "b57139706eb62e2f9128fbb8525ef07c73d95a69",
      "parents": [
        "3b943e777e57c6f3c7351c23daea2f12ac8ea928"
      ],
      "author": {
        "name": "Winson",
        "email": "chiuwinson@google.com",
        "time": "Thu Jan 24 15:55:29 2019 -0800"
      },
      "committer": {
        "name": "Winson",
        "email": "chiuwinson@google.com",
        "time": "Thu Jan 24 15:59:16 2019 -0800"
      },
      "message": "Prevent AAPT2 from versioning \u003cset\u003e tags\n\nIn AAPT, if --no-version-vectors is added and an XML file is a vector, it prevents the entire XML\u0027s contents, including children attributes, from being split by version for compat.\n\nIn AAPT2, each element is checked individually, and so \"set\" has to be ignored manually.\n\nBug: 111056281\n\nTest: Compiled avd_progress_indeterminate_horizontal.xml linked in bug\n\nChange-Id: I20a7888f36cf5923b6dd8e3b701243c74f8d421b\n"
    },
    {
      "commit": "9237af70809c2aff09b6064838ede685fe19487e",
      "tree": "945954849df71bf270f5077225dbebca83b68725",
      "parents": [
        "6302322fe969048ad1b5d5342af3ca2d852b5630",
        "a3b22bfd1427ce1c38a64f8b76410578f2e7fda2"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jan 24 17:57:17 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 24 17:57:17 2019 +0000"
      },
      "message": "Merge \"Replace annotation_processors with plugins\""
    },
    {
      "commit": "591aacaf62a2a85db922e5b73b58041ae9bbcc10",
      "tree": "f85375e0e935a7406000f1780e6ded9d454db93d",
      "parents": [
        "52792d160a876e533658283c08985e9a996a8f98",
        "b55d7a0a9dfab68a65906429ba4d7d54452347be"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 24 13:47:11 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 24 13:47:11 2019 +0000"
      },
      "message": "Merge \"Replace debug key.\""
    },
    {
      "commit": "b55d7a0a9dfab68a65906429ba4d7d54452347be",
      "tree": "92f3dc60ed08214176f5f5ff71004a4df93b756f",
      "parents": [
        "6fee8818700e435c5c4f8aa590259af4dd9e3eae"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Wed Jan 23 17:52:39 2019 +0000"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Thu Jan 24 10:02:00 2019 +0000"
      },
      "message": "Replace debug key.\n\nThis gives better consistency with the release key. Also improve the\ndebug_sign script to use base64, to eliminate issues with escaping and\nnewlines.\n\nBug: 110509075\nTest: atest CtsSignedConfigHostTestCases\nChange-Id: Id8d7b6b5bee3340803d30d3a4a34c7e62f565a93\n"
    },
    {
      "commit": "636da777af074a9f6ce52b1247c6f6bb75d8f286",
      "tree": "9b450a47f60a13142aad56965793ea35160958dd",
      "parents": [
        "f3b120041d78346c753c16da03b7989cec6c9245",
        "b7be7934b05c810978466c151e17c4e199e7272b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 24 07:50:24 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 24 07:50:24 2019 +0000"
      },
      "message": "Merge \"Hold data pointer reference to AAPT2 test file\""
    },
    {
      "commit": "a3b22bfd1427ce1c38a64f8b76410578f2e7fda2",
      "tree": "f20687a92fe7b003cc451c418037b9a0cadc686a",
      "parents": [
        "515bd282c5651e8d42f007c47ade8ecc39c802e4"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Jan 23 15:38:30 2019 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Jan 23 15:54:30 2019 -0800"
      },
      "message": "Replace annotation_processors with plugins\n\nThe annotation_processors property is deprecated, replace it with\nplugins, and use java_plugin for modules that provide annotation\nprocessors.\n\nBug: 77284273\nTest: m checkbuild\nChange-Id: I467b899e0c8f2c8fa74a9bfbe6e952ad0f7aa009\n"
    },
    {
      "commit": "5d4bd49013bcb8047a929e8abd64d6a6694922bd",
      "tree": "47201e440e36946a2550145796ad9075cebe87c1",
      "parents": [
        "5f80ac0c9b5d5e734ee739d4ebff688f8d372191",
        "4262bd19add797aebef4a6c0daa20338cee6608c"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Jan 23 13:03:29 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 23 13:03:29 2019 -0800"
      },
      "message": "Merge \"Replace annotation_processors with plugins\" am: bc40469e19 am: f30fba0a60\nam: 4262bd19ad\n\nChange-Id: I0b417cccddebdccc8613d82d93ff9f0658be8217\n"
    },
    {
      "commit": "bc40469e19fbca8a1bc7a70514cc84aa7e9717a4",
      "tree": "3896199499edb151927b7e05d6404b20ea611109",
      "parents": [
        "436e2ad4c718f8e86e6bc93dec68c23273b831c2",
        "a1f8e1ab3d9f6e2f7db4602d63bf491173642c6c"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Jan 23 20:18:02 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 23 20:18:02 2019 +0000"
      },
      "message": "Merge \"Replace annotation_processors with plugins\""
    },
    {
      "commit": "b7be7934b05c810978466c151e17c4e199e7272b",
      "tree": "c3c36329b3b26ce09b45c95a36195663340cf796",
      "parents": [
        "3b943e777e57c6f3c7351c23daea2f12ac8ea928"
      ],
      "author": {
        "name": "Winson",
        "email": "chiuwinson@google.com",
        "time": "Wed Jan 23 11:10:52 2019 -0800"
      },
      "committer": {
        "name": "Winson",
        "email": "chiuwinson@google.com",
        "time": "Wed Jan 23 11:11:12 2019 -0800"
      },
      "message": "Hold data pointer reference to AAPT2 test file\n\nTo try and solve test flakiness, hold the unique_ptr in the method scope to make sure it\u0027s cleaned up after we assert on it.\n\nBug: 123079798\n\nTest: gonna merge and check for failures, since it passes locally\n\nChange-Id: Id348d1112832cbb82f605a84ef675c25a7488b11\n"
    },
    {
      "commit": "f67808b78dad59ec6b28b53b2390ae08eb19cef8",
      "tree": "f833c151d2b30eb3c40792113170b14d90aa49a3",
      "parents": [
        "9ce77e9b7f0a1d001428030f3ad738220378ae40"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue Jan 22 16:16:13 2019 -0800"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue Jan 22 16:16:13 2019 -0800"
      },
      "message": "Optimize aapt2 compile for pngs\n\nDo not copy the png data when compiling pngs.\n\nBug: 122950060\nTest: aapt2 compile -o . BaseAppPhoto1_copy.png\n\nChange-Id: I78fbdaa9a40ada406d7b07cf072d6cd76124168e\n"
    },
    {
      "commit": "a1f8e1ab3d9f6e2f7db4602d63bf491173642c6c",
      "tree": "c44d7ab66b6c53c3d1384f0355d57a7d18a51f87",
      "parents": [
        "a4c1416c28c115d9e9bdac2a63e00286d3508aa2"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Jan 21 21:45:20 2019 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jan 22 11:09:51 2019 -0800"
      },
      "message": "Replace annotation_processors with plugins\n\nThe annotation_processors property is deprecated, replace it with\nplugins, and use java_plugin for modules that provide annotation\nprocessors.\n\nBug: 77284273\nTest: m checkbuild\nChange-Id: I14ed4d81e097510866cbb9a27c72be4426117885\n"
    },
    {
      "commit": "06f2c9fc73299b5440b25eab5718a1e757b4e1ab",
      "tree": "39305517cef802bcd654f26ad65226bd324e9bde",
      "parents": [
        "e1de284ae9e163b90c8bac9f428026f3213ef358"
      ],
      "author": {
        "name": "Kevin Chyn",
        "email": "kchyn@google.com",
        "time": "Tue Jan 22 18:19:26 2019 +0000"
      },
      "committer": {
        "name": "Kevin Chyn",
        "email": "kchyn@google.com",
        "time": "Tue Jan 22 18:19:26 2019 +0000"
      },
      "message": "Revert \"Add android.hardware.fingerprint for pre-Q\"\n\nThis reverts commit e1de284ae9e163b90c8bac9f428026f3213ef358.\n\nReason for revert: b/115639644 comment #27\n\nChange-Id: Icf1f067b4d8f6b83be86128f07a89608112cebeb\n"
    },
    {
      "commit": "258c572d5e9421e547fb893e935fbfd544fd236c",
      "tree": "63b2ecc16a2a87454d0009b4f991c31d3be2c12e",
      "parents": [
        "d1e3892119a6a415fb39da5db21e06483db0ae03"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Mon Jan 21 15:43:15 2019 +0100"
      },
      "committer": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Tue Jan 22 11:42:39 2019 +0100"
      },
      "message": "apilint: correctly parse enum_constant\n\nChange-Id: I1a243caa3a01837ff989d21926478f20d70372ae\nFixes: 120132045\nTest: python apilint_test.py\n(cherry picked from commit 373df11baab1fbbd9f6986e38a1a929abc901d63)\n"
    },
    {
      "commit": "0fa45f1e50c130b3f9c620ac47f905abf26ad20c",
      "tree": "22c5ef36f3baa9a38be29dcf62883d1bf74aebf0",
      "parents": [
        "7106cc314edc6486a4d54780615d39c13982b6eb",
        "373df11baab1fbbd9f6986e38a1a929abc901d63"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Tue Jan 22 10:41:53 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 22 10:41:53 2019 +0000"
      },
      "message": "Merge \"apilint: correctly parse enum_constant\""
    },
    {
      "commit": "d1e3892119a6a415fb39da5db21e06483db0ae03",
      "tree": "8c51f9f65fd760be08b02c7084f09d47c28a0b0c",
      "parents": [
        "5cdfb69429eb60fc274424d4dcb6b166ed550a42"
      ],
      "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 22 11:36:38 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(cherry picked from commit 403c8e35d8e7cc0f81a0a2c42d038c47e1b2703f)\n"
    },
    {
      "commit": "5cdfb69429eb60fc274424d4dcb6b166ed550a42",
      "tree": "b433cb91085562876a2216b2d835bfd03f9c455f",
      "parents": [
        "1f1b6a84644916bd2b48f26ccb8cb31b336d4e2f"
      ],
      "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": "Tue Jan 22 11:36:37 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(cherry picked from commit 7884d6b9090c586ac0d72abe0e6efab191a143a7)\n"
    },
    {
      "commit": "1f1b6a84644916bd2b48f26ccb8cb31b336d4e2f",
      "tree": "7494836313c86c63cd3997827e088de332000bea",
      "parents": [
        "e5eeae7c23e2b35565274ad9cac38a3a550f33c9"
      ],
      "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": "Tue Jan 22 11:36:37 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(cherry picked from commit 7f8886a9933abbb6f1fdd97d920185b80d439339)\n"
    },
    {
      "commit": "e5eeae7c23e2b35565274ad9cac38a3a550f33c9",
      "tree": "972ab39539dca4b39a7f36447cf69fdf36f5afea",
      "parents": [
        "b787c183a2061c4deb0301c970c00c43fe72fed4"
      ],
      "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": "Tue Jan 22 11:36:37 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(cherry picked from commit a30d062775da3812589a6ce3e49be9d697ef0d6d)\n"
    },
    {
      "commit": "b787c183a2061c4deb0301c970c00c43fe72fed4",
      "tree": "36e3579ff4cc88431cf45b32de3a62d4e7f13709",
      "parents": [
        "038a02992abc2c6bd36f5461529216d9aef3eeb1"
      ],
      "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": "Tue Jan 22 11:36:37 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(cherry picked from commit d170961b02bf67189ddd14f358c9f263009df786)\n"
    },
    {
      "commit": "038a02992abc2c6bd36f5461529216d9aef3eeb1",
      "tree": "74c77e855fdc2dfd6f1e9bd0f8f527d3c5831e53",
      "parents": [
        "5ed42b6a2e99ae75177cb5790c908b12c4bc47b9"
      ],
      "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": "Tue Jan 22 11:36:36 2019 +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(cherry picked from commit 61e3730bc07e04181a01760d2eb1db834a854683)\n"
    },
    {
      "commit": "5ed42b6a2e99ae75177cb5790c908b12c4bc47b9",
      "tree": "413a099a647477ff3805b51a05cc7663482c95c6",
      "parents": [
        "6eb57b0f4a51255c656c71337fe41b81ff96a3dd"
      ],
      "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": "Tue Jan 22 11:36:36 2019 +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(cherry picked from commit 2c5cacfd36128f43f5fab4f0665acf69ac049a44)\n"
    },
    {
      "commit": "6eb57b0f4a51255c656c71337fe41b81ff96a3dd",
      "tree": "12e077d390ec4358f7395a5ec43bc2c3dd7b6cac",
      "parents": [
        "a8e5df06a010406b20a081c780a6e9854a2bad31"
      ],
      "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": "Tue Jan 22 11:36:36 2019 +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(cherry picked from commit 7690d0d4eea0ffa429351b0b1caa34cdb3e0d37f)\n"
    },
    {
      "commit": "a8e5df06a010406b20a081c780a6e9854a2bad31",
      "tree": "52d26c4747292c7aab95e02c94aa01c2e40a4210",
      "parents": [
        "eff9e228c12e1f75feab9c59a3edf546050cc1bc"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Nov 27 17:33:42 2018 -0700"
      },
      "committer": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Tue Jan 22 11:36:36 2019 +0100"
      },
      "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(cherry picked from commit 86445841ac90e04941dbc8dad34f2a893a2e0f8b)\n"
    },
    {
      "commit": "eff9e228c12e1f75feab9c59a3edf546050cc1bc",
      "tree": "557156379dcaf0376a34ba260e66195a58b24b29",
      "parents": [
        "0a2e15dd6eb16d0796a871d55710048c05c54d2f"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Sep 27 16:29:25 2018 -0600"
      },
      "committer": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Tue Jan 22 11:36:35 2019 +0100"
      },
      "message": "Moar lint rulez!\n\nBug: 37534642, 116675691, 116798271, 72059458, 111790177\nTest: manual\nChange-Id: Ib079ae580a827f225be08f90dbdddeee7d341c48\n(cherry picked from commit daac37f229f84ed844adcf1ffd3432b235524d9b)\n"
    },
    {
      "commit": "0a2e15dd6eb16d0796a871d55710048c05c54d2f",
      "tree": "30561f901166312afaf83f16cf99508eb51a5024",
      "parents": [
        "40d67f4b6dcad3f5728f9b3542e350028bbe8b8f"
      ],
      "author": {
        "name": "Siyamed Sinir",
        "email": "siyamed@google.com",
        "time": "Thu Sep 13 16:06:59 2018 -0700"
      },
      "committer": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Tue Jan 22 11:36:35 2019 +0100"
      },
      "message": "Update lint rules for graphics/text package layering\n\nTest: N/A\nBug: 77347886\nChange-Id: I907d99b4a1dee0c69b914e55a033d3d9c4eebe56\n(cherry picked from commit e23aeb802409cb337ad66454049c9e3b6af0db9a)\n"
    },
    {
      "commit": "40d67f4b6dcad3f5728f9b3542e350028bbe8b8f",
      "tree": "11eff6bdaba450180d47a2f9422a64051829d275",
      "parents": [
        "fe5ee6e74b45553e408b1f5c47db773fd971ea7e"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Jul 17 13:29:40 2018 -0600"
      },
      "committer": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Tue Jan 22 11:36:34 2019 +0100"
      },
      "message": "Handle new current.txt format.\n\nWe\u0027re starting to see \"@interface\" show up, so handle them like any\nother interface.  We\u0027re also seeing more details argument lists\nwith names and annotations; ignore them for now, since all our\nexisting lint checks work on the \"real\" data type.\n\nVerified that it handles new support library current.txt files\nwithout causing any regressions against existing framework\ncurrent.txt files.\n\nTest: manual inspection\nBug: 111555356\nChange-Id: Id11c3561edd317e4ba1a9b43993fd96d8243e00d\n(cherry picked from commit bd2611916990b0d18a36483060365207fdd94c13)\n"
    },
    {
      "commit": "fe5ee6e74b45553e408b1f5c47db773fd971ea7e",
      "tree": "0cb7cfa29323038bf2f7a0ddbc4db34d4f44916d",
      "parents": [
        "20f1e0ca1d6c3a0724e94b8fbcbe4b36c93b42b8"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Apr 20 11:26:16 2018 -0600"
      },
      "committer": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Tue Jan 22 11:36:34 2019 +0100"
      },
      "message": "Extend lint script to emit API statistics.\n\nBug: 77588754\nTest: manual\nChange-Id: I240dba5fae1a8635a4265a1af903517f00dec54c\n(cherry picked from commit daa7cf3a365c24e3a81d0df178c188b12e6d3a91)\n"
    },
    {
      "commit": "c3457450d95f03d649225c4d577f2556623042f6",
      "tree": "f1a0fc30a5bc0f4a3c166e38f0557c921d177eb7",
      "parents": [
        "ea26641aa8bc4b470258148082abac2dbdb4fa6b",
        "ed9f1140d1f845ae30a9810570181eb6df095efd"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Jan 21 12:21:52 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jan 21 12:21:52 2019 -0800"
      },
      "message": "Merge changes from topics \"coreapi-flag\", \"coreapi-stubs-csv\" am: 4620039dc5 am: e5aa99f45c\nam: ed9f1140d1\n\nChange-Id: I860b4e8953af55382c875a6c62951bb5c0da70e3\n"
    },
    {
      "commit": "ea26641aa8bc4b470258148082abac2dbdb4fa6b",
      "tree": "53693d45482204f252b5624ce39cbc08255726d9",
      "parents": [
        "c58b652ee037697b591396e1326b9442fdf02582",
        "20d06a01661d118be6ea5cdaea7e85ff082cf17c"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Jan 21 12:14:55 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jan 21 12:14:55 2019 -0800"
      },
      "message": "hiddenapi: Expect public/private API as CSV am: 17d16e84da am: 046c140ff3\nam: 20d06a0166\n\nChange-Id: I3982dc2b0ed6ef0771522acbfe97a8002195b2ea\n"
    },
    {
      "commit": "373df11baab1fbbd9f6986e38a1a929abc901d63",
      "tree": "372d3fa0ae3aa273725fe0096223f3d7f621581c",
      "parents": [
        "7f6d6a95f53153fd03a378be9c970df9a300a8a7"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Mon Jan 21 15:43:15 2019 +0100"
      },
      "committer": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Mon Jan 21 16:01:51 2019 +0100"
      },
      "message": "apilint: correctly parse enum_constant\n\nChange-Id: I1a243caa3a01837ff989d21926478f20d70372ae\nFixes: 120132045\nTest: python apilint_test.py\n"
    },
    {
      "commit": "17d16e84da23464dc7a621eaa87a79c6cc1170ce",
      "tree": "3322550f528428f4eb4d7f2b88e71429a6faea54",
      "parents": [
        "bc6e433ae488b4ad807c1503a53155a3259fd0b8"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Dec 13 17:00:09 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Sat Jan 19 15:57:36 2019 +0000"
      },
      "message": "hiddenapi: Expect public/private API as CSV\n\nRefactor of `hiddenapi` changed the output format of public/private API\nlists to a single CSV file. Change API list generation accordingly.\n\nIn order to avoid special-casing this CSV file, it is treated the same\nas the CSV files produced by `class2greylist`. The merging rules are\nrelaxed so that signatures in CSV files are not checked against\na pre-initialized set of all signatures (previously generated from the\npublic/private API files). This should not lead to build errors as the\nCSV files are always auto-generated, and a missing/extra signature will\nbe caught by `hiddenapi`.\n\nAPI lists in frameworks/base/config are processed later and checked\nthat they are a subset of the signatures in CSV.\n\nBug: 119068555\nTest: compiles, hiddenapi-flags.csv unchanged\nChange-Id: I33f2cbaa15f2d423a75e6ca64abe1c5b0c40c86f\n"
    },
    {
      "commit": "439d3496ed38cea04824f7ad48e277297ab1f243",
      "tree": "0de7538e6832966d630f246b1493bfdd16ff8ffb",
      "parents": [
        "17d16e84da23464dc7a621eaa87a79c6cc1170ce"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Dec 07 11:49:55 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Sat Jan 19 15:57:36 2019 +0000"
      },
      "message": "hiddenapi: Support \u0027core-platform-api\u0027 flag\n\nLibcore class members annotated with @CorePlatformApi now generate\na new hiddenapi flag. This is the first of \"domain API\" flags which\ncan be used in conjunction with API list flags. Therefore modify\nthe \u0027generate_hiddenapi_lists.py\u0027 logic to treat them differently.\nSpecifically, the script marks otherwise unassigned class members\nblacklisted. A class member with \u0027core-platform-api\u0027 may still not\nbe assigned an API list and should be blacklisted.\n\nBug: 119068555\nTest: m appcompat\nChange-Id: I2b67e7a619677e853c87bc2da934410458ce4d14\n"
    },
    {
      "commit": "c1a4decb3945604583badf4b5eb5b5f0c6c39375",
      "tree": "7b8fe72bac7459acd84382def4aaf772cfdafbd8",
      "parents": [
        "61ae7ed2c6697d95c06422cad6aa4d4063dd4b24"
      ],
      "author": {
        "name": "Ashley Rose",
        "email": "ashleyrose@google.com",
        "time": "Thu Dec 13 18:06:30 2018 -0500"
      },
      "committer": {
        "name": "Ashley Rose",
        "email": "ashleyrose@google.com",
        "time": "Fri Jan 18 16:47:29 2019 -0500"
      },
      "message": "Annotation processing for @InspectableProperty\n\nTest: atest --host view-inspector-annotation-processor-test\nBug: 117616612\nChange-Id: Ia9641b4efae5f6945084849309f81f2d31faf2ec\n"
    },
    {
      "commit": "feccee99fabf0d42564550f2a80463633aabd818",
      "tree": "f103845f6f45dd37ec43a12780114329da2e9b5d",
      "parents": [
        "0f5eade4a492fc91130da1aedcad0999932f4137",
        "d8ebfefceee7fbfaae730d3414c8017840097761"
      ],
      "author": {
        "name": "Aurimas Liutikas",
        "email": "aurimas@google.com",
        "time": "Fri Jan 18 16:53:46 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 18 16:53:46 2019 +0000"
      },
      "message": "Merge \"Remove old private constant from ResourceId.\""
    },
    {
      "commit": "0857c584aee8dd07339791107c7dbb3d4e81c496",
      "tree": "75e785934043b653f53976c001abadee3cc924c9",
      "parents": [
        "25b35daba89f1b0765f72baed1db0d8d314cb373",
        "a3ab21f04ac976ced7933af04e8f8cb593571a03"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 18 10:59:42 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 18 10:59:42 2019 +0000"
      },
      "message": "Merge \"AAPT2: always say which file failed to compile\""
    },
    {
      "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": "d8ebfefceee7fbfaae730d3414c8017840097761",
      "tree": "8339a6341f406023a62912bb16599a1c2b99b87d",
      "parents": [
        "01c723743942183b9ade382f410756dc3e90c427"
      ],
      "author": {
        "name": "Aurimas Liutikas",
        "email": "aurimas@google.com",
        "time": "Wed Jan 16 12:46:42 2019 -0800"
      },
      "committer": {
        "name": "Aurimas Liutikas",
        "email": "aurimas@google.com",
        "time": "Thu Jan 17 12:51:58 2019 -0800"
      },
      "message": "Remove old private constant from ResourceId.\n\nBug: 122967079\nTest: make -j builds\nChange-Id: I3e999044df02549e84208d38bb77d2ce1d1bd73b\n"
    },
    {
      "commit": "a3ab21f04ac976ced7933af04e8f8cb593571a03",
      "tree": "1830e2539e6e7cb7b0ef8c3b7428ec3714403f2e",
      "parents": [
        "352ed665f5820e0088739c681289269794cce7d1"
      ],
      "author": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Thu Jan 17 12:09:59 2019 +0000"
      },
      "committer": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Thu Jan 17 12:12:25 2019 +0000"
      },
      "message": "AAPT2: always say which file failed to compile\n\nSometimes AAPT2 doesn\u0027t include the path of the file in the error\nmessage, or just outputs a warning where an error should be printed\n(but the overall build still fails without an error message). Let\u0027s\nalways include the file path to make it easier for the users to find out\nthe source of the failure.\n\nFixes: 122856772\nTest: manual\nChange-Id: Ibbbfd21b372792e5eaa40278186eb64cdfb0f60e\n"
    },
    {
      "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": "213e8cf8af691025a3e136d115b6ee50902cb680",
      "tree": "b8c052bf3c013b7c122fa3562fce9c858186d850",
      "parents": [
        "2351fa8b8fe7bfb0fcf05ea06984c11dfc456691",
        "037ad04df72ee0c826c8370e1b755dadaf9fd9d8"
      ],
      "author": {
        "name": "yaochen",
        "email": "yaochen@google.com",
        "time": "Fri Jan 11 19:02:29 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 11 19:02:29 2019 +0000"
      },
      "message": "Merge \"Add a struct wrapper for bytes fields in stats_log cpp APIs.\""
    },
    {
      "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": "037ad04df72ee0c826c8370e1b755dadaf9fd9d8",
      "tree": "131585b3026b9e508ef7426a64453e86c91b38a1",
      "parents": [
        "5c6e4acbe1c0e8db56a605f73d94f0b19b614f8f"
      ],
      "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 17:26:26 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.\n\nChange-Id: Ied0f0bd81cef8d0964f571e921f47022301157d9\nMerged-In: Ied0f0bd81cef8d0964f571e921f47022301157d9\n(cherry picked from Ied0f0bd81cef8d0964f571e921f47022301157d9)\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"
    }
  ],
  "next": "0d7970f4e9e83915f4f6e2d74d7f4b44f723ef73"
}
