)]}'
{
  "log": [
    {
      "commit": "d4bf08501a4383f80131c87ea54e160186379def",
      "tree": "b7e2a7b9e02a8569108871a8f98f96d5ea1d0d17",
      "parents": [
        "c5f8fa9d8142170679fc9584a23916cd8681de83",
        "05aebf46b45b2abb48e883bc495907be223a5e0c"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Oct 12 16:42:34 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 12 16:42:34 2018 +0000"
      },
      "message": "Merge \"Preserve compression of xml files in convert\""
    },
    {
      "commit": "05aebf46b45b2abb48e883bc495907be223a5e0c",
      "tree": "6aa8cc9892f07832b763cc50d913b0e09eda6f26",
      "parents": [
        "167aa777b038a9833127a975c747d90f35aa5069"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue Oct 09 15:08:41 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Oct 11 17:14:29 2018 -0700"
      },
      "message": "Preserve compression of xml files in convert\n\nRespect the compression the original compression of xml files when using\naapt2 convert. Uncompressed files should remain uncompressed, and\ncompressed files should remain compressed.\n\nBug: 117289326\nTest: manual\nChange-Id: I81b431b4a4abd81f5694ea7dc3b3c6ec8c13ca32\n"
    },
    {
      "commit": "13e6a1dc3e25040a16d0fef47e909f08179bb9ce",
      "tree": "6167744ee5676ba69d8501d3eda52b192399c46a",
      "parents": [
        "c997fc62e06f1fb2eadbceb6e7dfaa71fb2cf080"
      ],
      "author": {
        "name": "Aurimas Liutikas",
        "email": "aurimas@google.com",
        "time": "Tue Sep 25 16:11:40 2018 -0700"
      },
      "committer": {
        "name": "Aurimas Liutikas",
        "email": "aurimas@google.com",
        "time": "Tue Oct 09 13:55:31 2018 -0700"
      },
      "message": "Add style parents dump command.\n\nThis command prints out the parent graph of a given style\n\nTest: out/host/linux-x86/bin/aapt2 dump styleparents \\\n    --style Widget.MaterialComponents.TextInputLayout.FilledBox \\\n    out/target/product/generic_x86/system/priv-app/SystemUIGoogle/SystemUIGoogle.apk\nChange-Id: Ib2ace7e90bee6f1c4b6a184edc591b1a3993db75\n"
    },
    {
      "commit": "1e7b9347d7cbaf94760ebd9b5af1e5df2e5173ea",
      "tree": "8d1e093d75034b31e7b072f7f6ad1246b1e0c5ae",
      "parents": [
        "e0017d64ee950fccc6c34da4f266f099671e2768",
        "214846df59118ebe6b75706ea3505a8bb3b2f93c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 09 19:15:47 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 09 19:15:47 2018 +0000"
      },
      "message": "Merge \"Created resuable DumpApkCommand and added \"badger\"\""
    },
    {
      "commit": "214846df59118ebe6b75706ea3505a8bb3b2f93c",
      "tree": "993d34675e462c8e535b8b8ee543c7b22328e4fe",
      "parents": [
        "99ecc121bca092afb2ace650f879f437c9d3ff9b"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Sep 19 16:57:01 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue Oct 09 10:51:25 2018 -0700"
      },
      "message": "Created resuable DumpApkCommand and added \"badger\"\n\nThis change refactors the dump commands to inherit from a base\nDumpApkCommand and adds a command that prints out an ASCII\nimage of a badger if the user wrote \"badger\" instead of\n\"badging\". The command is hidden from the help menu.\n\nBug: 73535002\nTest: manual\nChange-Id: I9bdd8a7bbf6a4282c4933e5c478f6d1d8e32d99e\n"
    },
    {
      "commit": "96af49eb0179d672eae72aa517946475697ee463",
      "tree": "f2ba664fd73602db5fd526b8d6d3ca6f6be7abde",
      "parents": [
        "ee3fa7ed269406db5bc509b3b6ee0ad4972bafd9",
        "d8d290107a18a00631e2ef254ea1b6521202b871"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 09 17:32:29 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 09 17:32:29 2018 +0000"
      },
      "message": "Merge \"AAPT2: optionally keep resources without default value\""
    },
    {
      "commit": "d8d290107a18a00631e2ef254ea1b6521202b871",
      "tree": "aac2780bfc007881466bdda6575ee1470f8d5712",
      "parents": [
        "ec5c04f4ab781938123e5f68569048cf65fddc14"
      ],
      "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 07:01:17 2018 -0700"
      },
      "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\n"
    },
    {
      "commit": "24c9aa65411207067f509c5e88ad31b303d26fcd",
      "tree": "9a7405282c003f0c360c95bd051681733d765919",
      "parents": [
        "ec5c04f4ab781938123e5f68569048cf65fddc14"
      ],
      "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 06:50:22 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\n"
    },
    {
      "commit": "5c5f0cdd0404a856638df69d6ef115192e57692c",
      "tree": "a0224dd31400a94f37b2de01be71cf82d800dd6d",
      "parents": [
        "8b7e1a88038ff5894bd523cb4caadfd12f58fe58",
        "0ce89734d111ce3a9529254ccc9b8ef33fdeba73"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Oct 03 20:56:06 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 03 20:56:06 2018 +0000"
      },
      "message": "Merge \"Fix failing Windows tests\""
    },
    {
      "commit": "0ce89734d111ce3a9529254ccc9b8ef33fdeba73",
      "tree": "94536a693f37675e6f662746c951c9227c4069c8",
      "parents": [
        "88f0f6c9b1d2dfecd4f0bdb663f01a098a59fa83"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Oct 03 09:20:57 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Oct 03 11:35:37 2018 -0700"
      },
      "message": "Fix failing Windows tests\n\nSome tests were not written to run on Windows correctly. Compile also\nhas a bug that caused using the --zip flag to fail on Windows.\niswspace does count the non breaking space as Whiespace on Windows but\nnot on Unix based systems\n\nBug: 117156986\nChange-Id: I999375162bdfdf86fb25992ee88e2962ab90b577\nTest: aapt2_tests and wine aapt2_tests.exe\n"
    },
    {
      "commit": "7e5236dc563595f1dca7ed3e6cb87b6ce995c402",
      "tree": "a4a5a3779d4607a46d861ac290afa0fecdca40e9",
      "parents": [
        "d5180a5ec2ca69d48c468be8b2bb35ded12c50f2"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue Sep 25 15:20:59 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue Sep 25 15:20:59 2018 -0700"
      },
      "message": "Restore Proguard behavior and add minimal flag\n\nWe previously changed AAPT2 to correctly only generate keep rules for\nthe constructors required to inflate the different views. This cause\nprojects that did not have keep rules for the other constructors that\nwere accessed through reflection to have runtime crashes. This change\nadds a flag to the link stage (--proguard-minimal-keep-rules) that\nallows AAPT2 to only keep the constructors required for layout\ninflation. If the flag is not present, then AAPT2 will generate less\nspecific keep rules than keep all constructors.\n\nBug: 116201243\nTest: aapt2_tests\nChange-Id: I8bb5cdf8446518ab153ea988e1243ca9494258c7\n"
    },
    {
      "commit": "c95add6ddc8902e6b5b30afccae1b16aa0f06a18",
      "tree": "01d423dda9ac256a5176a506c6201b5636f89d94",
      "parents": [
        "c8c4fea61f4295309895a11949d2cc538386bc39",
        "e0eba7a3bb951906476d16731a214f65b50f27f1"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Sep 19 18:33:46 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 19 18:33:46 2018 +0000"
      },
      "message": "Merge \"AAPT2: Increase maximum proto size\""
    },
    {
      "commit": "500d3f1aeea4e5f77003ee40c0d5b183c296285c",
      "tree": "04f12ff6599d46ed11790a6a012914d765e9e3c6",
      "parents": [
        "3427156b2c6ef97771fc9692c782247f0566c56e",
        "fc225b21c1f6bdfbb3723669b9e8378fb49e11b2"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Sep 19 00:10:11 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 19 00:10:11 2018 +0000"
      },
      "message": "Merge \"AAPT2: Added badging and permission\""
    },
    {
      "commit": "fc225b21c1f6bdfbb3723669b9e8378fb49e11b2",
      "tree": "aa24e1e30f21be4cfce5a9c213470b3002442cf7",
      "parents": [
        "a1a74cb44d1f6dd0962d0e7ef1bc0b4474fbb50c"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue Aug 21 14:52:51 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue Sep 18 13:17:01 2018 -0700"
      },
      "message": "AAPT2: Added badging and permission\n\nAdded the remaining dump commands to aapt2.\naapt2 dump badging [apk]\naapt2 dump permissions [apk]\n\nBug: 73351292\nTest: Diffing aapt and aapt2 output across apps from the Android tree\nChange-Id: Idee820db410ad8d777d0d250c2657e7b83112a00\n"
    },
    {
      "commit": "9fbdf89dda658c3b21924f6e28df7401d868394a",
      "tree": "22d31299968eef57cca5cd2adf205b1a04527960",
      "parents": [
        "5ed02df4df31373d7ff7c7deb9686f9508c031df"
      ],
      "author": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Tue Aug 28 16:31:15 2018 -0700"
      },
      "committer": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Mon Sep 17 14:16:21 2018 -0700"
      },
      "message": "Don\u0027t allow splitting on an empty configuration\n\nWhen aapt breaks out splits, it may remove the SDK constraint [if\nit\u0027s lower than the min sdk]. If that is the only constraint, we\nwould create a resource split with no constraints. Don\u0027t allow\nthat situation. There must always be _some_ constraint.\n\nBug: 113115970\nTest: atest CtsAppSecurityHostTestCases:SplitTests\nTest: aapt2_tests\nChange-Id: I424c875677c3be2a3ff5ddd39100b998bd650a4b\n"
    },
    {
      "commit": "e0eba7a3bb951906476d16731a214f65b50f27f1",
      "tree": "b2b522f081230f8e685baea7f32fe18721b24a92",
      "parents": [
        "342df6ddd178d55aa94e01ff94e5be00457f3440"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Sep 12 08:54:07 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed Sep 12 08:54:07 2018 -0700"
      },
      "message": "AAPT2: Increase maximum proto size\n\nDeserializing a proto form a string throws an error when 64MB have been\nread from the stream. This change removes the maximum size but shows a\nwarning when a proto is larger than 64MB.\n\nBug: 114020398\nTest: manual test with resources.pb greater than 64MB\nChange-Id: Iee397b6709d79a9338133a6136fe6e8f70a4964c\n"
    },
    {
      "commit": "dea2fe3f9f8c499f12967ef0bbcec9afdbbb9ae4",
      "tree": "aabcc4f87ed01d9864e3ee67ec931f7687a6e5b3",
      "parents": [
        "342df6ddd178d55aa94e01ff94e5be00457f3440"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Aug 30 13:48:54 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Aug 30 13:48:54 2018 -0700"
      },
      "message": "AAPT2: Fix dump apk format\n\nDumping resources printed the incorrect apk type.\n\nBug: 113062289\nTest: manual\nChange-Id: I8b250a470afa26697f80b1dfa8ba677ed654a958\n"
    },
    {
      "commit": "908b7fcfa1f9ae6da1edb5613aeb1764d21e99dc",
      "tree": "e25847acb648e897f523fdda46967ca3e123ae2f",
      "parents": [
        "6dd61f53dfc911215152fab045953d6ee3fd27e0"
      ],
      "author": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Fri Aug 24 10:11:21 2018 -0700"
      },
      "committer": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Fri Aug 24 10:55:44 2018 -0700"
      },
      "message": "dump package name\n\nTest: aapt2 dump packagename foo.apk\nBug: 113105112\nChange-Id: Ibea429adc3a2a890be10548824583addc59ad42d\n"
    },
    {
      "commit": "ead275e19fc9ffbd751b3956a84e27844b97ffe7",
      "tree": "f19915c04e52949cb29908ef1e0f6588ad98d766",
      "parents": [
        "a60283fdd1f2c67259e8b0c10d88ecfb60a1328b",
        "f3649d669059b924ce9eb3eb7909cbf0a2ed31a8"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Aug 16 17:26:08 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 16 17:26:08 2018 +0000"
      },
      "message": "Merge \"AAPT2: Compile --zip flag\""
    },
    {
      "commit": "5d2755129dae6ff6f0061da0abe634f44054b23e",
      "tree": "1cb30f47af58b340f5598defc4b062139812954d",
      "parents": [
        "1a8a69075e8710b3457f685de3984c7028ef2ffb"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Jul 19 14:29:00 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue Aug 14 15:56:29 2018 -0700"
      },
      "message": "AAPT2: Reformatted dump command invocations\n\nUse with:\n  aapt2 dump apc [apc]\n  aapt2 dump configurations [apk]\n  aapt2 dump strings [apk]\n  aapt2 dump resources [apk]\n  aapt2 dump xmlstrings [apk] --file [file]\n  aapt2 dump xmltree [apk] --file [file]\n\nWill add permissions and badging in a later commit.\n\nBug: 73351292\nTest: Manual tests of the commands\nChange-Id: I97eec01222af14053a98bd70255f1bfecd16b1c4\n"
    },
    {
      "commit": "1a8a69075e8710b3457f685de3984c7028ef2ffb",
      "tree": "bfa1feaf4b5242f1066079236bf864556abc7795",
      "parents": [
        "14590e6d0e3b6d885be97f0635c1538a0c49cb6e",
        "83a37adfbb3c9fc139cc7881995ddd63db4caff8"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue Aug 14 22:51:35 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 14 22:51:35 2018 +0000"
      },
      "message": "Merge \"AAPT2: Loosen loading apk format requirements\""
    },
    {
      "commit": "f3649d669059b924ce9eb3eb7909cbf0a2ed31a8",
      "tree": "9c484a1b455554f6939d066a4418ec4747a7cbd3",
      "parents": [
        "196a2956b2ddee915c524e5c0f511e5ce90cc7b4"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Aug 02 16:16:45 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue Aug 14 15:42:01 2018 -0700"
      },
      "message": "AAPT2: Compile --zip flag\n\nAdded a --zip flag similar to --dir that allows resources to be passed\ninto \"aapt2 compile\" using a zip file.\n\nAlso refactored Compile.cpp to be easier to mock and test in the future.\n\nBug: 74574557\nTest: aapt2_tests\nChange-Id: Idb90cb97e23a219525bdead38220cbf7bc6f3cab\n"
    },
    {
      "commit": "eef1b6cd4b62c32def28cad49294cc6e44ebe04e",
      "tree": "b18a67c2bd91fa8b38f148341c7c073b0f85b32d",
      "parents": [
        "08070ebd6af031e920065c9a740d24161d4d2e25",
        "70f797208ce11279f9914e871cfe654b74aa3596"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue Aug 14 18:20:57 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 14 18:20:57 2018 +0000"
      },
      "message": "Merge \"AAPT2: Adaptive icon refactor\""
    },
    {
      "commit": "f2c5ee5900ed5710bb0aaad31401937837fbe6fb",
      "tree": "0dd814beb6fa134d9b9e97cfde606225d642f7f1",
      "parents": [
        "031bfca15733a538b9e018c05b1b91dc5afda69e",
        "f67d486e58f93a1d45795cee04633fce5e5e2bc7"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Aug 13 18:07:38 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 13 18:07:38 2018 +0000"
      },
      "message": "Merge \"AAPT2: partial files contain only local resources\""
    },
    {
      "commit": "70f797208ce11279f9914e871cfe654b74aa3596",
      "tree": "40854397c7c1ad6232871e8f8a95d69a04b944b0",
      "parents": [
        "88ee680e4c8cd8f66d6117f74caf5324244cc316"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Mon Aug 13 07:37:24 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Mon Aug 13 07:37:24 2018 -0700"
      },
      "message": "AAPT2: Adaptive icon refactor\n\nPart of a refactor to specify sdk version for all \u003cadaptive-icons\u003e xml\nresources.\n\nBug: 79676805\nTest: build success\nChange-Id: I1cf1109103722a9562eaf6bf2dcd68d0ef8757eb\n"
    },
    {
      "commit": "83a37adfbb3c9fc139cc7881995ddd63db4caff8",
      "tree": "706379b92d5d73409c3d2e158fc560f720d764a1",
      "parents": [
        "deee39507f594db017f0e1beab5c973d178387a4"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Mon Aug 06 16:32:24 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Aug 09 10:57:29 2018 -0700"
      },
      "message": "AAPT2: Loosen loading apk format requirements\n\nThe Android runtime and AAPT are more lenient of apk format, allowing\nfor duplicate enty, types, and configs. This change loosens the\nResourceTable\u0027s checks on resource uniqueness when apks are loaded; not\nwhen ResourceTables are being created by aapt2.\n\nBug: 36051266\nTest: Tested using apks in bug with allow_duplicates on and off\nChange-Id: I9296417bf2dc53e1e891479a53679a0388210d50\n"
    },
    {
      "commit": "704090e02add5dccbad5e5edb1ff3181af073d81",
      "tree": "68ed45df5c5b156ebca0bb1a48b61e5048e31d08",
      "parents": [
        "0b015de77e40f9dc55d7add73089e4251fb43f82"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue Jul 31 14:59:25 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue Jul 31 22:06:24 2018 +0000"
      },
      "message": "AAPT2: Version code major flag\n\nAdds flag --version-code-major that injects android:versionCodeMajor\ninto the manifest if none is present or when overriding.\n\nBug: 109883459\nTest: aapt2_tests\nChange-Id: I10b27abb8fa8a99a41976c42c4d684b99978b4f9\n"
    },
    {
      "commit": "f67d486e58f93a1d45795cee04633fce5e5e2bc7",
      "tree": "e2d40be90b2a0f3890ae07b06ea51b356ee55636",
      "parents": [
        "a6f3ba1dc578c14e3ccbf61676ab7d3b54c69f1c"
      ],
      "author": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Tue Jul 24 11:54:32 2018 +0100"
      },
      "committer": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Wed Jul 25 09:50:15 2018 +0000"
      },
      "message": "AAPT2: partial files contain only local resources\n\nWhen writing a partial R file for the compiled file, only include\nresources defined locally - meaning those without a package. Do not\nwrite resources from other packages (e.g. \"android\").\n\nTest: manual\nBug: 73927419\nChange-Id: I84241352e643ca1f22a581e6847372e2a4278824\n"
    },
    {
      "commit": "58e2fbf16970d9e0c1e93f60b881765e87bfc7a6",
      "tree": "4ac5c6568a8dd55a61d12346121ebd1dddeed5f7",
      "parents": [
        "2e8c7670b12ce7075bcc34c1502d268a71f99a0d"
      ],
      "author": {
        "name": "Chris Warrington",
        "email": "cmw@google.com",
        "time": "Mon Jul 23 14:12:20 2018 +0000"
      },
      "committer": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Mon Jul 23 17:23:25 2018 +0100"
      },
      "message": "Revert \"AAPT2: Automatic Static Library Namespacing.\"\n\nThis reverts commit 481f027ddc3e0ff0e1838a9375c1286e8ad70d70.\n\nReason for revert: Not needed any more\n\nBug: 111543815\nTest: existing unit and integration tests\nChange-Id: I87b039192682636d81c2d33512495cb005c9504d\n"
    },
    {
      "commit": "5fa2bb14ec6e2a824559909f25e6ea82a2842f5a",
      "tree": "0544bf2e6da16b978251407e581a0ad7502c4cb5",
      "parents": [
        "89c9a12826b5d0c52edb97c17ee55c317425d5b8"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Jul 12 11:24:51 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Jul 13 23:41:46 2018 +0000"
      },
      "message": "AAPT2: Fix long version code bugs\n\nRefactoring areas in AAPT2 that use android:versionCode to also use\nabdroid:versionCodeMajor. Does not add versionCodeMajor command line flag yet.\n\nBug: 109883459\nTest: aapt2_tests\nChange-Id: I573fbea37491cf8c5742f9e385c66ee64c4e5166\n"
    },
    {
      "commit": "833a1a6c4a7b57431ae620fc83f4c17f6fbf6a06",
      "tree": "acac93a67f807052f0b77700195377f904ed20fa",
      "parents": [
        "53208af20d501b892b9cc9971033a9f2e2d7cf35"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Tue Jul 10 13:51:36 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Fri Jul 13 14:26:06 2018 -0700"
      },
      "message": "AAPT2: Refactor flags into commands\n\nRefactors the flag based command invocation into classes that make using\nsubcommands easier.\n\nTest: manual tests of printing\nChange-Id: Ic8df6af0be30db552e32150afebecbfeec7e1075\n"
    },
    {
      "commit": "40c95320fd1c5ccbabadfcee0c3cb9454155e3d3",
      "tree": "1c2fbefc647dbd9463db233fe218cd5f2986ed2f",
      "parents": [
        "dd309ea63aa589294bbd02e16c7816618b69a2aa",
        "9a2f6e60c6a8aba61dadc66c20f13d00327dca46"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu May 31 21:32:39 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 31 21:32:39 2018 +0000"
      },
      "message": "Merge \"AAPT2: Add Proguard rules for nav fragments\""
    },
    {
      "commit": "dcd58c420771af75c625242985bd96ba828aca56",
      "tree": "5eec0fc5731241d012c4d74d989100625175dabc",
      "parents": [
        "e59e48e9c1a14d1a22cf7bf32ae18d28f96cf3c2"
      ],
      "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 14:48:52 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\n"
    },
    {
      "commit": "9a2f6e60c6a8aba61dadc66c20f13d00327dca46",
      "tree": "eaff99a6c0e3e4db0e9a2f6da0af767038314b8d",
      "parents": [
        "5cfe061ed5644de4addbf43775963c5c5306ef20"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Wed May 23 14:23:18 2018 -0700"
      },
      "committer": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu May 24 09:58:27 2018 -0700"
      },
      "message": "AAPT2: Add Proguard rules for nav fragments\n\nAdds generation of proguard rules for fragments in res/navigation. All\nandroid:name attributes have keep rules generated for the classes they\nreference.\n\nBug: 69929974\nTest: aapt2_tests\nChange-Id: I05a87484ab357ea5629b73caad8488182f474e1f\n"
    },
    {
      "commit": "d51efe818b92ef83eb0539e63fb9d22b37e53696",
      "tree": "79ef94b35acd522b0fe038323abc3e6c63800827",
      "parents": [
        "db70b1764e46b2e4c8652e7b453f7ebefea1c7cf"
      ],
      "author": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Tue Apr 24 18:18:29 2018 +0100"
      },
      "committer": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Wed May 02 13:14:33 2018 +0100"
      },
      "message": "AAPT2: add flag for strict visibility\n\nWill only detect whether a resource was defined as both \u0027public\u0027 and\n\u0027private\u0027 (but will allow overriding \u0027undefined\u0027 visiblity for now).\n\nTest: TableMerger_test + manual\nBug: 72735798\n\nChange-Id: If0749559c91c4d8820a6286fc9ddc80209c1e5e9\n"
    },
    {
      "commit": "0a81745b487bb8301dc403e07a5d4fac323fffcb",
      "tree": "a865f3ec65fc56fc6167ad95ee2339becfd6f5e9",
      "parents": [
        "ffc63a35becb80220f966f1ebb249dfb3393392e",
        "c323122e9380865374b65e7431b3601b6268d97b"
      ],
      "author": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Thu Apr 26 15:27:00 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 26 15:27:00 2018 -0700"
      },
      "message": "Merge \"Allow using reserved package IDs\" into pi-dev am: 13588dc9e4\nam: c323122e93\n\nChange-Id: I0addf146d9519a93bc2f8f73898a3454cb1cfb56\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": "4cb8826c287286cab1d89a4f44fa117c31391e43",
      "tree": "b6c31a6583d8545307f9b48a6bd245d08d882dfc",
      "parents": [
        "c8f462eaa62bd80870b0b1e4fc9692497a443e31",
        "e31a4421400ee75478658b34d8260e5cb195ea9a"
      ],
      "author": {
        "name": "Todd Kennedy",
        "email": "toddke@google.com",
        "time": "Mon Apr 23 20:30:05 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Apr 23 20:30:05 2018 -0700"
      },
      "message": "Merge \"Allow overriding the compile SDK\" into pi-dev am: fd5166ddac\nam: e31a442140\n\nChange-Id: Iaaaee5337ba37a24d409c2e453995e314c562bce\n"
    },
    {
      "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": "1056019c2dcdce86d3ca78e96871363375bdc926",
      "tree": "971d5305f298ad93075efe458cabec673319ace1",
      "parents": [
        "bf813dbdb2ddac50c59995e1cb610efb12c39179"
      ],
      "author": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Fri Apr 13 11:56:35 2018 +0100"
      },
      "committer": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Wed Apr 18 14:27:52 2018 +0100"
      },
      "message": "AAPT2: include package name in styleable children\n\nWhen writing partial R files, also include the package of the styleable\nchild:\n\u003cdeclare-styleable name\u003d\"ds1\"\u003e\n    \u003cattr name\u003d\"font\"/\u003e\n    \u003cattr name\u003d\"android:font\"/\u003e\n    \u003cattr name\u003d\"tools:font\"/\u003e\n    \u003cattr name\u003d\"com.foo.bar:font\"/\u003e\n\u003c/declare-styleable\u003e\nwill produce:\ndefault int styleable ds1_font\ndefault int styleable ds1_android_font\ndefault int styleable ds1_tools_font\ndefault int styleable ds1_com_foo_bar_font\n\nBug: 73927419\nTest: manual, see description\nChange-Id: Ica493408c7c6d9e7fae2b693c96fbc20a723ce08\n"
    },
    {
      "commit": "a086da2cd0bd938142e461c8bb46e30fc3474882",
      "tree": "740f2ad0311b6465041f20d2271844398c6386ab",
      "parents": [
        "f8817064c1a07fcd41110034f56042e5fa5725b4",
        "68dc7ca5689b920c97db566387b1423384bb46e6"
      ],
      "author": {
        "name": "Ryan Mitchell",
        "email": "rtmitchell@google.com",
        "time": "Thu Apr 12 11:51:16 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 12 11:51:16 2018 -0700"
      },
      "message": "Merge \"AAPT: Multiple period legacy support and errors\" into pi-dev am: f845891031\nam: 68dc7ca568\n\nChange-Id: I9da94ea0e84ff3caf28597b1038ed6e4ac158280\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": "57ffac7f1002f39a3f029a103224512a261a9447",
      "tree": "f9f6d98cb19576d29e845b54128805819b846362",
      "parents": [
        "c66c34bbcf9cfb6089d33919fcaa6ecefa1bbcd4",
        "d3c5fb64e3c7ecdb7def3c278588d49243bd2e50"
      ],
      "author": {
        "name": "Mohamed Heikal",
        "email": "mheikal@google.com",
        "time": "Mon Apr 09 14:57:04 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 09 14:57:04 2018 +0000"
      },
      "message": "Merge \"AAPT2: Adds config support for manipulating resources\""
    },
    {
      "commit": "d3c5fb64e3c7ecdb7def3c278588d49243bd2e50",
      "tree": "e2a188c7d5dd61ba19c49a51e9af31cf55e34496",
      "parents": [
        "f42a1080d51887fdffcec1da3de3cdd9ab8ab93c"
      ],
      "author": {
        "name": "Mohamed Heikal",
        "email": "mheikal@google.com",
        "time": "Fri Jan 12 11:37:26 2018 -0500"
      },
      "committer": {
        "name": "Mohamed Heikal",
        "email": "mheikal@google.com",
        "time": "Fri Apr 06 15:03:23 2018 -0400"
      },
      "message": "AAPT2: Adds config support for manipulating resources\n\naapt2 optimise command can now take a resources config file as an\nargument. The config has the name of each resource and a list of\ndirectives. Currently implemented is the \"remove\" directive which marks\nthe resource for deletion.\n\nThe obfuscation whitelist code and argument name was changed to prevent\nconfusion.\n\nTest: make aapt2_tests\nBug: b/27523794\n\nChange-Id: I2d8e1985e5ea2286131c25231e2c411f3d9610ce\n"
    },
    {
      "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": "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": "68c02569ef6a2dea1852e07a309f3c328044f890",
      "tree": "ad7d48069d5773ddeb38572dd610df6ea38c278f",
      "parents": [
        "1f481277cdb407bc91d45aed06606f75ad972e56",
        "a15c2a8957b9883cb293fdacaeabd7f2e037a0a5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 30 00:15:39 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 30 00:15:39 2018 +0000"
      },
      "message": "Merge \"Check the size of the strings in the StringPool before flattening.\""
    },
    {
      "commit": "a15c2a8957b9883cb293fdacaeabd7f2e037a0a5",
      "tree": "0a133e8bfeb6a4d2f55be12a76a427e01f1cd7c9",
      "parents": [
        "3730b6bab6db741170471c2bd2755e3b31293a93"
      ],
      "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": "Thu Mar 29 15:42:13 2018 -0700"
      },
      "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"
    },
    {
      "commit": "97ffbfe26695e6ba8321fc00b7069af9c6389378",
      "tree": "ce11a6a75abce632363f0c41be7ac7db4f25cfbe",
      "parents": [
        "bd626aa9cb18a4e806db74c57cc8eaddd0c3ec26",
        "444f9bb6a18ff34b69cba504c8658b7013eaa53a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 28 17:46:19 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 28 17:46:19 2018 +0000"
      },
      "message": "Merge \"Added --debug-mode flag to AAPT2\""
    },
    {
      "commit": "c7ac3a1f4dbdb79171e274661d1521c704f1e063",
      "tree": "0b1f1649d52455f4e5609d48e714ed9c35cce89d",
      "parents": [
        "6d976f82b79c856051a80799cc3d547408a9c868"
      ],
      "author": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Tue Mar 27 14:46:52 2018 +0100"
      },
      "committer": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Tue Mar 27 18:29:36 2018 +0100"
      },
      "message": "AAPT2: add flag for forcing visibility level\n\nTest: manual\nBug: 72735798\nChange-Id: I29480e66384dd2da27e17ab454ac1fe8a033ee3e\n"
    },
    {
      "commit": "444f9bb6a18ff34b69cba504c8658b7013eaa53a",
      "tree": "71af93c737f75904da9fb0e49d254a91581c40e6",
      "parents": [
        "3730b6bab6db741170471c2bd2755e3b31293a93"
      ],
      "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": "Fri Mar 23 13:35:00 2018 -0700"
      },
      "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"
    },
    {
      "commit": "481f027ddc3e0ff0e1838a9375c1286e8ad70d70",
      "tree": "7df70b9bb3a5f42917ee8ea9bfa7bee8e6616ad2",
      "parents": [
        "f1a183b0a0e027abc4d0dc8286392c0620ccbe73"
      ],
      "author": {
        "name": "Chris Warrington",
        "email": "cmw@google.com",
        "time": "Tue Feb 06 14:03:39 2018 +0000"
      },
      "committer": {
        "name": "Chris Warrington",
        "email": "cmw@google.com",
        "time": "Wed Mar 14 15:05:39 2018 +0000"
      },
      "message": "AAPT2: Automatic Static Library Namespacing.\n\nIntroduces a link flag --auto-namespace-static-lib for use when linking\nstatic libraries.\n\nWhen linking a static library with compiled sources that have references\nto resources in provided libraries without an explicit package name,\nthe flag enables automatic inference of the package.\n\nIf a resource is present in the package that is being compiled, that is\nused, otherwise the reference is rewritten to the highest precedence\nresource with matching name and type.\n\nTest: m out/host/linux-x86/nativetest64/aapt2_tests/aapt2_tests \u0026\u0026 \\\n      $ANDROID_HOST_OUT/nativetest64/aapt2_tests/aapt2_tests\nTest: m frameworks/base/tools/aapt2/integration-tests\nChange-Id: I6c6017e054654d1f60782d0a428a7a2a47f8952b\n"
    },
    {
      "commit": "6f34e0dff676dab60d4f31bc45a0af1460648de3",
      "tree": "024807f8a1d7f053500c9a7d87673bdec056f3e1",
      "parents": [
        "a597260ba2bd75851c38ec300b68d973025e2b16"
      ],
      "author": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Mon Mar 05 14:19:43 2018 +0000"
      },
      "committer": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Mon Mar 05 14:21:36 2018 +0000"
      },
      "message": "AAPT2: add flag for not compressing resources\n\nOption and behaviour was already implemented, just missing the flag.\n\nTest: N/A\nBug: 70118728\nChange-Id: Ib1902cf547b4961395e6c6c99e02f32556981f48\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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "cb6c3f9b880160c35785b1780b282fdf92952b90",
      "tree": "e3b4211cbcdf9fc23c2cc9134ebc5d2b17e9b50a",
      "parents": [
        "ff38f236b55b51a9f8e03b909f4791ccca329c48"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Mon Nov 27 13:19:36 2017 -0800"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Wed Dec 13 12:28:39 2017 -0800"
      },
      "message": "AAPT2: Push more configuration code into the parser\n\nWhen parsing is complete, we now have a list of output artifacts that\nhave their referential integrity validated. This means that once the\nconfiguration file is parsed, the only errors that can occur are related\nto APK processing, and not the configuration itself.\n\nThis reduces the number of errors that could cause a partial output of\nAPK artifacts. It simplifies the public API and reduces the complexity of\nthe code to generate multiple APKs.\n\nTest: Ran unit tests\nTest: manually ran the optimize command to ensure it still works\n\nChange-Id: I3f2d885b207a84c958f5348a4baa6718598184a4\n"
    },
    {
      "commit": "99ac3fdbd85ba61ba988481d410072a30440c774",
      "tree": "aacd9e195388c86eeec9d57692c94d0b67eb5975",
      "parents": [
        "d87c6b51f55985e343cf96f57b06e4adebf53d25"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Tue Dec 12 16:55:31 2017 -0800"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Tue Dec 12 16:55:31 2017 -0800"
      },
      "message": "AAPT2: Remove unused command line option.\n\n--target-abis is never used and the same functionality works with\nonfiguration files.\n\nTest: Unit tests\nChange-Id: Ic890eb0f15fade82cd85ba34d653d6cea3b79fb2\nBugs: b/70571736\n"
    },
    {
      "commit": "b3b66ee66bf57e5de9b2236e379871188e0c716d",
      "tree": "f757ab002b68f97814c48aefbe56e59eb7a8c5f4",
      "parents": [
        "f2eaa3c7e44cab24e59e1a9f378a6352321f0090",
        "23a6e1e3901e1ef1e2bd5ebb2aff08b767d19c49"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 12 13:21:05 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 12 13:21:05 2017 +0000"
      },
      "message": "Merge \"AAPT2: allow to generate R.txt without R.java\""
    },
    {
      "commit": "725fb12c0d271c179c4f3689ee56296253f3cb62",
      "tree": "a69b7e539b47cee4583e63cb970bd3e6c96d5915",
      "parents": [
        "3a1e51ab804d27ab8a486e17af7f3ea0e6d8fb43"
      ],
      "author": {
        "name": "Tom Dobek",
        "email": "tdobek@google.com",
        "time": "Fri Dec 08 14:19:01 2017 +0000"
      },
      "committer": {
        "name": "Tom Dobek",
        "email": "tdobek@google.com",
        "time": "Mon Dec 11 10:30:12 2017 +0000"
      },
      "message": "Aapt2 convert: skip processing resources when resource table is absent.\nTest: manual\n\nChange-Id: Iafe20f98857a29d625e7a57a9201db6279d43e45\n"
    },
    {
      "commit": "23a6e1e3901e1ef1e2bd5ebb2aff08b767d19c49",
      "tree": "90eea395d30e3717e0efc5c6cd98d24c44bb9f00",
      "parents": [
        "f5cf390e416e964b915b8dcf3339230c93756547"
      ],
      "author": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Tue Dec 05 14:52:07 2017 +0000"
      },
      "committer": {
        "name": "Izabela Orlowska",
        "email": "imorlowska@google.com",
        "time": "Tue Dec 05 20:59:08 2017 +0000"
      },
      "message": "AAPT2: allow to generate R.txt without R.java\n\nBug: 69956357\nTest: manual\nChange-Id: If2bc32bd4efb1ea17c6cba7a17f2b2300164ede0\n"
    },
    {
      "commit": "49639bf6cd56c8c20398efa707db5f7a97ad73ba",
      "tree": "855df2a4ce6693f1eb3108fe71edef554e704297",
      "parents": [
        "1beccb0fc230d9e2030ad951d483fb0026ea2d49",
        "666de34a58320ecf24b78fff836732d8278f3e98"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 05 20:36:47 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 05 20:36:47 2017 +0000"
      },
      "message": "Merge \"AAPT2: Allow output artifacts to be filtered.\""
    },
    {
      "commit": "666de34a58320ecf24b78fff836732d8278f3e98",
      "tree": "e977214900398a0c8dc325893a5dc2aa0cbc3790",
      "parents": [
        "4f7413ea39e52fba994d41007f3f02170f1edfb2"
      ],
      "author": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Wed Nov 29 16:07:51 2017 -0800"
      },
      "committer": {
        "name": "Shane Farmer",
        "email": "safarmer@google.com",
        "time": "Tue Dec 05 10:52:48 2017 -0800"
      },
      "message": "AAPT2: Allow output artifacts to be filtered.\n\nA new optional flag has been added to allow a list of artifacts that\nshould be written as output to be provided. If the flag is provided,\nonly artifacts that have an output name matching an entry in the list\nwill be processed.\n\nTest: manually ran against an APK with multiple artifacts in the\nconfiguration and confirmed that only the specified artifacts were\nwritten.\nTest: Ran all unit tests.\n\nChange-Id: Ia32b19acf1b2ef3711abf13df08dc7b1aa0cf161\n"
    },
    {
      "commit": "4ab869e1e6f2eb472d34ae18a185ca52ddd98be1",
      "tree": "852085acfc20dcfabb6a20b575a23eb47f09caa4",
      "parents": [
        "b4de0609711eecc09bcbeed8b3cfd1186f86dff8",
        "11be9317efffafcac52cd2dc5cce1d951c966dd1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 05 16:03:26 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 05 16:03:26 2017 +0000"
      },
      "message": "Merge changes I2eef812b,I7b607192\n\n* changes:\n  AAPT v1 embed compile SDK version and codename into app\n  AAPT2: Embed version of framework an app was compiled against.\n"
    },
    {
      "commit": "5e50588e49189b9da31e82fabe33c49beeb1a7f7",
      "tree": "4ebac224f5c9aca652a263cf5cd3901d83e537a0",
      "parents": [
        "e888a8c60628e1a4dda813d97fffd45a277764d6",
        "b0643302c78d00db3036707a0df0ae5ce923ae15"
      ],
      "author": {
        "name": "Luke Nicholson",
        "email": "lukenicholson@google.com",
        "time": "Tue Dec 05 05:20:00 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 05 05:20:00 2017 +0000"
      },
      "message": "Merge \"Enable obfuscation of resource names, with whitelisting support.\""
    },
    {
      "commit": "b0643302c78d00db3036707a0df0ae5ce923ae15",
      "tree": "a77389c644eff8b5ef167c8e88f831a65a73e739",
      "parents": [
        "dcc0da281b4a7e250a732da524f90cbb954516eb"
      ],
      "author": {
        "name": "Luke Nicholson",
        "email": "lukenicholson@google.com",
        "time": "Fri Dec 01 15:29:03 2017 -0800"
      },
      "committer": {
        "name": "Luke Nicholson",
        "email": "lukenicholson@google.com",
        "time": "Mon Dec 04 17:54:05 2017 -0800"
      },
      "message": "Enable obfuscation of resource names, with whitelisting support.\n\nTest: Built aapt2, ran optimize on gmail apk with sample whitelist\nconfig file, and flags enabled. Added two unit tests to TableFlattener\ncovering obfuscation logic.\n\nChange-Id: Iad6329d75ff440121bf1a2cdf09c5f4bf4199d9d\n"
    },
    {
      "commit": "c6284379a5dde6bc5927409eff292db2f0add578",
      "tree": "be8da8977f7e1ae3339b9e6fd4dd4d60e80a19c1",
      "parents": [
        "36f46a87317be9c568649c423011b37e18698013"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Dec 04 13:46:23 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Dec 04 17:19:44 2017 -0800"
      },
      "message": "AAPT2: Embed version of framework an app was compiled against.\n\nThis change injects the \u0027android:compileSdkVersion\u0027 and\n\u0027android:compileSdkVersionCodename\u0027 into an app\u0027s AndroidManifest.xml,\nwhose values are dervied from the version name and version code of the\nframework AndroidManifest.xml that is being linked against.\n\nBug: 63388434\nTest: make aapt2_tests\nChange-Id: I7b607192ecb337307c4bcb5770e7f716c6d4c9d2\n"
    },
    {
      "commit": "2427dce8205607a107880e13b4cdf1caa07cc425",
      "tree": "4af999babef20cea944679544cc00fb25807eb4d",
      "parents": [
        "b4f84afccd933999fc3e507188ce04aecc2a28fe"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 30 15:10:28 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 30 16:12:29 2017 -0800"
      },
      "message": "AAPT2: Fix issue where exported symbols (@+id/*) were not exported\n\nTest: make AaptTestAppOne\nChange-Id: If3218c880e83c2cfaf535a099db38504471be676\n"
    },
    {
      "commit": "a693c4a32ebed4e96dcc1cf6a706e8ebbb004db2",
      "tree": "902f4d5abd493ccb8087b941676e2562c8db128b",
      "parents": [
        "60303333dc8ad61e640992cee2b5c601be73faf8"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 09 11:29:39 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 16 12:06:17 2017 -0800"
      },
      "message": "AAPT2: Move all file output to FileOutputStream\n\nFileOutputStream is safe to use on Windows, as it opens\nfiles using our compatibility API.\n\nBug: 68262818\nTest: make aapt2_tests\nChange-Id: Ib0b27e93edd609b49b1327db7d9867a002198ebb\n"
    },
    {
      "commit": "d8b4beaae90dd342b34396f2fe94f88b6cd5dbdd",
      "tree": "d59174241c00213df85d7ad155cdb746cb00edb4",
      "parents": [
        "9bdd372e27e0d46b6a350bb4a21c94fdd3e5db81"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Fri Nov 10 23:50:17 2017 +0000"
      },
      "committer": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Tue Nov 14 09:05:27 2017 +0000"
      },
      "message": "AAPT2 - Add ProtoApkSerializer implementation to convert from Binary to Proto.\n\nAlso new flag to choose the conversion direction:\n  --output_format [binary|proto].\n\nTest: Manual\n\nChange-Id: I61d381aa49869b0fd6bd9f017dda0cac5ca998bb\n"
    },
    {
      "commit": "d55bef78a5f2a0fe8068b26b463b161bd0398791",
      "tree": "05a154606f720ac82bf85797faee537d0edc4fde",
      "parents": [
        "a591149cbce49306a6a5e127f077b3551873d490"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Fri Nov 10 22:31:01 2017 +0000"
      },
      "committer": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Mon Nov 13 21:07:34 2017 +0000"
      },
      "message": "AAPT2 - Convert command to copy all the files.\n\nTest: Manual\n\nChange-Id: I8705966cb34ff41eb362126a35956720147fae91\n"
    },
    {
      "commit": "288536b6bd230ab216b2d19f3a6eff8099cde0cf",
      "tree": "a41eae51327a1fd6097c4e69630b614fceecc246",
      "parents": [
        "c061b4384744c3e7227bfe13a04a0c13c0e5121b",
        "7e8549dd57c28bc797049109e82cda245d33df15"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Fri Nov 10 20:09:47 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 10 20:09:47 2017 +0000"
      },
      "message": "Merge \"Refactor Convert command to use a ISerializer interface.\""
    },
    {
      "commit": "414e48a54143d78498dff381518c81e0c64ad56e",
      "tree": "e3e341036686ff730c146af7bf8062f155e26ffd",
      "parents": [
        "7cd3fa6fa2d0862e1ff2b8117a1d48238ad0a579"
      ],
      "author": {
        "name": "Donald Chai",
        "email": "dchai@google.com",
        "time": "Thu Nov 09 21:06:52 2017 -0800"
      },
      "committer": {
        "name": "Donald Chai",
        "email": "dchai@google.com",
        "time": "Thu Nov 09 21:47:20 2017 -0800"
      },
      "message": "AAPT2: whitelist alphanums instead of blacklisting hyphens in package names.\n\nBCP 47 uses plus signs for name mangling, and future qualifiers may\nstart using other reserved characters as well, so we might as well\nfutureproof the sanitizer.\n\nChange-Id: I1be7ee4234f8e30bb0ea832372b4dc932d30550c\nFixes: 69134786\nTest: UtilTest.SplitNamesAreSanitized\n"
    },
    {
      "commit": "7e8549dd57c28bc797049109e82cda245d33df15",
      "tree": "29f7f4c0bce99f0514c25564c0db3a729a705c9a",
      "parents": [
        "3b382900a81a10498fc35e927086982bc8e18437"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Fri Nov 10 01:22:12 2017 +0000"
      },
      "committer": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Fri Nov 10 05:04:48 2017 +0000"
      },
      "message": "Refactor Convert command to use a ISerializer interface.\n\nThis will allow for other implementations.\n\nTest: Manual\n\nChange-Id: Ibf9cf8f5ac2b5b8e51a5fb684b434a0f59a3cbee\n"
    },
    {
      "commit": "490595a5fc1c3618dbbc2da5d421d10c025fabac",
      "tree": "95b9f4a854da15241e2acc4b379693a9320c63f5",
      "parents": [
        "2dd3953ae00068a71da9f0a0d4e2fb9d8517424c"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Nov 07 17:08:07 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 09 14:57:49 2017 -0800"
      },
      "message": "AAPT2: Workaround for feature splits without namespacing\n\nAndroid Instant Apps in its current iteration does not use namespaces,\nbut due to limitations on the Android resource runtime, needs to make\nit look like it does.\n\nThis is due to a bug that treats any package ID that\u0027s not 0x01 or 0x7F\nas a shared library. Shared libraries require unique package names.\n\nAs a workaround, and since Android Instant Apps can not have a feature\ndepend on another feature, we can alter the resource package name of a\nfeature split just before writing it out to disk. This avoids using a\nunique package name while linking, thereby avoiding namespace issues.\n\nBug: 68820737\nTest: manual\nChange-Id: Ic553ed42656436bbb949393d0248ee7bb9d37860\n"
    },
    {
      "commit": "93190b79d11d874199cfe7258526a48cfc8399fc",
      "tree": "3a7ae2b44c7f9693d54cdb0849e21338398de3d3",
      "parents": [
        "b54be8de65b09c85992b30dbb1d52032f0498b6d"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 03 15:20:17 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Nov 07 11:21:10 2017 -0800"
      },
      "message": "AAPT2: Better debugging output\n\nTest: make aapt2_tests\nChange-Id: I7778b773201381538dc1f2e376abee4eb33e44c0\n"
    },
    {
      "commit": "4ee829a707e15aca85793ef65d588be51ac58d40",
      "tree": "7515318e3c0af975cf87a3382b98084de8c978a7",
      "parents": [
        "c7b5f787654a604fa43b35c2ad0e0c3fffa4eaa7",
        "8780eb6e4918ae24fb1ae74d631042c32e41dc3d"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Nov 07 19:05:22 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 07 19:05:22 2017 +0000"
      },
      "message": "Merge \"AAPT2: Add convert command\""
    },
    {
      "commit": "3a725dc11f54cb68745ebdf3aa20908c58dc94f2",
      "tree": "daa2299531d22d1a5b26ab534fff54a2524ce099",
      "parents": [
        "d46f87a9e2b444b6f9999d7ec86d347e2fe1b596"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 02 16:14:59 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 03 11:19:36 2017 -0700"
      },
      "message": "AAPT2: Fix GetFileType for unicode and long paths on Windows\n\nBug: 68262818\nTest: manual\nChange-Id: I4f02e544e45865984ff4e021a7d1e83f8baf24c3\n"
    },
    {
      "commit": "8780eb6e4918ae24fb1ae74d631042c32e41dc3d",
      "tree": "938e18951a562fcd043ac779c7e758444b4bf0a8",
      "parents": [
        "4f340a4f8b50b29b562407e39563ee78a90bea3f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Oct 31 17:44:39 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Nov 01 10:58:28 2017 -0700"
      },
      "message": "AAPT2: Add convert command\n\nThis command allows a developer to convert their proto APK\n(generated from the link phase using --proto-format) into\na binary APK suitable for use on device.\n\n  aapt2 convert -o output.apk input.apk\n\nTest: manual + make aapt2_tests\nChange-Id: I10a7c33bb4b57006d01fe00a8bf92f78e04e7e50\n"
    },
    {
      "commit": "dc21dea9b8b1157a4a9347b68301da4307c51168",
      "tree": "e5a861fbec159776bebc37296753ca21c7916593",
      "parents": [
        "0d769d80a9a871cd4f0e5dc24e63c86d97fb3ad8"
      ],
      "author": {
        "name": "Adam Koski",
        "email": "adamkoski@google.com",
        "time": "Fri Jul 21 10:55:27 2017 -0700"
      },
      "committer": {
        "name": "Adam Koski",
        "email": "adamkoski@google.com",
        "time": "Fri Oct 20 16:25:18 2017 -0700"
      },
      "message": "AAPT2: Produce Conditional Proguard Keep Rules\n\nAdd the option to produce keep rules that conditional keep based on\nusage of R identifiers. This allows Proguard to potentially shrink more\ncode if resources are not used.\n\nCurrently only produces conditional rules for classes referenced in\nlayout resources because they are the most common and has the easiest\ntransitive usage chain to analyze.\n\nBug: 63628451\nTest: make aapt2_tests and manual testing\nChange-Id: I6c1af7affd64af40c80e004d8506a9463444b2c3\n"
    },
    {
      "commit": "e59f0d80ec19249f72c07ae191ad673d040443e3",
      "tree": "8abc84d8e3739cab881a34a64d6459d9d187b48b",
      "parents": [
        "004511660671511ae88e0e837a6f92db28eadaef"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 13 09:36:53 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Oct 19 13:22:48 2017 -0700"
      },
      "message": "AAPT2: Enable building proto artifacts\n\n- This will allow the bundle tool to ingest the outputs of the aapt2 link\n  phase.\n\nBug: 64143208\nTest: manual\nChange-Id: I1a4b3ce5c2ffbbdc4bc642c3371a9ef2e7e9ad71\n"
    },
    {
      "commit": "004511660671511ae88e0e837a6f92db28eadaef",
      "tree": "f8999414faa4488e165a3f86b51c73f58609212b",
      "parents": [
        "d6912500c34506b0bfd1c0e472cefc60195a15eb"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Oct 03 07:44:08 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Oct 19 12:50:53 2017 -0700"
      },
      "message": "AAPT2: Define and Implement AAPT Container Format\n\nAAPT Container Format (.apc) is a simple container that\nenumerates the various intermediate files that AAPT2 generates\nduring the compile phase.\n\nThe format is defined in formats.md.\n\nFor now, continue using the .flat extension for the container file,\nand keep making use of the .flata zip for storing multiple files.\nThis will allow easier integration with existing build systems and allow\nthe evolution of the APC format to better handle arbitrarily large\nfiles.\n\nTest: make aapt2_tests\nChange-Id: Id7216e5b76316bdd683f0fa4eaf2d2da273ba815\n"
    },
    {
      "commit": "d6912500c34506b0bfd1c0e472cefc60195a15eb",
      "tree": "fb8f88559e09aeef2b1a2649744293854c45af3a",
      "parents": [
        "9a164691d7b3cd644b1b3692e01703c75977fb95",
        "b8f078c9a0c9f32ad84c475c26299ecb00962ffa"
      ],
      "author": {
        "name": "Donald Chai",
        "email": "dchai@google.com",
        "time": "Thu Oct 19 19:33:56 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 19 19:33:56 2017 +0000"
      },
      "message": "Merge \"AAPT2: Sanitize resource qualifiers before using in split names.\""
    },
    {
      "commit": "b8f078c9a0c9f32ad84c475c26299ecb00962ffa",
      "tree": "bc803682529c864d2475150920207e77c565ac27",
      "parents": [
        "96a30ab84c9e856cd7152d66d603205c3daff36e"
      ],
      "author": {
        "name": "Donald Chai",
        "email": "dchai@google.com",
        "time": "Wed Oct 18 23:51:18 2017 -0700"
      },
      "committer": {
        "name": "Donald Chai",
        "email": "dchai@google.com",
        "time": "Wed Oct 18 23:58:42 2017 -0700"
      },
      "message": "AAPT2: Sanitize resource qualifiers before using in split names.\n\nFixes: 67960909\nTest: UtilTest.SplitNamesAreSanitized\nChange-Id: I9ba1b8430a00cc7ce981075a60388f275c41dbea\n"
    }
  ],
  "next": "f4165c4cf7a4152a5ef34856a53f7a7757483020"
}
