)]}'
{
  "log": [
    {
      "commit": "934cc613fde11548e5b166cb51e3afb9c9943734",
      "tree": "ff6666e89a87709e337af47c172986aeff00d764",
      "parents": [
        "874b0091372a5a74e8a959c15dc93b4e82a2329d"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Thu Mar 15 14:14:26 2018 -0700"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Thu Mar 15 14:23:01 2018 -0700"
      },
      "message": "Fix bug to break switch cases.\n\nBug: 75001195\nTest: N/A\nChange-Id: I99274cbf34d191c25ad9ced08f999c59f922cb25\n"
    },
    {
      "commit": "eadd123d68850cb27aa6d030ade6190e30991b19",
      "tree": "28ee59bef758929559dde7b34a9dbe962f1196c9",
      "parents": [
        "0efaf2088d8e3ba8ec560aa5eb597ef456b5213e"
      ],
      "author": {
        "name": "Kweku Adams",
        "email": "kwekua@google.com",
        "time": "Mon Feb 05 16:45:13 2018 -0800"
      },
      "committer": {
        "name": "Kweku Adams",
        "email": "kwekua@google.com",
        "time": "Wed Mar 07 21:50:12 2018 +0000"
      },
      "message": "Dumping stack traces to proto.\n\nBug: 72177715\nTest: flash device and check incident.proto output\nChange-Id: Id2a15e0fc62b66efe875949af97f0eb651c7e322\n(cherry picked from commit 5c804e2b9893c7892900148229cf19fa6268e7dc)\n"
    },
    {
      "commit": "d137c872cdc5e157c0ff65076689f7c4552a9013",
      "tree": "3c2dffe6115c25dc65faf975c7d3bc12f397bde4",
      "parents": [
        "aa79f03ca6c4c5a3a262aeaf2b608ffd4807ab13"
      ],
      "author": {
        "name": "Anton Hansson",
        "email": "hansson@google.com",
        "time": "Fri Feb 23 12:57:51 2018 +0000"
      },
      "committer": {
        "name": "Anton Hansson",
        "email": "hansson@google.com",
        "time": "Wed Mar 07 11:42:04 2018 +0000"
      },
      "message": "frameworks/base: Set LOCAL_SDK_VERSION where possible.\n\nThis change sets LOCAL_SDK_VERSION for all packages where\nthis is possible without breaking the build, and\nLOCAL_PRIVATE_PLATFORM_APIS :\u003d true otherwise.\n\nSetting one of these two will be made required soon, and this\nis a change in preparation for that. Not setting LOCAL_SDK_VERSION\nmakes the app implicitly depend on the bootclasspath, which is\noften not required. This change effectively makes depending on\nprivate apis opt-in rather than opt-out.\n\nTest: make relevant packages\nBug: 73535841\nExempt-From-Owner-Approval: Global cleanup\nChange-Id: I26458e41ecb84de91ac9a356a5d4bafb44f463c1\n"
    },
    {
      "commit": "7d55509c199a624a5a4f7f0b4374edd1eb114d6f",
      "tree": "8176eb170c56b20197d813cab0f561a7ac3a626a",
      "parents": [
        "74564a43bf6ca32999641eb3fc947bb564651b3b",
        "ecf4bdb4477d5fcc469c1c4ea7418e16e71037b8"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Mar 03 00:02:52 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 03 00:02:52 2018 +0000"
      },
      "message": "Merge \"Modifying proto csv output to include privacy levels.\""
    },
    {
      "commit": "f3c951fd528ae240ef149b815d644ddef3a1c361",
      "tree": "ab7a5714e8707cf37b65a472d4fa3702995a8067",
      "parents": [
        "51aed1c8b9f395cdd2ac7b0aa8ed7a6bf183d214",
        "a95e841846c3add37cab0ca228e1e1a4eb0a1455"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 02 22:38:46 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 02 22:38:46 2018 +0000"
      },
      "message": "Merge \"Change ownership of AAPT2 and libandroidfw\""
    },
    {
      "commit": "51aed1c8b9f395cdd2ac7b0aa8ed7a6bf183d214",
      "tree": "b7230ca97902f54105351830ba6b9cdd978d0659",
      "parents": [
        "a3767f0747c5b64068faa54a86f3cdd8550f8927",
        "c9a2926e661df75ba2517da166bf3b561fd678ec"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 02 22:36:22 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 02 22:36:22 2018 +0000"
      },
      "message": "Merge \"AAPT2: Allow to inline XML into custom attribute\""
    },
    {
      "commit": "a95e841846c3add37cab0ca228e1e1a4eb0a1455",
      "tree": "1f9694d068249d7dc4c1b9a0b81db0f3bb4f6f26",
      "parents": [
        "8e4419a087a6112d1a656636175fe765d0cd1916"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 02 12:10:25 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 02 12:11:03 2018 -0800"
      },
      "message": "Change ownership of AAPT2 and libandroidfw\n\ntoddke@ is now the new owner of these projects.\n\nTest: none\nChange-Id: Ie92b020e0ba063f48ce8a76ebaef768fe0d554f1\n"
    },
    {
      "commit": "c9a2926e661df75ba2517da166bf3b561fd678ec",
      "tree": "f0f074fc40f9d17d06352930ed7f6938e30e59f9",
      "parents": [
        "b437f30f286131cc3a01bca7b56ca7dcab37cf74"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 01 20:04:00 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 01 20:04:00 2018 -0800"
      },
      "message": "AAPT2: Allow to inline XML into custom attribute\n\nPreviously, doing something like\n\n\u003cparent xmlns:app\u003d\"http://schemas.android.com/apk/res-auto\"\n        xmlns:aapt\u003d\"http://schemas.android.com/aapt\"\u003e\n    \u003caapt:attr name\u003d\"app:foo\"\u003e\n        \u003cchild /\u003e\n    \u003c/aapt:attr\u003e\n\u003c/parent\u003e\n\nwould result in something like:\n\n\u003cparent xmlns:app\u003d\"http://schemas.android.com/apk/res-auto\"\n        xmlns:aapt\u003d\"http://schemas.android.com/aapt\"\n        foo\u003d\"@generated_name\" /\u003e\n\nwhile it should result in:\n\n\u003cparent xmlns:app\u003d\"http://schemas.android.com/apk/res-auto\"\n        xmlns:aapt\u003d\"http://schemas.android.com/aapt\"\n        app:foo\u003d\"@generated_name\" /\u003e\n\nBug: 36809755\nTest: make aapt2_tests\nChange-Id: I72ea4b402e196ca05b53b788e4768a265190a0dc\n"
    },
    {
      "commit": "34a1687a67cfc08dd2baca6e92180e0930006c6f",
      "tree": "5f2d9f08a58c44faab6377bf02dc412dbf18daf3",
      "parents": [
        "c2c1d7094b9b4d22d99c62df234054b37548092b"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 23 16:18:10 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 01 11:18:23 2018 -0800"
      },
      "message": "AAPT2: Remove resources that define locales but no default values.\n\nAccording to our docs:\nhttps://developer.android.com/guide/topics/resources/localization.html#defaults-r-important\n\nSome resources *require* that there is a default definition. So far,\nthe pain is felt when doing translations for strings that have been\nrenamed, etc.\n\nThis CL strips out resources that don\u0027t have a default value and define\na resource for a locale. This is conservative, but should be expanded\nto other configuration properties moving forward.\n\nBug: 36572857\nTest: make aapt2_tests\nChange-Id: Ife94a1f8a2ee221f8532ffa856541a9c8c4e7143\n"
    },
    {
      "commit": "ec98448f153aff274e7e9c7db473d8413049ba2f",
      "tree": "669f1deede8c86b67632c5315c1db3b41d2445d3",
      "parents": [
        "ff1f7090c62ac7b4abff39ad432c38e7d30f2b3d",
        "1a11fa10977ee1e2645d400844ff4d472b8f5f02"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 28 03:02:16 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 28 03:02:16 2018 +0000"
      },
      "message": "Merge \"Implement a new section to attach LAST_KMSG to incident report This section simply gzip a large file and stores result in GZippedFileProto\""
    },
    {
      "commit": "2eed52ecc0c2fa3e96530e4b5556eaa82f7c2dfc",
      "tree": "4e0a49770f684a2ca823d958c0f1a2b3adabcab9",
      "parents": [
        "e1094a2e232277a719025aa5c97c492502c34f5b"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 21 15:55:58 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 27 11:39:10 2018 -0800"
      },
      "message": "AAPT2: Fix styled string whitespace processing\n\nChange styled string whitespace processing to be like AAPT\u0027s was.\n\nMain changes:\n- whitespace around tags is preserved.\n- tags start exactly where they are supposed to, not off by one.\n\nBug: 72406283\nTest: make aapt2_tests\nChange-Id: I4d12728c493efd8c978e2e3d2718b56534ff52ef\n"
    },
    {
      "commit": "1a11fa10977ee1e2645d400844ff4d472b8f5f02",
      "tree": "f2a56b25e6da627ab148344900be49ee6e8281c7",
      "parents": [
        "acb42c36f5ecfa2ab442fce1b97ab446c73008a8"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Thu Feb 22 16:44:10 2018 -0800"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Tue Feb 27 11:36:29 2018 -0800"
      },
      "message": "Implement a new section to attach LAST_KMSG to incident report\nThis section simply gzip a large file and stores result in GZippedFileProto\n\nThis greatly improves the size, before gzip, the last kmsg size ~500KB,\nafter gzip the proto size is ~60KB.\n\nBug: 73354384\nTest: atest incidentd_test and manual on device test\nChange-Id: I9bfc2cf07384487671edbffb5f0bd8495608fea6\n"
    },
    {
      "commit": "e1094a2e232277a719025aa5c97c492502c34f5b",
      "tree": "8b3c1a4edfcac8198689716386d93da17e93be6b",
      "parents": [
        "3e946e9309e62f6d0405ded1e96a362cf3d9dbde"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Feb 22 17:27:17 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 23 14:59:37 2018 -0800"
      },
      "message": "AAPT2: Fix issue with String flattening in XmlFlattener\n\nCompiled Strings (previously not encountered) in an XML resource\nwere using a different StringPool than the one being referred to\nin the XmlFlattener, and so the indices were all wrong.\n\nBug: 72700446\nTest: make aapt2_tests\nChange-Id: I663924f8fad50fd4c69cfa196318dc63fb641a25\n"
    },
    {
      "commit": "ecf4bdb4477d5fcc469c1c4ea7418e16e71037b8",
      "tree": "1b41e458a94385e2fa2eafb3bd5f03641e4454d3",
      "parents": [
        "414189fefe71beb998541cb2932b90f073ae8bcd"
      ],
      "author": {
        "name": "Kweku Adams",
        "email": "kwekua@google.com",
        "time": "Thu Feb 22 15:05:48 2018 -0800"
      },
      "committer": {
        "name": "Kweku Adams",
        "email": "kwekua@google.com",
        "time": "Thu Feb 22 17:48:23 2018 -0800"
      },
      "message": "Modifying proto csv output to include privacy levels.\n\nBug: 73775471\nTest: use new output in go/irpf\nChange-Id: Ib9e836e350f8d664ef66ecfe2539d15d164953be\n"
    },
    {
      "commit": "868688ed1610b55461175db752bf4ef1900f7fcc",
      "tree": "eee2c51ff18348ca27429c431c9729e38653c819",
      "parents": [
        "2cb882d61a6f213eaf231f106c8aa735ca28ccfc",
        "9c1debe330006b2b4d5c08a55905789c57369609"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 22 05:36:45 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 22 05:36:45 2018 +0000"
      },
      "message": "Merge \"Add annotation to atoms that represent a state change in atoms.proto\""
    },
    {
      "commit": "9c1debe330006b2b4d5c08a55905789c57369609",
      "tree": "ec02b691f65a16d75d5cee817b404012706ea961",
      "parents": [
        "75c515effa72b2e7af774ee2c513cff7ec1dbd0e"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Mon Feb 19 14:39:19 2018 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed Feb 21 16:46:56 2018 -0800"
      },
      "message": "Add annotation to atoms that represent a state change in atoms.proto\n\n+ A state change atom can have one exclusive state field, and any\n  number of primary key fields.\n\n  When there is primary key in the atom, it means the state belongs to the primary key.\n  For example,\n  message UidProcessStateChanged {\n    optional int32 uid \u003d 1 [(stateFieldOption).option \u003d PRIMARY];\n    optional android.app.ProcessStateEnum state \u003d 2 [(stateFieldOption).option \u003d EXCLUSIVE];\n  }\n\n  When there is no primary key fields in the atom, the state is global.\n  For example,\n  message ScreenStateChanged {\n     optional android.view.DisplayStateEnum state \u003d 1 [(stateFieldOption).option \u003d EXCLUSIVE];\n  }\n\n+ The annotation is consumed by stats_log_api_gen to generate a static map from the state\n  atoms to its primary fields, and exclusive fields\n\n+ stats_log.proto is splitted into 2 proto files, because statsd needs proto lite, and c++\n  lite proto library cannot properly ignore the field options which requires full proto.\n\n This CL doesn\u0027t change any logic in the statsd yet. A separate CL will use the field option\n information to correctly track the state.\n\nTest: added unit tests in stats_log_api_gen_test. and statsd_test pases.\nChange-Id: I9e8a979fe81ba60efd4d854bb7087ce4b2b147ec\n"
    },
    {
      "commit": "c4aa760428c3fddf891c4bf74c145688e914ee29",
      "tree": "41f10beb85b95eb551e62fac0629e6673b6e0fca",
      "parents": [
        "581ff5ec0dd4c63cae9f86ad95b76ff951853b13"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Tue Feb 20 13:12:27 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Tue Feb 20 13:20:54 2018 -0800"
      },
      "message": "Remove a few atoms from the timestamp truncating whitelist.\n\nTest: statsd test\nChange-Id: Ic6a152cb400bef33139357d60f6d0feca855ade2\n"
    },
    {
      "commit": "581ff5ec0dd4c63cae9f86ad95b76ff951853b13",
      "tree": "821e9760b7cab91e028fd2144c7148ee99ff7e04",
      "parents": [
        "62b618eef6749283382b325264daeddb31294a2f",
        "d5c356214fabec1ad9d5d16d673f000deb49ea30"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 20 20:41:29 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 20 20:41:29 2018 +0000"
      },
      "message": "Merge \"Timestamp Truncating whitelist.\""
    },
    {
      "commit": "3ac786d2177388cfa7adf1dfd3f04f87e8a61f5a",
      "tree": "f0390f717c35cdec4f47dcc64a56419ccbd96e35",
      "parents": [
        "29ff057e1a2d7d3421d2d551818b36cc44c302cb",
        "d31bc123a06d2ffc2ca1b76a591a07865744ae12"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Feb 19 10:42:35 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 19 10:42:35 2018 +0000"
      },
      "message": "Merge \"AAPT2: normalize Manifest java identifiers.\""
    },
    {
      "commit": "d5c356214fabec1ad9d5d16d673f000deb49ea30",
      "tree": "42ebd65160ded90da5941fcf1bf90dda6f3bdbdd",
      "parents": [
        "15235cd5f700ba9dfa30532b38bad66f2f75b60e"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Fri Feb 02 10:33:25 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Sat Feb 17 21:11:54 2018 -0800"
      },
      "message": "Timestamp Truncating whitelist.\n\nTest: manually tested.\nChange-Id: I46da375b6c0773ffc611bc06fff12cb4f9a7fc18\n"
    },
    {
      "commit": "983bacb959f45fbe098ab99ddcef40ccc9de4652",
      "tree": "3c89096c8a71ba8f0e7b37cecbaa2c50cc157282",
      "parents": [
        "3d9ae24567134a454132581908d182a51c242c5d",
        "a65bbdf43c2c29222e4067e97cc1ec1137fea516"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Feb 17 01:58:18 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 17 01:58:18 2018 +0000"
      },
      "message": "Merge \"AAPT2: Ensure output formats of files are correctly set\""
    },
    {
      "commit": "ee21f695b6dbc5b9e3e8f4c97d0960569da0f3d2",
      "tree": "190fc031ee5a80c1658c2670ab90833a4caf7558",
      "parents": [
        "0f888de06b3dcbb73a410578d48539ca970f4f3b"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Feb 16 13:29:29 2018 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Feb 16 13:29:32 2018 -0700"
      },
      "message": "Recommend ICU replacements, no clone, no Impl.\n\nWhen ICU has a better replacement class, recommend that APIs use\nthat instead.\n\nYell if someone implements clone(), and point them towards a copy\nconstructor instead.\n\nYell if someone exposes \"Impl\" classes.\n\nTest: manual\nBug: 73392214, 71906588, 62627348\nChange-Id: I75dcba2c4ab7ca426057eefb0335c935c3ced79a\n"
    },
    {
      "commit": "a65bbdf43c2c29222e4067e97cc1ec1137fea516",
      "tree": "5d86bfd1dde9364897dd09c4d79006a4655849fc",
      "parents": [
        "bbf429795d0558797e7ac8d1024fa5c16552e96c"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Feb 15 12:39:44 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Feb 15 16:44:15 2018 -0800"
      },
      "message": "AAPT2: Ensure output formats of files are correctly set\n\nWhen compiling straight to proto from source, the file types\nwere not set correctly (binary XML or proto XML).\n\nBug: 73406447\nTest: manual\nChange-Id: I68c1881a00a2ec1ad58f7ec485af2543d262d076\n"
    },
    {
      "commit": "f74309f5e213d57dc9c53bd4d9310bc1eeee4a96",
      "tree": "d8490d29b8c23040dfcb1b46fa2024a0a5ceaca2",
      "parents": [
        "67d9a90b63fb40320104f027d1e6979e033775d3",
        "bbf429795d0558797e7ac8d1024fa5c16552e96c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 15 06:39:21 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 15 06:39:21 2018 +0000"
      },
      "message": "Merge \"AAPT2: Fix issue with deserializing binary XML\""
    },
    {
      "commit": "79fe852dab82ee0081c291f698e7c3fccdc857cc",
      "tree": "ebf26a9205681ca92eb79ea94e2bd37cd11fc848",
      "parents": [
        "4a9bde84829986a5dc34b85aeea3d0b39bdb5015",
        "31ddcde690e9a8c5d2450152ba784de4c54a1801"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 15 06:11:59 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 15 06:11:59 2018 +0000"
      },
      "message": "Merge \"Log the elapsed realtime in non-chained interface.\""
    },
    {
      "commit": "237b1d0cf699c6e9fe3f59ac00d1167227e52a80",
      "tree": "d3ca94a50aa83003e77eda7c52606b301836e30b",
      "parents": [
        "6467e98270a96c2fe5ff3680804c5ffa90df946d",
        "d05b9130fdbff8062084b566a380c5b058273d75"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 15 05:46:47 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 15 05:46:47 2018 +0000"
      },
      "message": "Merge changes I2f594c22,I37a2b8b8\n\n* changes:\n  AAPT2: Fix compatible-screens element in AndroidManifest.xml\n  AAPT2: Add order attribute to groups\n"
    },
    {
      "commit": "f19f505772e661c0c64b004ae875b95410f82a0b",
      "tree": "1b3ff2bf781fc62754f1c69498e2963cae16db6d",
      "parents": [
        "697c09560e09111ab3597374d42af842c8dcba6b",
        "da9eba300b0f84505fe094374c14d4bc910880d2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 15 02:41:54 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 15 02:41:54 2018 +0000"
      },
      "message": "Merge \"Dump XML files in aapt2 dump\""
    },
    {
      "commit": "bbf429795d0558797e7ac8d1024fa5c16552e96c",
      "tree": "987ac3c405f420e07ff2fdaec3bc3f7037eca487",
      "parents": [
        "da9eba300b0f84505fe094374c14d4bc910880d2"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 14 13:36:09 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 14 16:11:23 2018 -0800"
      },
      "message": "AAPT2: Fix issue with deserializing binary XML\n\nWe assumed that a raw text value set for an attribute meant there\nwere no compiled values set either.\n\nThis would only really happen for attributes that did not belong to any\nnamespace (no prefix:), since we always kept their raw string values\nin case some code relied on it.\n\nBug: 72700446\nTest: make aapt2_tests\nChange-Id: Icba40a1d4b181bfe7cad73131c4dbe5ba7f8b085\n"
    },
    {
      "commit": "31ddcde690e9a8c5d2450152ba784de4c54a1801",
      "tree": "82ed1a5282c8eaf25e43da182565e95e34a08c6a",
      "parents": [
        "9a7b7adca36b2381cc472e0938d2c7e9baf95e92"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Wed Feb 14 16:09:35 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Wed Feb 14 16:09:35 2018 -0800"
      },
      "message": "Log the elapsed realtime in non-chained interface.\n\nTest: statsd test\nChange-Id: I61e457bd069147fd1b1fc964b27d42d4ec19230d\n"
    },
    {
      "commit": "d05b9130fdbff8062084b566a380c5b058273d75",
      "tree": "c841be557f76cf8be9ce9152860d4a47ff15f0bb",
      "parents": [
        "11cdc1cf7ab2e915611e2bb7264bd312012a9b64"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Wed Feb 14 15:40:35 2018 -0800"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Wed Feb 14 15:44:42 2018 -0800"
      },
      "message": "AAPT2: Fix compatible-screens element in AndroidManifest.xml\n\nFix an issue where the compatible-screens element was not being\npopulated correctly. The previous version was missing the screenSize\nattribute which is mandatory. The attributes were also missing the\nresource ID from the framework library as these are a part of the public\nAPI.\n\nChange-Id: I2f594c2259831dbbd96c58db4ba55e8288d4231e\nTest: unit tests\nTest: manually split an APK and dumped with aapt\n"
    },
    {
      "commit": "da9eba300b0f84505fe094374c14d4bc910880d2",
      "tree": "61f967b9c7ea92490db7b309ee3291dd52c32308",
      "parents": [
        "97661735aab95260f68d33896f76d071fe025fcd"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 13 16:44:10 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 14 10:49:32 2018 -0800"
      },
      "message": "Dump XML files in aapt2 dump\n\nTest: manual\nChange-Id: Id7f656c1385f6d1fec8eaa993c8e2b36bb1ae5b0\n"
    },
    {
      "commit": "330af58f2b8582b855085655fae553cdfaf44e6c",
      "tree": "b93137833b438812155cac1ae1958cf963f7d8d3",
      "parents": [
        "73d6050edf397d38aa262f2eff19551a4458ca73"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Thu Feb 08 15:24:38 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Tue Feb 13 23:30:39 2018 -0800"
      },
      "message": "Use elapsed realtime instead of times based on wall clock, which can jump around and go backwards.\n\nTest: statsd unit test passed\n\nChange-Id: Ib541df99231e171b3be2a24f75632693e36da90e\n"
    },
    {
      "commit": "d31bc123a06d2ffc2ca1b76a591a07865744ae12",
      "tree": "5debe4c21d27bb8c66622e4666c621ebe424b1b3",
      "parents": [
        "40ce09581d8ef85ef9d5222d9b7c875429e913d1"
      ],
      "author": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Mon Feb 12 11:03:42 2018 +0000"
      },
      "committer": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Tue Feb 13 14:09:00 2018 +0000"
      },
      "message": "AAPT2: normalize Manifest java identifiers.\n\nCurrently AAPT2 does not allow permissions which last piece contains the\n\"-\" symbol (since it is an illegal character for a java identifier).\n\nAAPT1 would normalize the last piece, therefore creating a valid java\nidentifier.\n\nThis CL makes AAPT2 behave in a similar way to AAPT1, but instead of\nmodifying the original value of the permission string, modifies only the\njava identifier part, leaving the permission string unchanged.\n\nFixes: 72980877\nTest: updated\nChange-Id: Ie44317e07407341ba3e91a84d9b06980547b3448\n"
    },
    {
      "commit": "7d07ad1ef2b0edd4c850d366ea77ab0d24cd9db8",
      "tree": "4cbdd3ffcecf79e81ccaaee650c3c4dd94ee8c67",
      "parents": [
        "d120065f3e50101db4721a3b2235f07dc1044145",
        "37ba3de333a0bdc6ef2833afbdfb57260a58a1a4"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Feb 13 08:41:41 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Feb 13 08:41:41 2018 +0000"
      },
      "message": "Merge \"Don\u0027t put android.os.Parcelable in framework.aidl\" am: 0872f6d5e3 am: 6864210fe2\nam: 37ba3de333\n\nChange-Id: Ib8d8277171ede82ea4626b6d2de2fcb9c1a1d307\n"
    },
    {
      "commit": "37ba3de333a0bdc6ef2833afbdfb57260a58a1a4",
      "tree": "0898f89771e11081f9e4a82a406a56fcba86ff4e",
      "parents": [
        "7532fc8bb98a56adea7b9d07da26b33a3ec9f76f",
        "6864210fe2011bd0e40ea1808dfed5dcd33c64a5"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Feb 13 07:51:59 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Feb 13 07:51:59 2018 +0000"
      },
      "message": "Merge \"Don\u0027t put android.os.Parcelable in framework.aidl\" am: 0872f6d5e3\nam: 6864210fe2\n\nChange-Id: I17a5277ece615569670f5f8ea9c2ed42fb473a52\n"
    },
    {
      "commit": "0ac5791e9ef884762921c8a5c2e2503aea8b5296",
      "tree": "0f7177c277520e68cb6714ee400ad2ff9ba2bcc3",
      "parents": [
        "ca8b6fdf1bea5691e4461ed0819d4eb157afbc81",
        "35e1410551ad82b9bed51b28f57585ff5ea069bc"
      ],
      "author": {
        "name": "Nick Butcher",
        "email": "nickbutcher@google.com",
        "time": "Fri Feb 09 22:42:26 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Feb 09 22:42:26 2018 +0000"
      },
      "message": "Merge \"Prevent AAPT from versioning \u003canimated-selector\u003e tags.\" into oc-mr1-dev\nam: 35e1410551\n\nChange-Id: If9f28bfe12d75fca6b8f07c15b77f78267ef6292\n"
    },
    {
      "commit": "fdbe7d1ca90ac40f9b629524d9aea26e59899c50",
      "tree": "136ed4bf0b85a3bf73654be606a1c1385e8072a3",
      "parents": [
        "4c8fa81d177bfd2f144ebe153df74edb8b332f5a"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Feb 09 11:24:14 2018 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Feb 09 11:29:15 2018 -0800"
      },
      "message": "Don\u0027t put android.os.Parcelable in framework.aidl\n\nParcelable shouldn\u0027t be in the list of parcelables in framework.aidl.\nRemove it to fix warning when running aidl:\nframework.aidl:287 attempt to redefine built in class android.os.Parcelable\n\nAlso make the dependency on sdk_parcelables not be order-only so\nframework.aidl gets rebuilt when sdk_parcelables changes.\n\nBug: 73135791\nTest: ParcelableDetectorTest\nTest: out/target/common/obj/framework.aidl does not contain android.os.Parcelable\nChange-Id: If5222879be9ec1e5fa08810adc624ec526ddc0ec\n"
    },
    {
      "commit": "e78a8169665c19b5539508f113093b6c2a4b80de",
      "tree": "0f645728f1a25f71a0db4046d96226bc3d77afb6",
      "parents": [
        "c8b76fe1f4d48aadf07c479dc9412d6b344bab1a"
      ],
      "author": {
        "name": "Nick Butcher",
        "email": "nickbutcher@google.com",
        "time": "Tue Jan 09 15:24:21 2018 +0000"
      },
      "committer": {
        "name": "Nick Butcher",
        "email": "nickbutcher@google.com",
        "time": "Fri Feb 09 11:36:27 2018 +0000"
      },
      "message": "Prevent AAPT from versioning \u003canimated-selector\u003e tags.\n\nBug: 69359529\nTest: Manually tested with ag/3178054\nChange-Id: I10ae4d96c2a31a0a7c363d7a9292ecdfd3bb526a\n"
    },
    {
      "commit": "1084432e1e15ffa96ea03045daaa2220dc21d566",
      "tree": "d9abdb849f002c16c32afee18a08525012af666a",
      "parents": [
        "ea8feabec59d4c4925a8ff8b3c35ff7ba909d671"
      ],
      "author": {
        "name": "Mohamed Heikal",
        "email": "mheikal@google.com",
        "time": "Wed Feb 07 15:17:38 2018 -0500"
      },
      "committer": {
        "name": "Mohamed Heikal",
        "email": "mheikal@google.com",
        "time": "Thu Feb 08 14:50:14 2018 -0500"
      },
      "message": "AAPT2: Fix silent failure when ContainerReader fails during Link\n\nCurrently in the link step ContainerReader is used to read files but the\nreader is not checked for errors prior to the read. This can lead to\nsilent failure when reading invalid resource files.\n\nChange-Id: I6420699ad30b5b84b0b2c696af8eb5a6cbd4111e\n"
    },
    {
      "commit": "83b3cb483088a175e6bc473e92853c13a2b273b3",
      "tree": "7cde67ffe392e5651ee55f5d7077856397d0fcb2",
      "parents": [
        "a0f75399e240ef82c4e56a47d1016d02558c5b21",
        "cf4d62fdd3a604eb53ed9b1912d6cc0c28d54c97"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Feb 07 02:13:05 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 07 02:13:05 2018 +0000"
      },
      "message": "Merge \"Add missing copyright messages\" am: 872f386f6b am: 32a1dc5075\nam: cf4d62fdd3\n\nChange-Id: I75f2c81a9e7c7ec0175e50b3bb58cedc8c36a2be\n"
    },
    {
      "commit": "cf4d62fdd3a604eb53ed9b1912d6cc0c28d54c97",
      "tree": "30699a0baeb8ab4fde952331da404b6168110aa2",
      "parents": [
        "2c732796e1e6499006b4e1165dd9a47d0cd59972",
        "32a1dc5075a216582bdeb21589cc5348e041c5e2"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Feb 06 23:06:08 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Feb 06 23:06:08 2018 +0000"
      },
      "message": "Merge \"Add missing copyright messages\" am: 872f386f6b\nam: 32a1dc5075\n\nChange-Id: I9602e1c9dda5e842fd71c9f48cf354aea4650d74\n"
    },
    {
      "commit": "1b27440abc8d515012da44914d3ced17c104a68e",
      "tree": "712c73f292f5c943ba0df8809ec43fdcdf309185",
      "parents": [
        "1f14eab551c8c0d32b5b922618c41ac3e72d85e3"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Feb 06 11:10:25 2018 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Feb 06 11:10:25 2018 -0800"
      },
      "message": "Add missing copyright messages\n\nBug: 72993971\nTest: m sdkparcelables\nChange-Id: I9fa422160c29ce3054748b2b8d1e26541a697a90\n"
    },
    {
      "commit": "11cdc1cf7ab2e915611e2bb7264bd312012a9b64",
      "tree": "80eafc89fd3c394718d6eb1e5d2023c4586fdb7a",
      "parents": [
        "d82eeb321b2f6ef504f7d5679ae2069997c70024"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Wed Jan 31 16:43:24 2018 -0800"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Fri Feb 02 12:11:18 2018 -0800"
      },
      "message": "AAPT2: Add order attribute to groups\n\nRequire explicit ordering of groups in the configuration file to ensure\nthat the correct version code is set. Ordering based on a single ABI is\nstraight forward to ensure Play Store delivers the correct APK, but when\nan APK needs more than one ABI things get messy quickly. This also goes\nfor screen density etc. The only thing that is easily sorted without\nthis attribute is android-sdk since an artifact can only reference a\nsingle SDK.\n\nTest: unit tests\nTest: manually split an APK with update config.xml\nChange-Id: I37a2b8b8a8409d6d6ff27c7142d4c8c8065a7a51\n"
    },
    {
      "commit": "22ed4122e7849a4538208c65f403298fe0fff891",
      "tree": "6989cf803cebd137da27b3b2bb2d858246362247",
      "parents": [
        "2043082f968a385c2ab976dffed4d02b027c50e4"
      ],
      "author": {
        "name": "Dave Ingram",
        "email": "dmi@google.com",
        "time": "Tue Jan 30 16:11:52 2018 -0800"
      },
      "committer": {
        "name": "Dave Ingram",
        "email": "dmi@google.com",
        "time": "Tue Jan 30 21:15:36 2018 -0800"
      },
      "message": "AAPT2: Fix typo in BinaryPrimitives oneofs\n\nFollow-up to ag/3449569\n\nBug: 69587794\nTest: aapt2_tests\nChange-Id: I95d2ba600c00bda2a8420794e43501f9bfca01df\n"
    },
    {
      "commit": "b8344dc72fde9386cdecbb1aa8a47f1e8e430111",
      "tree": "6b28079105fb9b0ff8bd194c66e6a1eb03ac46af",
      "parents": [
        "c04c265dd57e0fe2c880e529cc5cfc8164180009"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Wed Jan 24 17:33:35 2018 -0800"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Wed Jan 24 18:25:33 2018 -0800"
      },
      "message": "Fix command line tool to set the right privacy enum.\n\nTest: manual\nChange-Id: I3f0845ea32b46f1a028f8b6d3d4180a90a47beb5\n"
    },
    {
      "commit": "adb4fc73b0d9be2ad5f76c9e7248440625b80b75",
      "tree": "964bf06ab633b33c24e14147e636e87f03969381",
      "parents": [
        "2cef59dc7b027aa499d06882e7f864c1fc971329",
        "68985805f26f5da6cc6b63934cb00fbff2741ca9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 24 18:18:24 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 24 18:18:24 2018 +0000"
      },
      "message": "Merge \"Avoid processing log event when there is no uid field.\""
    },
    {
      "commit": "ae992b6392c10134fe250d32f0d7e85e21998e6f",
      "tree": "036d0753b7233e13479db6348e874e08d8ae92c7",
      "parents": [
        "240ad971ebae7e8870584c840cbc35d55095c994",
        "5fb872e7878266c850bef249a0417a3bc3e18251"
      ],
      "author": {
        "name": "Benoit Lamarche",
        "email": "benoitlamarche@google.com",
        "time": "Wed Jan 24 12:45:48 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 24 12:45:48 2018 +0000"
      },
      "message": "Merge \"Fail when there is an ASM error\" am: 4152497b4b am: 05bb83c87d\nam: 5fb872e787\n\nChange-Id: I63222e0f376184649f8634932edc6ee296418b91\n"
    },
    {
      "commit": "5fb872e7878266c850bef249a0417a3bc3e18251",
      "tree": "1de713567da01253f2c1fc29b576365b343fdf1c",
      "parents": [
        "eacecc37e8fd3b2157ef2a591cd211dead57bb89",
        "05bb83c87db6d1ec874e51760810c81210bac185"
      ],
      "author": {
        "name": "Benoit Lamarche",
        "email": "benoitlamarche@google.com",
        "time": "Wed Jan 24 12:36:26 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 24 12:36:26 2018 +0000"
      },
      "message": "Merge \"Fail when there is an ASM error\" am: 4152497b4b\nam: 05bb83c87d\n\nChange-Id: I27be59afd9f021c2933d10b6becb0f7542162a37\n"
    },
    {
      "commit": "68985805f26f5da6cc6b63934cb00fbff2741ca9",
      "tree": "73239566cf18c18f34d58ac8d4a4cff8fc83a038",
      "parents": [
        "4953824b89bfbdd5a85a2a7182c0903d9283e1d1"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Sun Jan 21 10:05:09 2018 -0800"
      },
      "committer": {
        "name": "Yang Lu",
        "email": "yanglu@google.com",
        "time": "Tue Jan 23 16:43:07 2018 +0000"
      },
      "message": "Avoid processing log event when there is no uid field.\n\nTest: all statsd unit test passed\n\nChange-Id: Id434d86586950a485b30a244f3c030e8202c1c6d\n"
    },
    {
      "commit": "9f17dfcba6f286bca0fb47c32105c07328a4cc5c",
      "tree": "09240955569f717529a572ce2fec9d254c00e321",
      "parents": [
        "b3c2efc6156cb86ae1f8958ee89a8ac404b190df"
      ],
      "author": {
        "name": "Benoit Lamarche",
        "email": "benoitlamarche@google.com",
        "time": "Mon Jan 22 17:38:41 2018 +0100"
      },
      "committer": {
        "name": "Benoit Lamarche",
        "email": "benoitlamarche@google.com",
        "time": "Mon Jan 22 17:42:21 2018 +0100"
      },
      "message": "Fail when there is an ASM error\n\nOtherwise during a build, Locked Region Code Injection may encounter an\nASM Analyzer exception, and the build will not fail, even though\ninjection won\u0027t have succeeded.\n\nTest: make\nChange-Id: Iee69f1a78fde735db62c7f73405b8cec4e410793\n"
    },
    {
      "commit": "e5b3296316b49bda30b2753025632bd8d9c3bf2e",
      "tree": "10ea488e40ec7b72d9cec7fcb80eb0aff8c27e59",
      "parents": [
        "f4e08c3efeda28ce7a9d839745dc14f2ca75d7f4",
        "cf5326fae1da55b9050834bb63bfa264a6d2af60"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 19 17:10:29 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 19 17:10:29 2018 +0000"
      },
      "message": "Merge \"Allow \u003cadopt-permissions\u003e tag in manifest\""
    },
    {
      "commit": "cfd1b4b263da8fac7bda724fae0e42e618256871",
      "tree": "3abe0d80a7f5ba306e7580d13357f3d2d0c923c1",
      "parents": [
        "24de6a45aae21d576e84b1398ce346baf7639710",
        "e3c1a4a9d21e7698e9e5196086198569ac5cc6cd"
      ],
      "author": {
        "name": "David Chaloupka",
        "email": "chaloupka@google.com",
        "time": "Fri Jan 19 10:57:53 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 19 10:57:53 2018 +0000"
      },
      "message": "Merge \"Handle multiple packages of same name in \u0027aapt2 convert\u0027\""
    },
    {
      "commit": "e52851673117f2e486152c606b517637285b17aa",
      "tree": "5a2294840879975d88ae25bf7b65ec21e81ac536",
      "parents": [
        "3727179195cc9d8c46431b6ab2616663b95889aa",
        "1403ff2b0b5f23b11ce427f54c16d3ebd62100eb"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 19 03:37:25 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 19 03:37:25 2018 +0000"
      },
      "message": "Merge \"Ignore missing font in fontchain_linter.py\""
    },
    {
      "commit": "1403ff2b0b5f23b11ce427f54c16d3ebd62100eb",
      "tree": "c6bbf4201c1336faa512c59fd8f40d21f121533f",
      "parents": [
        "633792e2d3fd0d09eebc4294119dcc9b1b1de970"
      ],
      "author": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Thu Jan 18 17:24:31 2018 -0800"
      },
      "committer": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Thu Jan 18 17:24:31 2018 -0800"
      },
      "message": "Ignore missing font in fontchain_linter.py\n\nIt is totally valid if the font is missing even if the font is listed in\nfonts.xml. Android Watch has less fonts and OEM vendor may reduce the\nfont files.\n\nBug: 72159040\nTest: m fontchain_lint\nChange-Id: I22bdf7bfeb6d80a2a338ebf7536c8eaf193b03c5\n"
    },
    {
      "commit": "8f2fffd809690bbef2593fbf45bc3d86a9ceedab",
      "tree": "626897cd34a290d31286b4879683ae19ded07e7f",
      "parents": [
        "f5e25a3052070485fc520863e3e6162097466e39",
        "d06f1f38a9266f4674a89d69d33198abd12b0e78"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 19 01:00:00 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 19 01:00:00 2018 +0000"
      },
      "message": "Merge \"AAPT2: Store BinaryPrimatives in protos as oneofs\""
    },
    {
      "commit": "e3c1a4a9d21e7698e9e5196086198569ac5cc6cd",
      "tree": "e26d206ea6ea40e0d670f6daf14fce0e894130e5",
      "parents": [
        "588a06f5a25adad63337ac481f9e1b55dcc169a1"
      ],
      "author": {
        "name": "David Chaloupka",
        "email": "chaloupka@google.com",
        "time": "Thu Jan 18 13:44:36 2018 +0000"
      },
      "committer": {
        "name": "David Chaloupka",
        "email": "chaloupka@google.com",
        "time": "Thu Jan 18 19:20:01 2018 +0000"
      },
      "message": "Handle multiple packages of same name in \u0027aapt2 convert\u0027\n\naapt2 currently looks-up packages only by package name and then verifies\nwhether the package ID has the expected value. For pre-L we need to be able\nto handle resource tables having packages of same package name but\ndifferent IDs.\n\nNote that this CL fixes only proto-\u003ebinary conversion but many other aapt2\ncommands are still affected. This is because many transformations still\nconsider package name as sufficient identifier of a package.\n\nBug: 72143207\nTest: Manual\nChange-Id: Id8a920d6cd15bec747d3124270f5bcb7f48924cf\n"
    },
    {
      "commit": "415689bb1ca2554c8752debc0a1ed927a885c723",
      "tree": "e40df0b4b2a7c8805ddb23de197dbf46c8a17970",
      "parents": [
        "0b2941fb09c0f6015fc587d47c4d809c29eb168d",
        "b66db4ec4c24d0d46c91d527b7f500fa66efca2b"
      ],
      "author": {
        "name": "David Chaloupka",
        "email": "chaloupka@google.com",
        "time": "Thu Jan 18 10:06:01 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 18 10:06:01 2018 +0000"
      },
      "message": "Merge \"Adjust file reference type in \u0027aapt2 convert\u0027\""
    },
    {
      "commit": "d06f1f38a9266f4674a89d69d33198abd12b0e78",
      "tree": "3b9e22ed452d5008cfe7d7ae3606a19eabfbd082",
      "parents": [
        "a629e4c393e5ac52c07598a5d3b4ed120115c97d"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Thu Jan 11 18:36:22 2018 -0800"
      },
      "committer": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Wed Jan 17 16:58:43 2018 -0800"
      },
      "message": "AAPT2: Store BinaryPrimatives in protos as oneofs\n\nFixes: 69587794\nTest: aapt2_tests\n\nChange-Id: Idf5526f6b1b720b6e476bcdf8c2155e13a6ecc0f\n"
    },
    {
      "commit": "bd56951c5bce2b3b799de1e306275120cf336763",
      "tree": "17e03fa6c928dbf284d657f8d4d3f8058ffd9236",
      "parents": [
        "072abed5f552871db18a86863d04cfc89714ad5f",
        "a4fb17bbbba59c5ee92402eb8c5da4e3c52560b2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 17 20:20:29 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 17 20:20:29 2018 +0000"
      },
      "message": "Merge \"aapt2: Fix issue with Manifest duplicate handling\""
    },
    {
      "commit": "b66db4ec4c24d0d46c91d527b7f500fa66efca2b",
      "tree": "9f0d23edea8a06eb02524a855db208b4e14b1dfb",
      "parents": [
        "200cd63fb3ff5b4354773e9994f4340f18b39cbc"
      ],
      "author": {
        "name": "David Chaloupka",
        "email": "chaloupka@google.com",
        "time": "Mon Jan 15 12:35:41 2018 +0000"
      },
      "committer": {
        "name": "David Chaloupka",
        "email": "chaloupka@google.com",
        "time": "Wed Jan 17 11:07:44 2018 +0000"
      },
      "message": "Adjust file reference type in \u0027aapt2 convert\u0027\n\nWhen converting between binary and proto APKs in either direction, the\n\u0027aapt2 convert\u0027 command did not adjust FileReference type for entries\ninside the resource table. This fix makes in-place changes of the resource\ntable passed to ConvertApk, which is safe since the resource table is\nthrown away after the conversion.\n\nBug: 71854843\nTest: Manual\nChange-Id: Ide6e141269392db15b399db3566f18175f5133d5\n"
    },
    {
      "commit": "a4fb17bbbba59c5ee92402eb8c5da4e3c52560b2",
      "tree": "5b89566ac4d6cbd47a892211be26ff5948d6a28f",
      "parents": [
        "d6808dc0c00ba45fd589449647f792daf9fa8126"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 16 17:05:10 2018 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 16 17:06:33 2018 -0800"
      },
      "message": "aapt2: Fix issue with Manifest duplicate handling\n\nFixed a memory-corruption issue that led to multiple duplicate\npermission entries being generated for Manifest.java.\n\nBug: 71641288\nTest: make aapt2_tests\nChange-Id: I8cd37929c4883aaba2beebbf874c7ee3234d51d8\n"
    },
    {
      "commit": "ba5b9e44bbfa7577c45c5c5e7e75cc1cd82a31b7",
      "tree": "275dfe9ba25338043f86c3f9ef4f431c135991a7",
      "parents": [
        "02c0e98600b6b0cdf912effea48877b5ddbafed9"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Wed Jan 10 21:31:59 2018 -0800"
      },
      "committer": {
        "name": "Yangster",
        "email": "yanglu@google.com",
        "time": "Mon Jan 15 16:41:29 2018 -0800"
      },
      "message": "Stats log interface for single node attribution chain.\n\nUsually the input parameters for attribution chain is list of int64/string.\nThe new c++interface takes one int64 and one string as input and write\nas a single node into logd.\n\nThis will help avoid allocating temp objects in battery stats java code.\n\nTest: all statsd unit test passed.\nChange-Id: Ia0f7f26b71a570bd3628c42726a5afb0a500d073\n"
    },
    {
      "commit": "db947de10f2231cece6924537b73e1ac56fd5a88",
      "tree": "3fb03e8749712067957a31052f2b7614b2ee861c",
      "parents": [
        "21d4f67a317a2a806320b9a02e3e13af5e1b6acd",
        "336dd0bf63814e9bc51635d763099f27939b9fb6"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 12 20:57:05 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 12 20:57:05 2018 +0000"
      },
      "message": "Merge \"Add another pass of commont lint rules.\""
    },
    {
      "commit": "336dd0bf63814e9bc51635d763099f27939b9fb6",
      "tree": "57820808a1f5b4e7c35ec8b7f35147c0179b67b5",
      "parents": [
        "4ea22a2b3a83b0f34cf8c648f503cc61ac8ff228"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Jan 12 12:12:27 2018 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Jan 12 12:12:29 2018 -0700"
      },
      "message": "Add another pass of commont lint rules.\n\n-- Parcelables should be inflated through CREATOR\n-- Methods with no arguments should throw ISE\n-- Examine constructors for Executors\n-- Listeners should always be last for lambdas\n-- Verify naming of UserHandle methods\n-- Verify naming of Params objects\n-- Verify naming of Context service constants\n-- Verify tense of enabled methods\n\nBetter exception tracking.\n\nTest: manual inspection\nBug: 37784434, 37749454, 37705832\nBug: 37705176, 37536230, 37533040, 71866617\nChange-Id: If2f19784c46a4d99f54577a7365babfd357ca3f7\n"
    },
    {
      "commit": "3c3f9b5d07a974a2d347210fd59bd19851b2faea",
      "tree": "06c4bae7f76f723583fa3b2c8938a502de93d6f6",
      "parents": [
        "79131f7a227eb5f2bbd4e6ea29e14d834c634101"
      ],
      "author": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Fri Jan 12 14:24:09 2018 +0000"
      },
      "committer": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Fri Jan 12 14:26:31 2018 +0000"
      },
      "message": "AAPT2: always compile 9patch files\n\nTest: existing tests\nBug: 70578281\nChange-Id: I7ffcbdd664108348182e71d01b1680e2399ec37c\n"
    },
    {
      "commit": "4f9ba20690fcacc29da2b4044d1c6c8c3cd96260",
      "tree": "ff0ae84d4fc2009b13d5ee093cf155140645f619",
      "parents": [
        "da6e6356d7cd08fadd1b3b16b7f588ea87e5084f",
        "73bff1e8519bb73f17a801f45977d41b69b5b0d0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 12 02:37:13 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 12 02:37:13 2018 +0000"
      },
      "message": "Merge \"AAPT2: Allow compatible duplicate Attributes\""
    },
    {
      "commit": "73bff1e8519bb73f17a801f45977d41b69b5b0d0",
      "tree": "9ac5f4e491ed617b6cefe118b91edb637c6c35a4",
      "parents": [
        "14c2ae4a6e62b78f2c994112d08dbe3d4de64695"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Dec 08 16:06:10 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jan 11 13:54:11 2018 -0800"
      },
      "message": "AAPT2: Allow compatible duplicate Attributes\n\nIf a resource XML file defines two compatible Attributes, they should\nbe merged without throwing an error. Ex:\n\n\u003cdeclare-styleable\u003e\n  \u003cattr name\u003d\"conflict\" format\u003d\"string\" /\u003e\n\u003c/declare-styleable\u003e\n\n\u003cdeclare-styleable\u003e\n  \u003cattr name\u003d\"conflict\" format\u003d\"string|reference\" /\u003e\n\u003c/declare-styleable\u003e\n\nIn this case, string|reference and string are the same, so these should\nmerge correctly.\n\nBug: 65699599\nTest: make aapt2_tests\nTest: make AaptBasicTest\nChange-Id: I7b0f956d2332f7f0b458acd59ca0a606b2cfdf95\n"
    },
    {
      "commit": "0556f3382bfb50c9c3aa25106589445de7bbb755",
      "tree": "1e76078d9f58af64ff4641b4d10bfbdbd9ec8f93",
      "parents": [
        "84c699a4b97afdde27e9ebb0da78e14e47a51b5f"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Tue Jan 09 22:31:45 2018 -0800"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Wed Jan 10 19:59:58 2018 -0800"
      },
      "message": "Add virtual dtor for virtual classes\n\nDelete called on non-final virtual classes but non-virtual destructor.\n\nFixes -Wdelete-non-virtual-dtor warning.\n\nTest: m checkbuild\nChange-Id: Ia84c118db1a53f1ac846354a6023726e394a87ed\n"
    },
    {
      "commit": "f55db8c3641886a8307441488a62fad22439af0a",
      "tree": "48165671a6d40743a97c9b534d59a7a04f6c207c",
      "parents": [
        "12dad0c4fc5fc8f0988dca0fffd2d26f2cb04195"
      ],
      "author": {
        "name": "Nick Butcher",
        "email": "nickbutcher@google.com",
        "time": "Tue Jan 09 15:24:21 2018 +0000"
      },
      "committer": {
        "name": "Nick Butcher",
        "email": "nickbutcher@google.com",
        "time": "Tue Jan 09 15:24:21 2018 +0000"
      },
      "message": "Prevent AAPT from versioning \u003canimated-selector\u003e tags.\n\nBug: 69359529\nTest: Manually tested with ag/3178054\nChange-Id: I10ae4d96c2a31a0a7c363d7a9292ecdfd3bb526a\n"
    },
    {
      "commit": "20ac944ea00dbef78574b37e490ebe66c9190c13",
      "tree": "e780c5acea88c356c1725dcbef2aad621b06a64a",
      "parents": [
        "9c3d64e60e21c2a39fefe399250ff11d5f55ae3e"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Mon Jan 08 14:54:48 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Mon Jan 08 14:54:48 2018 -0800"
      },
      "message": "Handle null string in jni and c++ stats-log-api interfaces.\n\nTest: statsd unit test passed.\nChange-Id: I4a475d6fcc0b4a0293450bc0ccdd718b362c498b\n"
    },
    {
      "commit": "95820bc4df43623b499af0534391f5dc00b88be7",
      "tree": "8d73ccaa8c72900d9379e06ea080e876048092af",
      "parents": [
        "2ef95c9d1dad6273fae93bd50789adbf967c0119",
        "2807036b099839f628ae362c38aeab889b870613"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Mon Jan 08 21:22:21 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jan 08 21:22:21 2018 +0000"
      },
      "message": "Merge \"Add virtual dtor for virtual classes\" am: 27f61a94d6 am: 2d7813a4a7\nam: 2807036b09\n\nChange-Id: I3723483c2aac5580a7db3256a39eca278a3ee9fb\n"
    },
    {
      "commit": "2807036b099839f628ae362c38aeab889b870613",
      "tree": "27e419b6ac3514073b133bcbe17b0a6562a1cb7b",
      "parents": [
        "fe73dd054248556d7dcf97d7f020bdc265862621",
        "2d7813a4a779eec7152a4cdc93d8fc1ed833bc34"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Mon Jan 08 21:07:09 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jan 08 21:07:09 2018 +0000"
      },
      "message": "Merge \"Add virtual dtor for virtual classes\" am: 27f61a94d6\nam: 2d7813a4a7\n\nChange-Id: I8787ff83ec93f5a8ae2e08e1af573d13750d9aa5\n"
    },
    {
      "commit": "3c034c987e1eeb49660fb62d3426c292a01412c9",
      "tree": "168d3f0040e3e74ac1b2741f91d2dbfcee166535",
      "parents": [
        "a598c05d632d303a49ba06fe306136e0039c785d"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Fri Dec 22 17:36:47 2017 -0800"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Sat Jan 06 20:33:14 2018 -0800"
      },
      "message": "Implement a new type of section which reads from logd and dumps proto.\n\nAnd implement a file section which reads from event-log-tags for\ndecoding binary logs.\n\nBug: 70936599\nTest: atest incidentd_test \u0026\u0026 atest incident_helper_test and flush on\ndevice and test log sections and event_log_tag_map\nChange-Id: Ib3d35e317f355de69f01ded012482486e9a43da6\n"
    },
    {
      "commit": "27f61a94d67cf16d1ec0a12adfc97c77e176ca0f",
      "tree": "9bf4f712f722287233f9e28041d9e22b07bc2692",
      "parents": [
        "6efee9c079eecf025384228763982eecd935c2f8",
        "6dbd3d7a59748c301cad50685e3940fbcdf37f61"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 05 23:27:33 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 05 23:27:33 2018 +0000"
      },
      "message": "Merge \"Add virtual dtor for virtual classes\""
    },
    {
      "commit": "cf5326fae1da55b9050834bb63bfa264a6d2af60",
      "tree": "d71de994bad2da27695f001ffc74d486871084fc",
      "parents": [
        "0ff8dabf2c258389ee6a633b4c7f99477b63071a"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Fri Jan 05 16:03:50 2018 -0500"
      },
      "committer": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Fri Jan 05 16:04:33 2018 -0500"
      },
      "message": "Allow \u003cadopt-permissions\u003e tag in manifest\n\nChange-Id: Ib595ab84da3a68e6a72f203ee51e3c86c7a3a3d1\nFixes: 71640901\nTest: migrate GoogleServicesFramework to AAPT2, build\n"
    },
    {
      "commit": "e058f1a95245e90cd6f12d7558a39b8af8d61053",
      "tree": "89d8e5838457f1e0cfa81d3ee6eb12a8a4a8096e",
      "parents": [
        "9c777b22da556b776a098c0735d8881734e15865",
        "0f2599fbf0ba8128b2a2c4de4d40aa37ea6c3d10"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Thu Jan 04 21:09:39 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 04 21:09:39 2018 +0000"
      },
      "message": "Merge \"Dump Proto to a csv\""
    },
    {
      "commit": "0f2599fbf0ba8128b2a2c4de4d40aa37ea6c3d10",
      "tree": "f35fb77b864e463f76bd31e17c2b8c576265377e",
      "parents": [
        "48989c2744dcaaba4d4a23d9ca19b41c88c483bf"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Thu Nov 16 18:19:45 2017 -0800"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Thu Jan 04 11:03:31 2018 -0800"
      },
      "message": "Dump Proto to a csv\n\nBug: 69427323\nTest: N/A\nChange-Id: I1b89898afc30d5a0df6355ee1f6477df8d271f98\n"
    },
    {
      "commit": "e9727164cbfb0d5d36cecb00841f04728cfc18da",
      "tree": "8a96cd7dabd361e87d1330833020a5c7e579f733",
      "parents": [
        "478b6caa48ee001aa9273e36efe1b754dca87d7e",
        "52d401119589b7fd43b5d417329e8bd48d2802db"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jan 04 01:17:42 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jan 04 01:17:42 2018 +0000"
      },
      "message": "Merge changes I9de0ffe9,Idc804896 am: 153fb1c6e0 am: 99161bc1c7\nam: 52d4011195\n\nChange-Id: Ia3b7f49d4dbd38660570c7c84991a69f86bf24e4\n"
    },
    {
      "commit": "52d401119589b7fd43b5d417329e8bd48d2802db",
      "tree": "8ab5fd560a9f29ca293a2b1b345e0986d85910cb",
      "parents": [
        "2bac68a6357e01cebd68d4287c64e93a84edb53a",
        "99161bc1c7176cba709430dea74bf35097e052d1"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jan 04 01:10:47 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jan 04 01:10:47 2018 +0000"
      },
      "message": "Merge changes I9de0ffe9,Idc804896 am: 153fb1c6e0\nam: 99161bc1c7\n\nChange-Id: Id831c5ab771fa59ac9906d473ffeb7720fbbdf54\n"
    },
    {
      "commit": "6dbd3d7a59748c301cad50685e3940fbcdf37f61",
      "tree": "34e9ef32dfadd8b649605eb2ffe294ae6fce41ad",
      "parents": [
        "1c876b73b3ce305ce9d07f623837f0ee1af2df06"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Wed Dec 27 14:10:54 2017 -0800"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Wed Jan 03 11:41:12 2018 -0800"
      },
      "message": "Add virtual dtor for virtual classes\n\ndelete called on non-final virtual classes but non-virtual destructor.\n\nFixes -Wdelete-non-virtual-dtor warning.\n\nTest: m checkbuild\nChange-Id: I142a2f70286a28722e462df4c160cb7aa3753c2a\n"
    },
    {
      "commit": "2087716f2bdca90c7c3034d556ac12911bd8018e",
      "tree": "448895d8ce6f40644aa184b15fe024385d26d3c1",
      "parents": [
        "28bc987f61400b2862174149486e9f032c386a5f"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Fri Dec 22 17:19:39 2017 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Mon Jan 01 10:01:36 2018 -0800"
      },
      "message": "1/ Support nested message and repeated fields in statsd.\n2/ Filter gauge fields by FieldMatcher.\n3/ Wire up wakelock attribution chain.\n4/ e2e test: wakelock duration metric with aggregated predicate dimensions.\n5/ e2e test: count metric with multiple metric condition links for 2 predicates and 1 non-sliced predicate.\n\nTest: statsd unit test passed.\n\nChange-Id: I89db31cb068184a54e0a892fad710966d3127bc9\n"
    },
    {
      "commit": "fca5e427e21f69e42a732600474bb97bf1f0eb7d",
      "tree": "51f368a6938bce83e1e68c860457ec9505c40c00",
      "parents": [
        "e6aa6d14212eee2261bec5b226bf673fd8985845"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Dec 20 15:03:36 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Dec 28 08:17:51 2017 -0800"
      },
      "message": "AAPT2: \u003cuses-library /\u003e and \u003clibrary /\u003e don\u0027t need to be Java packages\n\n- Also fixes issue where a failure checking the Java package of an attribute\nwould yield no error message.\n\nBug: 70722199\nTest: make aapt2_tests\nChange-Id: I417d5ffe18c8d4ba2f1638f9fb9ba29278ec8e94\n"
    },
    {
      "commit": "e6aa6d14212eee2261bec5b226bf673fd8985845",
      "tree": "0b13f8dc86d06837617ed57d32d5640ec6c654de",
      "parents": [
        "f3630cbe8ab567772e7722d7e8172a9da679dbf5"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Dec 20 14:01:14 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Dec 28 08:17:43 2017 -0800"
      },
      "message": "AAPT2: Keep file enumeration consistent across platforms\n\nFilesystem directory enumeration is platform dependent, so\nsort the files lexicographically according to source path before\nconsuming them in the compile command.\n\nBug: 70680618\nTest: manual\nChange-Id: I6706dea2eb40cbaff8a586994dd1013976e4ced4\n"
    },
    {
      "commit": "d14c826c82659aaad427e1e609d7b957cdb3edf6",
      "tree": "212ba1197efb782bed4a5d3f066b3890f14a125d",
      "parents": [
        "1f661c303a2e69c9ef1e20a505bba63e3a78192a",
        "78c43d7bee2a476d6edffe0a4368eb6fcef38c31"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 20 18:05:53 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 20 18:05:53 2017 +0000"
      },
      "message": "Merge changes I0face862,If2d091e5,I4e18e63f\n\n* changes:\n  AAPT2: Sort artifacts based on the Play Store rules.\n  AAPT2: Allow empty group definitions\n  AAPT2: Get list of multi-APK artifacts without APK file\n"
    },
    {
      "commit": "54839e0d30ba09607ae15a9d9730012eadb4517a",
      "tree": "3055483ac8584a40cfd2fee98775fe3a27419e4a",
      "parents": [
        "e3a65edb25325f6f3595f58f0c4326441d24bec6",
        "c81d9f36ec2372b0a9424186f5fee5b189769d4a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 20 15:27:19 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 20 15:27:19 2017 +0000"
      },
      "message": "Merge \"AAPT2: Add flag to compile command for outputting symbols\""
    },
    {
      "commit": "ad9e1324ff2c459d0ee6ee571d4a3e458c02cc81",
      "tree": "52c46ddcc0902f3495cdfeb626b9e697fdb9456f",
      "parents": [
        "8226fd9e7d9bbf2b9d3f2293e788628ef229b136"
      ],
      "author": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Tue Dec 19 16:22:42 2017 +0000"
      },
      "committer": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Wed Dec 20 13:25:59 2017 +0000"
      },
      "message": "AAPT2: treat manifest validation errors as warnings when asked\n\nBug: 65670329\nTest: updated\nChange-Id: Ic554cc20134fce66aa9ddf8d16ddffe0131c50e9\n"
    },
    {
      "commit": "c81d9f36ec2372b0a9424186f5fee5b189769d4a",
      "tree": "2e018e81365882200ab7ace6783c5651e11ad7bb",
      "parents": [
        "8226fd9e7d9bbf2b9d3f2293e788628ef229b136"
      ],
      "author": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Tue Dec 05 12:07:28 2017 +0000"
      },
      "committer": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Wed Dec 20 12:04:23 2017 +0000"
      },
      "message": "AAPT2: Add flag to compile command for outputting symbols\n\nOnly XML files can define resources inside of them, so the fragment\nR.txt will only be created for XML files. The fragment R.txt will\ncontain files defined inside the XML files and the file itself.\nFor example for res/layout/my_layout.xml that defines \"@+id/myView\" the\nfragment R.txt will contain \"default int id myView\" and \"default int\nlayout my_layout\".\nResources defined with the \"public\" keyword will have the word \"public\"\nin the partial R.txt, resources defined with the \"java-symbol\" keyword\nwill have the word \"private, and all other resources will have the word\n\"default\".\nIf a string is declared in values/strings.xml as:\n\u0027\u003cstring name\u003d\"foo\"\u003etext\u003c/string\u003e\u0027\nthen the partial R.txt will contain \"default int string foo\". If the\nsame string is also marked as public in the values/public.xml as:\n\u0027\u003cpublic type\u003d\"string\" name\u003d\"foo\" id\u003d\"0x7f000001\"/\u003e\nthen the partial R.txt for that file will cointain:\n\"public int string foo\".\nAlso, the resource IDs will be skipped as this is only for compilation,\nproper IDs will be generated at linking phase.\n\nTest: manual\nChange-Id: I37d07d5ee4a9f2e5a60a54e48579eba86ae7dd60\n"
    },
    {
      "commit": "5c693f2b8299c78e24d9f92b9691a861db041d45",
      "tree": "fa3a914413608d9686736f760b00f4871969888f",
      "parents": [
        "f7314652ed15cac317f7ddc8ddb034f77600e666",
        "71be70507de9cb619b644e55eda1cc181e3f7e90"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Dec 19 22:42:53 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 19 22:42:53 2017 +0000"
      },
      "message": "Merge \"AAPT2: Propagate SPEC_OVERLAYABLE flag to final APK\""
    },
    {
      "commit": "78c43d7bee2a476d6edffe0a4368eb6fcef38c31",
      "tree": "6d039a14cd325c041d404e2058bed7d2a201c216",
      "parents": [
        "39e474f4b4a975d8befa1e8f4cbedab5f47a43fa"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Mon Dec 04 09:08:38 2017 -0800"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Tue Dec 19 13:52:30 2017 -0800"
      },
      "message": "AAPT2: Sort artifacts based on the Play Store rules.\n\nSort output artifacts so that the updated versionCode manifest entry\nwill allow correct handling of updates from Play Store. The most\nimportant dimension is Android SDK version. It is important that a split\nbased on min SDK version will allow a user to get a new APK if they\nupgrade the OS on their device to support a new split.\n\nABI splits need to also be taken into consideration as it is possible\nfor a device to run in ARM emulation mode and installing an ARM APK over\na x86 APK could cause performance regressions.\n\nThe XML file format was updated to give each of the configuration groups\nhave their own section of the XML file. This allows the sort order to be\ndetermined by a groups ordering. Artifacts can now be added to the\nconfiguration file in an arbitrary order. Since this will be the common\ncase for developers, it will help reduce errors from inserting a new\nartifact in the wrong spot.\n\nThe implementation follows the rules outlined at:\nhttps://developer.android.com/google/play/publishing/multiple-apks.html\n\nTest: Unit tests\nTest: Manual process XML configuration\n\nChange-Id: I0face862c6d6b9d3cd2d99088afe5b9491be0120\n"
    },
    {
      "commit": "39e474f4b4a975d8befa1e8f4cbedab5f47a43fa",
      "tree": "91cc16995c35d13b76fb471ea7631b49a800dc0c",
      "parents": [
        "2c12241fa8edaa4ae8bd01f50980ae647c41b45c"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Mon Dec 18 14:44:11 2017 -0800"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Tue Dec 19 13:52:30 2017 -0800"
      },
      "message": "AAPT2: Allow empty group definitions\n\nWith ABI, screen density, and locale, it is possible to use a shorthand\nnotation when the group only has a single entry. The shorthand is to\nleave the group empty and use a valid configuration for the group name.\n\nTest: manually ran optimize command\nTest: unit tests\n\nChange-Id: If2d091e587474847c6c9e9be1a29196b261cc82d\n"
    },
    {
      "commit": "2c12241fa8edaa4ae8bd01f50980ae647c41b45c",
      "tree": "08795297f9d406d6f75bce5f54cddd17d5c0851c",
      "parents": [
        "f7314652ed15cac317f7ddc8ddb034f77600e666"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Fri Dec 15 16:55:54 2017 -0800"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Tue Dec 19 13:52:30 2017 -0800"
      },
      "message": "AAPT2: Get list of multi-APK artifacts without APK file\n\nAllow the optimize command to produce a list of output artifact names\nwithout needing to read the input APK from disk. This not only saves\ndisk reads for a file that will not be used, it also allows the list\nof outputs to be generated without having an APK file yet.\n\nTest: unit tests\nTest: split an APK\nTest: print list of outputs without an APK\nChange-Id: I4e18e63f298a07f26ab0de2b2f0acb769bb535ba\n"
    },
    {
      "commit": "107f7cc4c4adfc01402dc5a52dc39976b75abbe2",
      "tree": "39c1ac19cceba81e9f7ac0424c10a1e0196dd183",
      "parents": [
        "e2527f82c8efa592fc5cda62ca00fb6b83aabc7a",
        "f68e747e05628c0d2544080aa7c8cc8e68eeae29"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 19 19:07:53 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 19 19:07:53 2017 +0000"
      },
      "message": "Merge \"Remove stream.proto and cpp-streaming-proto generates field name to id mapping by default\""
    },
    {
      "commit": "f68e747e05628c0d2544080aa7c8cc8e68eeae29",
      "tree": "10917fec1af65c090458259ca6bc93ffb40b5542",
      "parents": [
        "39b4499d943d2a078b7c7ca2936908d7aac719d1"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Mon Dec 18 15:55:19 2017 -0800"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Mon Dec 18 17:37:50 2017 -0800"
      },
      "message": "Remove stream.proto and cpp-streaming-proto generates field name to id\nmapping by default\n\nTest: atest incident_helper_test\nChange-Id: Iab04973ea78b942e44503fcd6ae60808caf3b9e0\n"
    },
    {
      "commit": "71be70507de9cb619b644e55eda1cc181e3f7e90",
      "tree": "1ad3c588be3dd06b39b1ba5c3229f80ca08d62bd",
      "parents": [
        "6bb6fad16d93a5859d47dcf962337c2719e585dd"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Dec 12 16:48:07 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Dec 18 14:16:02 2017 -0800"
      },
      "message": "AAPT2: Propagate SPEC_OVERLAYABLE flag to final APK\n\nResources can be marked as overlayable, which means they can\nbe overlaid by runtime resource overlays.\n\nThis change propagates this state to the final resource table that\nis installed on device.\n\nFuture work:\n- Have the idmap tool respect the overlayable state and ignore\n  entries that overlay anything else.\n\nBug: 64980941\nTest: make aapt2_tests\nChange-Id: Id45b1e141a281be2ee32a4ac3096fcf1114d523b\n"
    },
    {
      "commit": "149008d892ce76e83f6d95db09cdbb787293337b",
      "tree": "e15d2f7ae4f167f8ec2b24c5c2d8b000362aa23b",
      "parents": [
        "4e54d6092bbcb2ac7ff895a7955acdd1e26e838c"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Dec 15 11:07:53 2017 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sat Dec 16 20:43:50 2017 -0800"
      },
      "message": "Initial sdkparcelables\n\nAdds a tool that can convert an SDK stubs jar into a framework.aidl\nfile by parsing the jar with ASM to find classes that implement\nandroid.os.Parcelable directly or indirectly.\n\nBug: 70046217\nTest: java -cp out/host/linux-x86/framework/sdk_parcelables_test.jar org.junit.runner.JUnitCore com.android.sdk_parcelables.ParcelableDetectorTest\nChange-Id: Idc804896b8860352633a85168748af1b08777205\n"
    },
    {
      "commit": "58a6cf6afe21d7e068ae736135634e15cb138b52",
      "tree": "fb5c7d748ce9626f25e009bce793cde9da5b70a2",
      "parents": [
        "f6c6ea262d8f041704746aade185e279f3b51fa0",
        "7604aeaf99b0ee14c1f9df95db0fc1d4e75b1baa"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Dec 16 04:15:11 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Dec 16 04:15:11 2017 +0000"
      },
      "message": "Merge \"Stats log api for attribution chain.\""
    },
    {
      "commit": "7604aeaf99b0ee14c1f9df95db0fc1d4e75b1baa",
      "tree": "aea4849d1b8ba16d2b470fa85749a2153f29e92c",
      "parents": [
        "8cf5b695cea4b197284097ec93912426c311438c"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Mon Dec 11 22:55:49 2017 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Fri Dec 15 16:53:29 2017 -0800"
      },
      "message": "Stats log api for attribution chain.\n\nTest: all unit test passed.\nChange-Id: I628d409e517f4f95c8da1d0c7fd4d514c1d9196d\n"
    },
    {
      "commit": "6831a2646f8d25eb8ce33653e4d3ac0020fecae9",
      "tree": "ab4b3dbfa5f82b2f76c2a67926cc32e18d4c07b9",
      "parents": [
        "73617b0cc04e82a79721a77b73daefe5a93c223f",
        "0a368b2c391dd3ebaf6b8917c16c41b65c1d5ab7"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Dec 16 00:03:53 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Dec 16 00:03:53 2017 +0000"
      },
      "message": "Merge \"Adds API for apps to push events to statsd.\""
    },
    {
      "commit": "0a368b2c391dd3ebaf6b8917c16c41b65c1d5ab7",
      "tree": "4ef577b9c57a137be83329a37037c0310c152650",
      "parents": [
        "b669be1dcca1fb131934fa6322de77f5e0c6eb7b"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Wed Dec 06 16:28:16 2017 -0800"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Thu Dec 14 16:19:29 2017 -0800"
      },
      "message": "Adds API for apps to push events to statsd.\n\nThis API allows app to construct custom metrics based on labels\nchosen by the app developers. Also added some buttons to manually\ntest this functionality in the dogfood app.\n\nTest: Verified that Android can be built and tested with custom app.\nBug: 69522276\nChange-Id: Ifb7abea4c1d62fb435a9cb6f32df12bc2234d82f\n"
    },
    {
      "commit": "e3b532ce0ec8259644982491cfa79b636e85f5fa",
      "tree": "b837bb6c0a0fb772d503b23b1df48ebb7976ed8f",
      "parents": [
        "06a601f355b85361b243ccef9083ec8ad2dd7333",
        "dc785052d0fb8a6651df25f42bf4254330445ce9"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Dec 14 22:27:02 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 14 22:27:02 2017 +0000"
      },
      "message": "Merge \"AAPT2: Enable mangled symbol lookup in AssetManagerSymbolTable\""
    }
  ],
  "next": "9bc6eaca2c8f1c60cb2b7abfa0afc880badd1f44"
}
