)]}'
{
  "log": [
    {
      "commit": "a0994a80d10a61ba6a5136e36da23955ce90bd6a",
      "tree": "259db297bb5c98a415136d331bff689563e0d6bb",
      "parents": [
        "5de80df81e205aea56dea0eda94aa2e63a51e177"
      ],
      "author": {
        "name": "Sasha Smundak",
        "email": "asmundak@google.com",
        "time": "Mon Feb 11 15:29:47 2019 -0800"
      },
      "committer": {
        "name": "Sasha Smundak",
        "email": "asmundak@google.com",
        "time": "Fri Feb 15 10:52:57 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: I89cb31814f1442c91c31e5b867501d768679230e\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": "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": "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": "a1b644e88cfe5319e9ada7ad24e6cd215a7ea402",
      "tree": "e4b24972d2c59b6512cd981b3edf78b03f7c1add",
      "parents": [
        "d0c404cb21de6e86329b5ceb79d1459dd8f2f4cb"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 11 11:09:20 2018 -0800"
      },
      "committer": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Dec 17 20:00:55 2018 +0000"
      },
      "message": "Fix performance-for-range-copy warnings\n\nBug: 30413223\nTest: make with WITH_TIDY\u003d1 DEFAULT_GLOBAL_TIDY_CHECKS\u003d-*,performance*\nChange-Id: Ie481e88025a7a1f3abde8ff63420d5ccd8577e52\n"
    },
    {
      "commit": "054dab1d476eab03823d4cbce40b1b081a65bf46",
      "tree": "06d7f8189b94f2899cb27d97723cc8e392fb78b4",
      "parents": [
        "3cfdb9484505f565025c8c2646b9fc2c7ceae7b9"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Dec 10 13:52:46 2018 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 11 11:27:17 2018 -0800"
      },
      "message": "Fix cert-dcl16-c clang-tidy warnings.\n\nBug: 120614316\nTest: make with WITH_TIDY\u003d1 DEFAULT_GLOBAL_TIDY_CHECKS\u003d-*,cert-dcl16-c\nChange-Id: I2dc262d3407aafa969e921236dc3fc3ae60eb9d4\n"
    },
    {
      "commit": "d100107806bc02f8f9866790e0df8975d4764d4a",
      "tree": "e6ac242f964ae0fc24cd60dee7417e7b7ee22e8a",
      "parents": [
        "7751045a3aede1e938a1ab0a390db25bb3fafa0b"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Nov 14 15:13:39 2018 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Nov 14 15:54:32 2018 -0800"
      },
      "message": "switch to using android-base/file.h instead of android-base/test_utils.h\n\nTest: compile\nBug: 119313545\nChange-Id: I664fb32522d01909c603d7b903475c4e9aea9223\n"
    },
    {
      "commit": "a8f2601d282018ff5e27a4f56f059701bc16afbe",
      "tree": "3f517886066c3791c3c85b4a9a61866bc051e165",
      "parents": [
        "e5688052098f96e91feb1c6b9242153f15ca586f",
        "5cc170017128c25eb4ee887855444cbfcb930893"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 17 00:18:07 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 17 00:18:07 2018 +0000"
      },
      "message": "Merge \"Stop using DIST_DIR directly, use dist-for-goals instead\""
    },
    {
      "commit": "e75f2f504e4d119dc83d077802e62031efb9d300",
      "tree": "7dc043ba5f0e34433e90d88249c1a4dfa1198b48",
      "parents": [
        "4d9823f3eb12d27610770ea315512e460d8dbab3",
        "f5c86dc1c113dc2a898311ee4d446a9ab3ed8e72"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 10 22:29:57 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 10 22:29:57 2018 +0000"
      },
      "message": "Merge changes from topic \"aapt2-manifest-elements\"\n\n* changes:\n  Remove workarounds for b/79755007\n  AAPT2: Add the rest of supported manifest elements\n  AAPT2: Add supported manifest elements\n"
    },
    {
      "commit": "b14c8879746474fc021a6a1c869e153a4d347d3c",
      "tree": "94ce6086c7de4b877cdf17ca15d3f07dac833f33",
      "parents": [
        "62a5d4249f531065dc97c2f7e8b9ab349aa1888d",
        "5c541f6e36c049d2a00628083ca0534bf39db971"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 09 21:43:38 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 09 21:43:38 2018 +0000"
      },
      "message": "Merge \"libandroidfw: move ConfigDescription from aapt2 to libandroidfw\""
    },
    {
      "commit": "62a5d4249f531065dc97c2f7e8b9ab349aa1888d",
      "tree": "d5e172014bc7cc5c2eac8312c27e32bc59d83301",
      "parents": [
        "16fcd3dcff4026fe6239478a5901fa121f2439e7",
        "668ec5bd3bd9d5fe6ebf46985eacd3d8d81af937"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 09 21:43:38 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 09 21:43:38 2018 +0000"
      },
      "message": "Merge changes from topic \"idmap2-prerequisites\"\n\n* changes:\n  AssetManager2: optionally keep non-matching configs\n  AAPT2: optionally keep resources without default value\n  libandroidfw: add resource ID iterator\n"
    },
    {
      "commit": "5cc170017128c25eb4ee887855444cbfcb930893",
      "tree": "bc5d1b7b079082c3a178db9ea210b8a0ab239487",
      "parents": [
        "16fcd3dcff4026fe6239478a5901fa121f2439e7"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Tue Oct 09 13:53:53 2018 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Tue Oct 09 14:28:35 2018 -0700"
      },
      "message": "Stop using DIST_DIR directly, use dist-for-goals instead\n\nAs a preparation in refactoring how we handle dist, I\u0027m making\neverything use dist-for-goals. In this case, instead of fully relying on\na phony rule, write the gtest xml into an intermediate folder, and use\ndist-for-goals to copy that into the dist dir.\n\nBug: 117463001\nTest: DIST_DIR\u003ddist m aapt2_run_host_unit_tests dist\nTest: DIST_DIR\u003ddist m aapt2_run_host_unit_tests dist   (reruns test)\nChange-Id: I166c2b3088703875c6028c3479aec7cf09f3f635\n"
    },
    {
      "commit": "f99eda450f172f13affa1c08ebea9c3be00ac4b6",
      "tree": "5b7872322e5d57fb2aa8b7e66d0a81ecbb4d7e2a",
      "parents": [
        "3f1f4fc11d2e19c4b297a97d21293d05ac3db622"
      ],
      "author": {
        "name": "Mårten Kongstad",
        "email": "marten.kongstad@sony.com",
        "time": "Mon Jun 11 14:13:37 2018 +0200"
      },
      "committer": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Tue Oct 09 14:02:14 2018 +0000"
      },
      "message": "AAPT2: optionally keep resources without default value\n\nTeach \"aapt2 link\" about a new flag --no-resource-removal. When given,\naapt2 will not filter out resources that lack default values. This is\nuseful mostly when building overlay packages that define resources for\nnon-default configurations, such as only for values-sv.\n\nTest: manual: build package with resource only in values-vs, verify apk with aapt2 dump\nChange-Id: Idc513bcb3f43bbff7f073163562c3dfccdb9bc9b\nMerged-In: Idc513bcb3f43bbff7f073163562c3dfccdb9bc9b\n"
    },
    {
      "commit": "5c541f6e36c049d2a00628083ca0534bf39db971",
      "tree": "b96859ed3ac2264eaae528d3eaf11f7a0901aeb0",
      "parents": [
        "61b9b6c9eb7acb7b5f260f43b04d31d17bb59557"
      ],
      "author": {
        "name": "Mårten Kongstad",
        "email": "marten.kongstad@sony.com",
        "time": "Wed Jun 20 08:46:41 2018 +0200"
      },
      "committer": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Mon Oct 08 09:56:09 2018 -0700"
      },
      "message": "libandroidfw: move ConfigDescription from aapt2 to libandroidfw\n\nThis is to allow idmap2 to access ConfigDescription.\n\nTest: libandroidfw_tests\nTest: aapt2_tests\nChange-Id: I54210bbbd8dad5903cb7100807df977efa394ad5\nMerged-In: I54210bbbd8dad5903cb7100807df977efa394ad5\n"
    },
    {
      "commit": "6d0dbbbab3616f4b61a0e243cd150211406b9b5d",
      "tree": "d58d96e902ce93c95940042b8ce0bd407baa1108",
      "parents": [
        "4ddd969fb9d2dc75088b5acca13c3921a1e94bf6"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Oct 04 11:54:29 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Oct 04 11:54:29 2018 -0700"
      },
      "message": "Add rtmitchell to AAPT2 OWNERS\n\nPer talks with Svet, it is time I became a co-owner of AAPT2 with\ntoddke. I look forward to continuing to support and improve AAPT2.\n\nChange-Id: I3a0f1c8a708abc41045b95dc958dbeb96a5160ff\n"
    },
    {
      "commit": "9166e8937443f891cb20d8821d17ce5af33793ea",
      "tree": "d6c7492f0f0ac55de5241ab720e276cbd6120187",
      "parents": [
        "956791cee8dd0a7a0ab91f42abfbac404a50ec97",
        "fc81626ba6851f52c72c9858edf3f6818d66cf82"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Oct 02 00:37:46 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 02 00:37:46 2018 +0000"
      },
      "message": "Merge \"Add noexcept to move constructors and assignment operators.\""
    },
    {
      "commit": "20ecc6397b33b39700e2de4dae14be5398bbc007",
      "tree": "abdd972f8bc78c2378864f6b28b5ece4006685b4",
      "parents": [
        "417b7b14bb0f3f3e5e0ad2e46848230e944a7ae9",
        "9ba5cb4796a66b387af1f9350134f742f490aa7f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 01 23:37:31 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 01 23:37:31 2018 +0000"
      },
      "message": "Merge \"Do not use StringPiece in ExtractJavaIdentifier\""
    },
    {
      "commit": "fc81626ba6851f52c72c9858edf3f6818d66cf82",
      "tree": "30551addf9eeb23a99149d1ca04c644285dacaea",
      "parents": [
        "6c35ea901c364f14198009b00b9e838842516911"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Sep 25 12:01:21 2018 -0700"
      },
      "committer": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Oct 01 20:23:02 2018 +0000"
      },
      "message": "Add noexcept to move constructors and assignment operators.\n\nBug: 116614593\nTest: build with WITH_TIDY\u003d1\nChange-Id: Ic3993d88eb3066aef402d74c4d543c56a1dfd5c3\n"
    },
    {
      "commit": "8f37734cf48c2ff15e8654cfa26fa4baa195d348",
      "tree": "93714e00f737a56b3ff190ed54757e26e828da6b",
      "parents": [
        "31830456cdb94cbe2a50debf5eaee5cd54dd7d3c"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Sep 26 10:26:53 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Sep 26 14:54:45 2018 -0700"
      },
      "message": "Change FileStream test buffer from char* void*\n\nIt seems like GoogleTest prints string parameters before checking them.\nThis can be a problem in FileStream tests since these buffers are not\nnull terminated.  ASan reports heap-buffer-overflow.\n\nTest: m SANITIZE_HOST\u003daddress\nout/soong/.intermediates/frameworks/base/tools/aapt2/aapt2_tests/linux_glibc_x86_64_asan/aapt2_tests \\\n      LD_LIBRARY_PATH\u003dout/soong/.intermediates/external/libcxx/libc++/linux_glibc_x86_64_shared\nout/soong/.intermediates/frameworks/base/tools/aapt2/aapt2_tests/linux_glibc_x86_64_asan/aapt2_tests\n\nChange-Id: I9a1956d815729de23c7038fb0d498240eb917070\n"
    },
    {
      "commit": "9ba5cb4796a66b387af1f9350134f742f490aa7f",
      "tree": "9526df3430e982770a42719f2dc6cc198353950b",
      "parents": [
        "4a2dd10d834529311bf0daa4d5fa7c81f903bf61"
      ],
      "author": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Mon Sep 24 15:20:15 2018 -0700"
      },
      "committer": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Tue Sep 25 13:21:35 2018 -0700"
      },
      "message": "Do not use StringPiece in ExtractJavaIdentifier\n\nBug: http://b/91353691\n\nAfter assigning the result of TransformToFieldName to \u0027result\u0027, the\nunderlying storage is destroyed after the \u0027if\u0027 statement of the function\ncall.  \u0027result\u0027 ends up with garbage if the identifier has a \u0027-\u0027.\n\nManifestClassGeneratorTest.NormalizePermissionNames is broken for this\nreason in 32-bit Windows when using libc++ and 32-bit Linux.  ASAN also\nreports this failure for both 32-bit and 64-bit linux.\n\nTest: Run test on the cases mentioned above and ensure all of them pass.\nChange-Id: I69163c423c1171b7ac7838f2abe06bdf8058df4c\n"
    },
    {
      "commit": "00d5548355ed5a15219ad848ab7a947ea54f82de",
      "tree": "49f1b8b155c999aae5a2263a195efee25377a48f",
      "parents": [
        "48d009ad321efff9e3b43e1f5fc7477dc78a3ae4"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Sep 07 14:33:14 2018 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Sep 13 22:12:37 2018 -0700"
      },
      "message": "AAPT2: Add the rest of supported manifest elements\n\nAdds elemnts that are parsed in PackageParser to the manifest parsing of\nAAPT2.\n\n\u003cpackage\u003e found in \u003cmanifest\u003e\n\u003cpreferred\u003e found in \u003cmanifest\u003e\u003capplication\u003e\u003cactivity\u003e\n\nBug: 79755007\nTest: manual building of broken targets listed in the bug\nChange-Id: Ic7d17e62d04aa46757d2ed7482ec0aff93ce9ee5\nMerged-In: Ic7d17e62d04aa46757d2ed7482ec0aff93ce9ee5\n(cherry picked from commit 28afe682cd84c894c4da880ace41db77268400c4)\n"
    },
    {
      "commit": "48d009ad321efff9e3b43e1f5fc7477dc78a3ae4",
      "tree": "28c4d899141ac3aeb920a03d730184f14024c59b",
      "parents": [
        "741521940a1b0d0b05b20719a38e3970917dd5ef"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Jul 25 16:15:17 2018 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Sep 13 22:11:59 2018 -0700"
      },
      "message": "AAPT2: Add supported manifest elements\n\nAdds some elements present in res/values/attrs_manifest.xml to manifest\nparsing.\n\n\u003cadditional-certificate\u003e in \u003cmanifest\u003e\u003capplication\u003e\u003cuses-static-library\u003e\n\u003cmeta-data\u003e in \u003cmanifest\u003e\u003cpermission\u003e\n\u003cpackage-verifier\u003e in \u003cmanifest\u003e\n\u003crestrict-update\u003e in \u003cmanifest\u003e\n\nBug: 79755007\nTest: manual\nChange-Id: I50520a99ce5ced9908001430b2108d7a5c71f8a7\nMerged-In: I50520a99ce5ced9908001430b2108d7a5c71f8a7\n(cherry picked from commit 66f6cfb8a561a653db084b97adfa8c4d48979000)\n"
    },
    {
      "commit": "895e19edf04f7a7ad2c2dc08401e1b7cb073bae6",
      "tree": "b0bb9eba663938a34f7fcd4a6d0e68acaeb62e0b",
      "parents": [
        "aea74ff62a37d6f668210d5e530768d52a6602a5"
      ],
      "author": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Fri Aug 24 12:26:06 2018 -0700"
      },
      "committer": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Fri Aug 24 19:29:22 2018 +0000"
      },
      "message": "dump package name\n\nTest: aapt2 dump packagename foo.apk bar.apk\nBug: 113105112\nChange-Id: Ibea429adc3a2a890be10548824583addc59ad42d\nMerged-In: Ibea429adc3a2a890be10548824583addc59ad42d\n"
    },
    {
      "commit": "c07d4e7118bc96c4c0d83619fb3c65aab2006055",
      "tree": "c05376f1b91cb00c72deff1c5a2314ab6d626056",
      "parents": [
        "661facc2f1b94ed682636e5bb4297828b423011a",
        "196dbc379b7cc71f3fcf373c27dcd4b1c9932445"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Aug 20 21:31:28 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 20 21:31:28 2018 +0000"
      },
      "message": "Merge \"Mark symbols as dynamic for shared libraries\""
    },
    {
      "commit": "196dbc379b7cc71f3fcf373c27dcd4b1c9932445",
      "tree": "5fdd9e0f280593f2da5f7ee0a0dc4a3a85e30754",
      "parents": [
        "bba51fede5c1b90a133d086d94e314918274c6ca"
      ],
      "author": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Tue Jul 24 14:37:15 2018 -0700"
      },
      "committer": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Tue Jul 24 21:55:12 2018 +0000"
      },
      "message": "Mark symbols as dynamic for shared libraries\n\nBug: 111425000\nChange-Id: Ic1a68ac90d5e0443a536ee9ce75a72bc370cd673\nTest: build, install and run the shared library test application\n"
    },
    {
      "commit": "ff311dd893f66b873ee00d5ca176ff3ab2e0fa53",
      "tree": "0322cdeb7df37ac1e0c28454bbe7495818840562",
      "parents": [
        "abdaa314f885b5a889e48676b7b2b0460a5332f7"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jun 14 15:23:21 2018 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Jun 15 23:03:46 2018 +0000"
      },
      "message": "Fix ManifestMerger issues\n\nSet LOCAL_MIN_SDK_VERSION in aapt2 integration test libraries so that\nthe build system doesn\u0027t raise the minSdkVersion value specified in\nthe manifest, which causes ManifestMerger to error when trying to\nmerge it into a package that specifies a lower minSdkVersion.\n\nBug: 78447299\nTest: m java\nChange-Id: If5d4f97bb2d8a503bd3c20f2ea8aea2519c51e85\n"
    },
    {
      "commit": "da02feaca2db055df1f52493edc9fe3ddf2aa88b",
      "tree": "c026c098de0792f3da4c3d979b11506fd55003b6",
      "parents": [
        "1d09efefebab4915e78dd06ba977c7ded4a46ab7"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri May 25 22:46:35 2018 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed May 30 23:25:21 2018 +0000"
      },
      "message": "Add support for --replace-version to aapt2\n\nImplement --replace-version to match aapt1.\n\nBug: 79755007\nTest: aapt2_tests\nChange-Id: Iee2bd9a3981c7d4681509f18b735c6e9e6c1a336\nMerged-In: Iee2bd9a3981c7d4681509f18b735c6e9e6c1a336\n(cherry picked from commit dcd58c420771af75c625242985bd96ba828aca56)\n"
    },
    {
      "commit": "f7ae76d8451f1f9a4099c5fa5d3197b0f4763c75",
      "tree": "56f44cdb2c6ca7d11402da4d709d7f7560ca81ac",
      "parents": [
        "2f4bf5423d742ca6df4488d9df61f794ea2e82f1"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri May 25 22:46:35 2018 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed May 30 15:40:06 2018 -0700"
      },
      "message": "Add support for --replace-version to aapt2\n\nImplement --replace-version to match aapt1.\n\nBug: 79755007\nTest: aapt2_tests\nChange-Id: Iee2bd9a3981c7d4681509f18b735c6e9e6c1a336\nMerged-In: Iee2bd9a3981c7d4681509f18b735c6e9e6c1a336\n(cherry picked from commit dcd58c420771af75c625242985bd96ba828aca56)\n"
    },
    {
      "commit": "533c09b01b175b8b59e8f83c64a61d98ca808e75",
      "tree": "3d8a57967bed4ea1c6e1002a15716ab9c3d88c0d",
      "parents": [
        "b2b20f26db06c9d9f84b9801f27cb17ab7444e2f"
      ],
      "author": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Tue Dec 19 16:22:42 2017 +0000"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon May 21 19:51:50 2018 +0000"
      },
      "message": "AAPT2: treat manifest validation errors as warnings when asked\n\nBug: 65670329\nTest: updated\nChange-Id: Ic554cc20134fce66aa9ddf8d16ddffe0131c50e9\nMerged-In: Ic554cc20134fce66aa9ddf8d16ddffe0131c50e9\n(cherry picked from commit ad9e1324ff2c459d0ee6ee571d4a3e458c02cc81)\n"
    },
    {
      "commit": "b2b20f26db06c9d9f84b9801f27cb17ab7444e2f",
      "tree": "a1d7d93f8d7b598bc606615002e85ed122b11fec",
      "parents": [
        "ef506c73bb841d363060d2f0b52d56f3a28eea0e"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 02 12:07:08 2017 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon May 21 19:51:42 2018 +0000"
      },
      "message": "AAPT2: Better error messages for ManifestFixer\n\nAAPT2 will now print the XML hierarchy where it found an unexpected\nelement.\n\nTest: make aapt2_tests\nChange-Id: Iac7918b2f344fab874f0a3e7aa9c6936ecde8913\nMerged-In: Iac7918b2f344fab874f0a3e7aa9c6936ecde8913\n(cherry picked from commit ed37f4842ad838792b16bf19768ed9b2519b0194)\n"
    },
    {
      "commit": "ef506c73bb841d363060d2f0b52d56f3a28eea0e",
      "tree": "2204f7835543ecc7723a025ffb4ec5434c626a75",
      "parents": [
        "1e0a5d397dfce71c8541fd08d0215263fc9947a3"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 06 10:44:46 2017 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon May 21 19:48:36 2018 +0000"
      },
      "message": "AAPT2: Differentiate between Android and Java package names\n\nAndroid package names are more strict (ASCII only) than Java package names.\nAlso fixed an issue where trailing underscores were disallowed in Android\npackage names.\n\n(cherry picked from commit 96ea08f1e737e0d19e274e9a29f71c387d81b09a)\n\nAlso includes part of I357fb84941bfbb3892a8c46feb47f55b865b6649 to remove\nusage of FindNonAlphaNumericAndNotInSet.\n\nBug: 79481102\nTest: make aapt2_tests\nChange-Id: I1052e9e82b6617db6065ce448d9bf7972bb68d59\nMerged-In: I1052e9e82b6617db6065ce448d9bf7972bb68d59\n"
    },
    {
      "commit": "89794158a1a5bca01abd834387d6e4e95e70f806",
      "tree": "32efdabbbe0eea9c24bb077ada404d98906b0adf",
      "parents": [
        "646dfc77039404a52e51d44df78fc819cfb263dd"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 02 12:10:25 2018 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu May 17 22:13:11 2018 -0700"
      },
      "message": "Change ownership of AAPT2 and libandroidfw\n\ntoddke@ is now the new owner of these projects.\n\nExempt-From-Owner-Approval: setting new owners\nTest: none\nChange-Id: Ie92b020e0ba063f48ce8a76ebaef768fe0d554f1\nMerged-In: Ie92b020e0ba063f48ce8a76ebaef768fe0d554f1\n(cherry picked from commit a95e841846c3add37cab0ca228e1e1a4eb0a1455)\n"
    },
    {
      "commit": "7cb82a86beda55a178d76dc8dd90d0b01a4b9c91",
      "tree": "32d4b8fc40aea3087d36ef451761c015652e2a71",
      "parents": [
        "1822926cfbf55cc68a85cdfd588802f4a106cdb5"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu May 10 15:35:31 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu May 10 15:37:37 2018 -0700"
      },
      "message": "AAPT2: Insert platformBuild information\n\nInserts platformBuildVersionName and platformBuildVersionName when the\nattributes are not currrently present. The attributes are set to\nthe values of versionName and versionCode.\n\nBug: 77541121\nTest: Build apk using aapt and appt2 and dumped using xmltree to confirm\nthe presence of the attributes\nChange-Id: I5330381905c878fb877214b42f83d7e2e48cd062\n"
    },
    {
      "commit": "0dcb20c72742a1de30b4984c4b8996d76cb7a428",
      "tree": "d6d925dbf4fffd271e851d12720c5718cbc3a2eb",
      "parents": [
        "12f404e3e33c21a4f0d634698bef94c219ec48ab"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Apr 27 14:53:04 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed May 02 17:53:21 2018 +0000"
      },
      "message": "AAPT2: Fix quoted text in res/xml assets\n\nAAPT2 aggressively processed xml nodes and regressed from the behavior\nof AAPT. This change restores AAPT\u0027s processing of xml nodes with\nquotations.\n\nBug: 71805084\nTest: Created tests in XmlFlattener_test.cpp and ran the test in the\nAndroid Studio project given in the bug\n\nChange-Id: Idedb4f1002e9fd705ceb5feae35289235b754b02\n"
    },
    {
      "commit": "f4c089dd905fab6bccd83285581ab9ee074d8a42",
      "tree": "1bac5e70a6bf8a52a35cf912c14f42067f203c5c",
      "parents": [
        "33b57e845ff6b12f62898341dbf3a96766a93f0b",
        "eaf77e1d3a6ad4995ddd92a429802cffbf0f0209"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed May 02 16:27:03 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 02 16:27:03 2018 +0000"
      },
      "message": "Merge \"AAPT2: Fixed id parsing error\" into pi-dev"
    },
    {
      "commit": "eaf77e1d3a6ad4995ddd92a429802cffbf0f0209",
      "tree": "17a7b20a176b55367acf6655c0f77cc998b48864",
      "parents": [
        "dc34eb605520a7f4f9401c4569a2573171111e9d"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Apr 25 15:00:50 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue May 01 11:11:55 2018 -0700"
      },
      "message": "AAPT2: Fixed id parsing error\n\nA previous change, editied the logic for parsing ids to allow for ids to\nreference other ids. This change though caused a regression that made\nids in the form \u0027\u003cid name\u003d\"name\" /\u003e\u0027 cease to parse. This changes fixes\nthat regression.\n\nBug: 78513618\nTest: Updated tests in ResourceParser_test.cpp\nChange-Id: I3608bb764464e951a50910be55e199c6ec575d09\n"
    },
    {
      "commit": "13588dc9e4e21c0802202db9c1617cb75a88c9cf",
      "tree": "841217f4bcbc2e8839cca9382d239bcd5cf018d1",
      "parents": [
        "8049afc395e19fee9fb28c23a44fee8b5b230831",
        "325129964e5b0a9794cf5bb63a2d2d8774ea6a1b"
      ],
      "author": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Thu Apr 26 21:29:17 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 26 21:29:17 2018 +0000"
      },
      "message": "Merge \"Allow using reserved package IDs\" into pi-dev"
    },
    {
      "commit": "325129964e5b0a9794cf5bb63a2d2d8774ea6a1b",
      "tree": "6916dd14dd937ad9650558c8afca42929acd26f2",
      "parents": [
        "a93ab56ed802f320cbf1ac9452cae75acbef47c3"
      ],
      "author": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Wed Apr 25 16:45:59 2018 -0700"
      },
      "committer": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Thu Apr 26 10:27:30 2018 -0700"
      },
      "message": "Allow using reserved package IDs\n\nPre-O, the platform treats negative resource IDs [those with\na package ID of 0x80 or higher] as invalid.  In order to work\naround this limitation, we allow the use of traditionally\nreserved resource IDs [those between 0x02 and 0x7E].\n\nBug: 78041707\nTest: ./out/host/linux-x86/nativetest64/aapt2_tests/aapt2_tests\nTest: ./out/host/linux-x86/nativetest/libandroidfw_tests/libandroidfw_tests\nTest: Manual. Create a feature split with a package ID of 0x7E and see it runs and can reference base resources.\n\nChange-Id: I3d9782cc05d3a55e1a2467bf39566788847e1160\n"
    },
    {
      "commit": "fd5166ddac5fceb3942cef9f95ff2920eac1ac84",
      "tree": "a656bc5aa6b53f3e83d3a2e23af718f1301b29fd",
      "parents": [
        "ab416a115a9b736270fcefbde7b21dcc34f2dae1",
        "9f6dec11e6fe003609f4c5908d3a965b1f196c47"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 24 03:14:04 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 24 03:14:04 2018 +0000"
      },
      "message": "Merge \"Allow overriding the compile SDK\" into pi-dev"
    },
    {
      "commit": "9f6dec11e6fe003609f4c5908d3a965b1f196c47",
      "tree": "7cc213656e21060287a4b194e0efe8070074409a",
      "parents": [
        "dbdf5df96e2b8d97de89720da256c8296dbbec4f"
      ],
      "author": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Fri Apr 20 12:29:29 2018 -0700"
      },
      "committer": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Fri Apr 20 22:41:52 2018 +0000"
      },
      "message": "Allow overriding the compile SDK\n\nWe automatically pull the compile SDK from the platform. But,\nin certain circumstances the platform\u0027s SDK codename is\nincorrect. Allow the name to be overridden on the command line.\n\nChange-Id: I398f1b00b29db42e4ce202b94cda483c98971a14\nFixes: 78324052\nTest: ./out/host/linux-x86/nativetest64/aapt2_tests/aapt2_tests\n"
    },
    {
      "commit": "1a12311433a0ebce2d0c383ac886a257ae32e3d6",
      "tree": "7ca0d9bbe657804e0c5ca8f273f2085a5e10bebe",
      "parents": [
        "686fab14645298ca04f23f0e10a64e839e32703f",
        "8b74927e9ecf4d14898d09c168d0d38f164a92bc"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 20 18:59:11 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 20 18:59:11 2018 +0000"
      },
      "message": "Merge \"Fix fraction and dimension type in Resource.proto\" into pi-dev"
    },
    {
      "commit": "8b74927e9ecf4d14898d09c168d0d38f164a92bc",
      "tree": "c2f69546b0a90e38264a944a4b4adcbd58979276",
      "parents": [
        "1074688a265db2d44b244f2f57b9ac081f825e99"
      ],
      "author": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Wed Apr 18 18:52:47 2018 -0700"
      },
      "committer": {
        "name": "Michael Wachenschwanz",
        "email": "mwachens@google.com",
        "time": "Fri Apr 20 10:46:47 2018 -0700"
      },
      "message": "Fix fraction and dimension type in Resource.proto\n\nChange fraction and dimnesion type from float to uint32\n\nChange-Id: I641dc42cf7b6bdd8bc16c8cdbd573ec3281a084a\nFixes: 78182701\nTest: aapt2_tests\n"
    },
    {
      "commit": "247ecfa4989c4a2a1096a9960831286cca7eaab5",
      "tree": "a7a3f9bc9f52db8d468641a86959ee089c82e6c0",
      "parents": [
        "bb35e9e0e978ab6ff518462e9483dcb24232cf7b",
        "9efbbef2e060cd5e05f5b652ba5c7aaf687f64d6"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Apr 19 21:35:59 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 21:35:59 2018 +0000"
      },
      "message": "Merge \"AAPT2: Support id reference chaining from AAPT\" into pi-dev"
    },
    {
      "commit": "4602926f83d7aa3b52b190122955b5b0d6d8089d",
      "tree": "4b483cd443fb3b1b9f7eb03d4d326c22da213998",
      "parents": [
        "34a0b18a5c730e4fa16e27c63ed0cd79a6df188e"
      ],
      "author": {
        "name": "y",
        "email": "rtmitchell@google.com",
        "time": "Mon Apr 16 18:13:14 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Apr 18 20:58:50 2018 +0000"
      },
      "message": "AAPT2: Modified StringPool uniqueness detection #2\n\nb/77862560 detected that when converting an apk to binary using aapt2,\nall resource ids of attributes that have been replaced with resource\nidentifiers become set to the identifier of the first attribute. This is\nbecause the attribute names are all empty because the names are not necessary\nsince the resource ids are present. The empty attribute names all map to\nthe same string pool reference and cause all the ids to be the first\nempty string into the string pool.\n\nThe ag/3897499 approach to fix the specified bug was extremely inefficient\nand caused hour long builds. This change takes advantage of the multimap\ndata structure to do lookups efficiently.\n\nBug: 77862560\nTest: Converted apk in listed bug from proto to binary and observed\ncorrect resource ids and correct badging. Also built the Android tree to\ncheck for regressions in build time.\n\nChange-Id: I27a9ee4ffbed8b9ff6f238ad315cdf87b588947c\n"
    },
    {
      "commit": "9efbbef2e060cd5e05f5b652ba5c7aaf687f64d6",
      "tree": "a906595eedebc28b14a4e86e135b225eb1d5d79b",
      "parents": [
        "34a0b18a5c730e4fa16e27c63ed0cd79a6df188e"
      ],
      "author": {
        "name": "y",
        "email": "rtmitchell@google.com",
        "time": "Wed Apr 18 11:29:09 2018 -0700"
      },
      "committer": {
        "name": "y",
        "email": "rtmitchell@google.com",
        "time": "Wed Apr 18 11:46:53 2018 -0700"
      },
      "message": "AAPT2: Support id reference chaining from AAPT\n\nAAPT would allow for ids to be declared in the form:\n\n\u003citem name\u003d\"name\" type\u003d\"id\u003e@id/other\u003c/item\u003e\n\n@id/name should hold a reference to @id/other. When\ngetResources().getValue() is called on R.id.name with resolveRefs\nenabled, the resuling reference should be R.id.other.\n\nBug: 69445910\nTest: Created tests for correct parsing of id references and correct\nresolving of deep references\n\nChange-Id: Id1feb37b2565c213dc6a19b4c401906260d7fc14\n"
    },
    {
      "commit": "61ac57283fecb20d4287b81b293a2579d0386c15",
      "tree": "7e775dd544f0beaa76474c3af1712e6e1f371bee",
      "parents": [
        "116e05cbba0f851c0d5c0da3e1c664444ea5b6f2",
        "61ffd4029032862c871c98ac04f12d4141d59383"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Mon Apr 16 19:28:43 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 19:28:43 2018 +0000"
      },
      "message": "Merge \"Revert \"AAPT: Modified StringPool uniqueness detection\"\" into pi-dev"
    },
    {
      "commit": "61ffd4029032862c871c98ac04f12d4141d59383",
      "tree": "b49449dd559ce7c717750d9da9684fdfce5ce481",
      "parents": [
        "35ecb89a8aa68f24d2e991df5bb9964ad15075dc"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Mon Apr 16 18:21:14 2018 +0000"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Mon Apr 16 18:21:14 2018 +0000"
      },
      "message": "Revert \"AAPT: Modified StringPool uniqueness detection\"\n\nThis reverts commit 35ecb89a8aa68f24d2e991df5bb9964ad15075dc.\n\nReason for revert: \u003cLong make duration (infinite loop)\u003e\n\nChange-Id: I10d1cf53ca3054d40e23b06368ebaff6af69beab\n"
    },
    {
      "commit": "356feb53b6b16c08e9adf37243e755f03c4f947e",
      "tree": "8de7b38f8647c344e1d22e492e0924ec04a28e7c",
      "parents": [
        "1c70ecb455069b2497ab2f95ce29c9686afc9c21",
        "35ecb89a8aa68f24d2e991df5bb9964ad15075dc"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Mon Apr 16 17:15:53 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 17:15:53 2018 +0000"
      },
      "message": "Merge \"AAPT: Modified StringPool uniqueness detection\" into pi-dev"
    },
    {
      "commit": "35ecb89a8aa68f24d2e991df5bb9964ad15075dc",
      "tree": "4a6694c3430fea5d6ae5b0bd3680aab24a303232",
      "parents": [
        "a668c663019dcabe62d1f667ec5402806a22b0a8"
      ],
      "author": {
        "name": "y",
        "email": "rtmitchell@google.com",
        "time": "Fri Apr 13 11:25:12 2018 -0700"
      },
      "committer": {
        "name": "y",
        "email": "rtmitchell@google.com",
        "time": "Fri Apr 13 16:15:42 2018 -0700"
      },
      "message": "AAPT: Modified StringPool uniqueness detection\n\nb/77862560 detected that when converting an apk to binary using aapt2,\nall resource ids of attributes that have been replaced with resource\nidentifiers become set to the identifier of the first attribute. This is\nbecause the attribute names are all empty because the names are not necessary\nsince the resource ids are present. The empty attribute names all map to\nthe same string pool reference and cause all the ids to be the first\nempty string into the string pool.\n\nBug: 77862560\nTest: Converted apk in listed bug from proto to binary and observed\ncorrect resource ids and correct badging.\n\nChange-Id: I635c13cd1ad7a395fe40a57198cfe5ec91602d01\n"
    },
    {
      "commit": "3da5f3b2ddf35ed436cd9a0c6a349c59c97f8d78",
      "tree": "df1d8625e3297350e40d450835c2e24a8cb5ca28",
      "parents": [
        "79634c7025f66e26444df12c12db2ebbf2d81bfe"
      ],
      "author": {
        "name": "Wale Ogunwale",
        "email": "ogunwale@google.com",
        "time": "Wed Apr 11 15:12:31 2018 -0700"
      },
      "committer": {
        "name": "Wale Ogunwale",
        "email": "ogunwale@google.com",
        "time": "Thu Apr 12 15:26:31 2018 -0700"
      },
      "message": "Finalizing P SDK\n\nBug: 77588754\nTest: builds\nChange-Id: Ic06cad790a3dc53d012a7c43dfac911fc6dc61e7\n"
    },
    {
      "commit": "d6b83299a6d636c67fee8bd4ae07555a9ae2269a",
      "tree": "3ba4327af7207a6a57c2375f87cdda1804651d08",
      "parents": [
        "65317bac02e993d1313a1958a8497ff5f2a2ecd5"
      ],
      "author": {
        "name": "y",
        "email": "rtmitchell@google.com",
        "time": "Wed Apr 11 09:54:56 2018 -0700"
      },
      "committer": {
        "name": "y",
        "email": "rtmitchell@google.com",
        "time": "Wed Apr 11 15:52:43 2018 -0700"
      },
      "message": "AAPT: Multiple period legacy support and errors\n\nAAPT would accept files with multiple periods in the filename as input.\nThis lead to cases explained in b/74999475. This change adds error\nmessages for files with multiple periods unless the legacy flag is\npresent. With the legacy flag present, AAPT2 will behave like AAPT\nrather than throwing an error.\n\nTest: Added tests to aapt2_tests\nBug: 73071563\nBug: 74999475\nChange-Id: I28dfceeea7b39f8e4b9e6671e0fc8793cf388f52\n"
    },
    {
      "commit": "6a23deef5d6d9f9fae40dbe1775f5cf5556421fc",
      "tree": "ab7d54a79f90754a9f49f4cb98efb9eba0231c59",
      "parents": [
        "1d513fc5d04ce6bd27953fe5854c3cb3234f9a99",
        "9beaa9cfe3bd8c7c59eed053ff6ca18951c34a86"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Apr 05 00:14:38 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 05 00:14:38 2018 +0000"
      },
      "message": "Merge \"Changed AAPT2 to abide by AAPT resource whitespace triming.\" into pi-dev"
    },
    {
      "commit": "498baa82e645619ddf7e79bd3930ff519ad4526d",
      "tree": "c1ce506fcc27673d92b321277c991479ccc23973",
      "parents": [
        "49668cd130b57e3ba2f98c7613b215773b4246fa",
        "e5b38a676ce0fe6ee08635a7167ee5d76a225a06"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Apr 04 21:21:28 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 04 21:21:28 2018 +0000"
      },
      "message": "Merge \"Added --debug-mode flag to AAPT2\" into pi-dev"
    },
    {
      "commit": "70414f22dcab1d4ce3c2e9d981f3256a9ba62515",
      "tree": "4f16c1c60a077ba21af55e0df26d791143afa9cf",
      "parents": [
        "a926126a8bc89c1a6bd7fa8a76332476eba0d954"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Mon Mar 26 11:05:31 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Apr 04 15:54:43 2018 +0000"
      },
      "message": "Check the size of the strings in the StringPool before flattening.\n\nTest: Tested for normal functionality when string does not exceed\nmaximum length and tests for detection of string that is too lonhg for\nUTF8i\nBug: b/74176037\n\nChange-Id: Ic71d3671a069e7012e8ca107e79e071499eebbf6\n(cherry picked from commit a15c2a8957b9883cb293fdacaeabd7f2e037a0a5)\n"
    },
    {
      "commit": "9beaa9cfe3bd8c7c59eed053ff6ca18951c34a86",
      "tree": "0a14c76b75c770328fadb68b75d83751121637e7",
      "parents": [
        "a926126a8bc89c1a6bd7fa8a76332476eba0d954"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Mar 28 18:22:57 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Apr 04 15:54:05 2018 +0000"
      },
      "message": "Changed AAPT2 to abide by AAPT resource whitespace triming.\n\nBug: b/74331008\nTest: Created tests in ResourceParser_test.cpp\nChange-Id: Id7b387692b795774cd77452ca8cf06a8447bf3be\n(cherry picked from commit a04880771254f5169a1fe460ff40b565d9dceb0d)\n"
    },
    {
      "commit": "e5b38a676ce0fe6ee08635a7167ee5d76a225a06",
      "tree": "ca4c69d4f3f9c60225e9b28ff4572708a249b2b2",
      "parents": [
        "a926126a8bc89c1a6bd7fa8a76332476eba0d954"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Mar 23 13:35:00 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Apr 04 15:51:53 2018 +0000"
      },
      "message": "Added --debug-mode flag to AAPT2\n\nBug: 74968793\nTest: Tested for correct debuggable attribute presense with and without\nflag\n\nChange-Id: I0148d1caba62db8cf258926f1d9e87a849aa283f\n(cherry picked from commit 444f9bb6a18ff34b69cba504c8658b7013eaa53a)\n"
    },
    {
      "commit": "f7db43ee354a9cbda937e642952d8b3ac4ca66c4",
      "tree": "15bebe8d955e3a66bee671a1a07f3b75780add36",
      "parents": [
        "6b4e6a17e93198ffedfb6a447ff49364da9307f3"
      ],
      "author": {
        "name": "corysmith@google.com",
        "email": "corysmith@google.com",
        "time": "Tue Mar 13 12:04:10 2018 -0400"
      },
      "committer": {
        "name": "corysmith@google.com",
        "email": "corysmith@google.com",
        "time": "Sun Mar 18 14:30:13 2018 -0400"
      },
      "message": "Writes the resource table proto out when writing a LoadedApk.\n\nSmall fixes for consistancy to use constants instead of strings.\n\nChange-Id: I33439c376e1634b7957730ce16e241b0f5bb92f8\nFixes: 74594854\nTest: Manual, tested against blaze test //javatests/com/google/devtools/build/android:UnitTests\n"
    },
    {
      "commit": "be72e62c63eb2d29802e54d630363837f07af377",
      "tree": "caa6ef08dc3aa1c8fae50688d8bf2778e07afb7d",
      "parents": [
        "4068e8e6ae7d922e077fe9593e18c5493229d1f6"
      ],
      "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 15:10:39 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: I66b515d98d03264dbb893b7c55ba7bdddfb447a1\nMerged-In: I26458e41ecb84de91ac9a356a5d4bafb44f463c1\nMerged-In: I938efe7a2359302cbf4d5d6f786f963044e1bbbd\nMerged-In: I72ce7f1c6242ddf9a5b36075761f3f1f1138cea1\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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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\""
    }
  ],
  "next": "ad9e1324ff2c459d0ee6ee571d4a3e458c02cc81"
}
