)]}'
{
  "log": [
    {
      "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "f4165c4cf7a4152a5ef34856a53f7a7757483020",
      "tree": "d8a799a1548fbaee94ca3a0ac461d6e0829601a4",
      "parents": [
        "00d31c2760629e18088bcbfe2fe1c01e266bb866",
        "ab2a38c03d54fad1ed0873ac091959ee38823cd6"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 16 19:30:04 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Oct 16 19:30:04 2017 +0000"
      },
      "message": "Merge \"AAPT leave \u003cgradient\u003e alone for VDC\""
    },
    {
      "commit": "ab2a38c03d54fad1ed0873ac091959ee38823cd6",
      "tree": "5a360c6adc7e4e733e2a5d1d326a9b993ba5f20d",
      "parents": [
        "404f23d6d0950754f4d4d65606379889c922a3eb"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Oct 13 15:56:08 2017 -0700"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Mon Oct 16 10:34:27 2017 -0700"
      },
      "message": "AAPT leave \u003cgradient\u003e alone for VDC\n\nbug: 62421666\nTest: Tested with changes for Gradient of VDC.\n\nChange-Id: I07b39721aeaaafd888416a0f71f6cbd5fce97732\n"
    },
    {
      "commit": "ea13c1a234077203977a6234863c0cb36c43e02f",
      "tree": "92065882bafe7aa68988436065252a8af5d7bec6",
      "parents": [
        "8a0f0ed4d84573a2f9eec0753404b5cf44f51827"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 13 12:40:37 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 13 12:42:47 2017 -0700"
      },
      "message": "AAPT2: Flatten AndroidManifest.xml stringpool in UTF16\n\nA few OEM devices have introduced a memory corruption bug\nthat is only triggered when an application\u0027s AndroidManifest.xml\nuses UTF8 string pools. Workaround this by only encoding\nAndroidManifest.xml with UTF16 strings.\n\nBug: 64434571\nTest: manual\nChange-Id: I2ee50d1b2b5942d971ef2a544c878de63f67c652\n"
    },
    {
      "commit": "4670805ea441edb8b280f9312571e7799f1284cf",
      "tree": "593cfa51011a51f443e9dbaa5934ea159e7ae1d7",
      "parents": [
        "65e91ce6c3aac8e350cbf5e1de2d2b13c78d792b"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Sep 29 14:49:15 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Oct 04 14:26:55 2017 -0700"
      },
      "message": "AAPT2: Move format related files under same directory\n\nTest: make aapt2_tests\nChange-Id: Id72cdfc12ba3add294048e60c55f2461344464bf\n"
    },
    {
      "commit": "8cdca1bd722049facf5bbec44ec3ca67cade5288",
      "tree": "f5c1cbc7940d47b60cfdef1cd602e96ac1adefc7",
      "parents": [
        "d3ffa844f5a07756009f019e13806e253d1bb119"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Sep 28 15:50:03 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Sep 28 20:43:22 2017 -0700"
      },
      "message": "AAPT2: Cleanup proto classes/methods and add XML serialization\n\nTest: make aapt2_tests\nChange-Id: I01ac2285af6771a683533c033a59ae6cfe875d93\n"
    },
    {
      "commit": "d3ffa844f5a07756009f019e13806e253d1bb119",
      "tree": "75ebb146979439d850dd97b9645bae231923c5ca",
      "parents": [
        "43ddc05bbdbf8da73da2415b3ab4d68a0180f9b2"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Sep 28 13:34:35 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Sep 28 14:08:50 2017 -0700"
      },
      "message": "AAPT2: Cleanup Visitors for XML and Values\n\nTest: make aapt2_tests\nChange-Id: Ib61f64c155a380115610edeaf2d65e60258a2426\n"
    },
    {
      "commit": "123a19bc3af1c4da4faa9f781eaabcd0e9135f9c",
      "tree": "819cddace5365a06b9b786272d6871b5e48b233a",
      "parents": [
        "f5ff39f0bdfedb19d994b0e97403ff5b90ec6511",
        "1ef0fa9d7242b1926543bc49e35905d1be02a781"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Aug 29 17:32:24 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 29 17:32:24 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fixup namespace implementation\""
    },
    {
      "commit": "4ffea040641d3b74ab04b6d2d3e78280bc893d5f",
      "tree": "778e5b278aa1bb79bb90785af279db7cd2a8a625",
      "parents": [
        "668feb252a226f39acbad801bf8e256a04cb3e1f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Aug 10 15:37:28 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Aug 23 11:54:38 2017 -0700"
      },
      "message": "AAPT2: Define intermediate compiled XML proto\n\nThis proto format is meant to encapsulate more information\nthat is specific to Android and allows for easier validation\nand manipulation across tools.\n\nTest: make aapt2_tests\nChange-Id: I13bc34a460671fc0a36246be0d287a3d37d244d6\n"
    },
    {
      "commit": "1ef0fa9d7242b1926543bc49e35905d1be02a781",
      "tree": "1e0d7a900b8e595dcb38b41e8f6cd8e7690cd747",
      "parents": [
        "668feb252a226f39acbad801bf8e256a04cb3e1f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Aug 15 21:32:49 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Aug 23 11:30:54 2017 -0700"
      },
      "message": "AAPT2: Fixup namespace implementation\n\nA few pieces were missing in the namespace mangling implementation.\nNamespace aware libraries now work, along with R class generation.\n\nBug: 64706588\nTest: make AaptTestNamespace_App\nChange-Id: I12f78d6aa909e782c0faf7ceaa36058f2e6c864a\n"
    },
    {
      "commit": "2def7dcf22abbe4a2f419a82b080a7bcf2c8684d",
      "tree": "d16be10f419bbd9ba839ea2f24b02395320d1fcc",
      "parents": [
        "88bf767525b7dd8e7959d8aab18136754ccc2745",
        "6b372991296c9f2bd6f8f8847dcd23d50970d06d"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Aug 17 17:43:53 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 17 17:43:53 2017 +0000"
      },
      "message": "Merge \"AAPT2: Change XmlDom to exclude Namespace as a node\""
    },
    {
      "commit": "6b372991296c9f2bd6f8f8847dcd23d50970d06d",
      "tree": "325fa6d275390fd3d0d9757545f128fbe9ed39f9",
      "parents": [
        "c10cc1185b0024a12660f4de7fbb6ad78bd1cfb7"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Aug 09 10:54:23 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Aug 17 17:43:08 2017 +0000"
      },
      "message": "AAPT2: Change XmlDom to exclude Namespace as a node\n\nIn preparation for exporting an XML proto format for UAM to consume,\nthis change brings the XML DOM API more in line with other APIs that\ndo not make the Namespace a separate node.\n\nTreating Namespace declarations as just properties of an Element\nnode makes the implementation of algorithms much simpler, as\nthe constraints that Namespace nodes have only one child\nare now built in and traversing to find Element nodes\nis much simpler.\n\nAlso made a bunch of quality of life improvements, like formatting and\ncomment style.\n\nTest: make aapt2_tests\nChange-Id: Ib97ff1c4252b7907e2cc1f13a448dc4ca3b809a4\n"
    },
    {
      "commit": "38ef937bada0cf8e633c0319c4e550c335cce504",
      "tree": "645eab7c72598899ae669517bb5824a6a48be3ca",
      "parents": [
        "1583a4f9c8b789d5b7016dc64e68698a46cbb4eb",
        "c0a5e1e6004229cd53a6c3c271d5d657e93bf7ef"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Aug 15 18:33:47 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 15 18:33:47 2017 +0000"
      },
      "message": "Merge \"AAPT2: Make sure to fail when XML linking fails\""
    },
    {
      "commit": "49f0aa41f1df61f5899786f07704b75584417d6d",
      "tree": "7154d13991f9e3eefadf8b1401aeef3d25cbc4df",
      "parents": [
        "bfcff7be3099338fffca4af65967c030d47dd0e4",
        "efeb7af13be4446ce4a511a2ca707691e9a67c1e"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Aug 08 22:18:55 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 08 22:18:55 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fix windows unicode path issues\""
    },
    {
      "commit": "c0a5e1e6004229cd53a6c3c271d5d657e93bf7ef",
      "tree": "89562c7b1ccbace4c94cc443922d576bfd8d953a",
      "parents": [
        "b76b3056f57be4abf9fae1375861a5e7c897b074"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Aug 07 11:56:32 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Aug 07 11:56:32 2017 -0700"
      },
      "message": "AAPT2: Make sure to fail when XML linking fails\n\nBug: 64367402\nTest: manual\nChange-Id: I3082887f5e449d8d0dac2aad93a834eb346008ba\n"
    },
    {
      "commit": "efeb7af13be4446ce4a511a2ca707691e9a67c1e",
      "tree": "36dc0651bcad4b81faf41fe730754d96d6eea465",
      "parents": [
        "f0f9fa330772f5f6a13673bd1204251c464ce67b"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Aug 02 14:57:43 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Aug 03 17:33:52 2017 -0700"
      },
      "message": "AAPT2: Fix windows unicode path issues\n\nMingw64 was being difficult, so instead of defining a wmain entrypoint,\nthe command line parameters are parsed manually using built-in Windows\nmethods that support Unicode. The results are converted to UTF8 and\nhandled just like the rest of the linux/mac version of the code.\n\nThis also removes dependencies on std::istream in favour of a\nFileInputStream which calls the appropriate unicode version of\nopen to read a file.\n\nNo speed regressions found on Linux or MacOS.\n\nBug: 62336414\nBug: 63830502\nTest: manual\nChange-Id: I597da51e33729ed1b98bf246e7e773337fd3fee8\n"
    },
    {
      "commit": "4dc5812dc065df9ce7427fdb270120cdf44025c3",
      "tree": "a4e4c495dc800d3a6fab0fe86e558a86eada6a19",
      "parents": [
        "d02180fa204347407c45ff0dbb93a878a663fc08"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Aug 03 16:28:10 2017 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Aug 03 16:28:10 2017 -0700"
      },
      "message": "Fix clang-tidy performance warnings in aapt2.\n\n* Use const reference parameter type to avoid unnecessary copy.\n* Use more efficient overloaded string methods.\n\nBug: 30407689\nBug: 30411878\nTest: build with WITH_TIDY\u003d1\nChange-Id: Iaa0a6f18f64cf573bee49dd1466281ea4d37b410\n"
    },
    {
      "commit": "bb94f32a0042c8e2ab3d6e0de1b693713d2a6eab",
      "tree": "db48ae6d8e3dd04f28fa5b17ff1c0efcf1cd36a6",
      "parents": [
        "f7f48b17cbdfffa130cdb8991a9c2b09f7659664"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jul 12 07:41:55 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jul 12 07:42:01 2017 -0700"
      },
      "message": "Revert \"AAPT2: Auto-version adaptive-icon XML\"\n\nThis reverts commit 5b7337f77cf036dda2c7218ccf22dedc774dcf76.\n\nBug: 63579299\nTest: none\nChange-Id: Ib617c4edfc16eeae3507b59b2debeae4f8bbf9a5\n"
    },
    {
      "commit": "5b7337f77cf036dda2c7218ccf22dedc774dcf76",
      "tree": "b7aab8df43eeff70759f84e45da95b507edfddcc",
      "parents": [
        "8276d0e1527ad08aae3ec39529b10477358a1dae"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jun 26 14:57:22 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jun 28 11:20:17 2017 -0700"
      },
      "message": "AAPT2: Auto-version adaptive-icon XML\n\nAuto version adaptive-icon XML to v26.\n\nThis change makes the logic for generating versioned resources\nsimpler by changing the comparison function of ResTable_config\nto evaluate the sdkVersion property last, making configurations\nthat differ only in sdkVersion next to each other in a sorted vector.\n\nBug: 62316340\nTest: manual (verified output of tools/aapt2/integration-tests/AppOne)\nChange-Id: I977d45821722a65d2135efb4693304eacc565c9a\n"
    },
    {
      "commit": "0d81f701045ff24a2c6a39520629a1898d5f8b65",
      "tree": "3239380c90cfb67c12a77a9a6f1ba008638bb7fb",
      "parents": [
        "366d27d31e9341def03ba6eea310d6f56be69abd"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jun 27 15:51:09 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jun 27 18:46:58 2017 -0700"
      },
      "message": "AAPT2: Honor --custom-package when writing Manifest.java\n\nBug: 62826426\nTest: manual\nChange-Id: I517ff5da2ef2a9147ddbfb13b074a1f60550f189\n"
    },
    {
      "commit": "f296105e22d3c191c014c64a3b8a19421e325267",
      "tree": "4844e3ef508a44e7fe5dba83793192b0de4ad167",
      "parents": [
        "f42c86660d15c50ff7431b89342e590bcc1bed37",
        "41ea44f63d78b03a7c323639f3b80364b65f5a13"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 31 20:48:49 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 31 20:49:02 2017 +0000"
      },
      "message": "Merge \"AAPT2: Update --no-version-vector list\" into oc-dev"
    },
    {
      "commit": "41ea44f63d78b03a7c323639f3b80364b65f5a13",
      "tree": "94cc92e0b26c9cfbc08c065a3a39a50ba669513d",
      "parents": [
        "bacaffa497de1877657f9cb3f59a82e3955f0f75"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed May 31 10:22:30 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed May 31 10:23:58 2017 -0700"
      },
      "message": "AAPT2: Update --no-version-vector list\n\nKeep in sync with AAPT. Since gradle is moving to use AAPT2\nby default, updates to AAPT will no longer be necessary and\nthis will be the authoritative list until a more programmatic\nsolution presents itself.\n\nBug: 62211148\nTest: manual\nChange-Id: Id9232c9fb730c50e4850887fa0f5da82574ca900\n"
    },
    {
      "commit": "2354b568379fe31ba4e774f7a92d4c685a60a2ab",
      "tree": "585bb0c60c38428e2328beb330fd2fc79e11e7d2",
      "parents": [
        "bacaffa497de1877657f9cb3f59a82e3955f0f75"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri May 26 16:31:38 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri May 26 16:56:34 2017 -0700"
      },
      "message": "AAPT2: Follow symlinks when compiling\n\nBug: 62144459\nTest: make AaptSymlinkTest\nChange-Id: Idb3ab1ece17c52bb4fd174ec4c08a9e173289e55\n"
    },
    {
      "commit": "c744ae8aca97edfb2422598ea620e8219449fa9b",
      "tree": "4e7c29d6b47c464dd5aa0af204d86a7340b0084f",
      "parents": [
        "0418b72fd2c91f32c42e3a406df2a866888fc766"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed May 17 19:28:38 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed May 24 15:14:29 2017 -0700"
      },
      "message": "AAPT2: Implement attribute compat versioning\n\nThis change defines some hardcoded rules to degrade\nattributes in newer SDKs to specific older attributes.\n\nAn attribute with a degrade rule will generate a new XML for the API\nin which the attribute resulting from the degradation was introduced.\n\nSince API 22 (Lollipop MR1), attributes are correctly ignored and do\nnot need to be versioned. In XML files defined for APIs 22+, the\noriginal and degraded attributes coexist in the same XML file.\n\nOne such example is paddingHorizontal, introduced in API 26.\npaddingHorizontal degrades to paddingLeft and paddingRight, which\nwere both introduced in API 1.\n\nBug: 35763493\nTest: make aapt2_tests\nChange-Id: I4aa8755a9ee2c0cc5afdc55c3d30093fd3a47f3d\n"
    },
    {
      "commit": "53c9898e7952b966b61b0c1d74ee1186a8057a47",
      "tree": "4dda977e8de7ca5904a19d172ac9b242ce3e95b5",
      "parents": [
        "5bb8294f926dcaf4a7288ba4457d84d57bb4ab53",
        "360182156a8e188534620de1e804993a6458470d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Apr 29 20:38:15 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Apr 29 20:38:20 2017 +0000"
      },
      "message": "Merge changes I446fb6ab,Ife3bbd29 into oc-dev\n\n* changes:\n  Valid resource IDs may be negative\n  AAPT2: Workaround for findViewById with package ID \u003e 0x7f\n"
    },
    {
      "commit": "1e4b0e54a3db31bdbcb9385bf22bab4b96096d1f",
      "tree": "3c87c9080c067aacf8235a07214d3edc35bd86ed",
      "parents": [
        "0ddca92018da69e7224b63cdedbf1944c63ddc34"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Apr 27 15:01:10 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 28 12:47:48 2017 -0700"
      },
      "message": "AAPT2: Workaround for findViewById with package ID \u003e 0x7f\n\nThe entire View code base checks IDs against View.NO_ID except\nfindViewById(), which checks to see if the ID is negative.\n\nAny package ID \u003e 0x7f is interpreted as a negative number in Java\n(no unsigned ints), so this check prevents the use of IDs \u003e 0x7f.\n\nfindViewById is final, so support library workarounds are not possible.\n\nInstead, IDs (@id/foo) are just sentinels, their values don\u0027t matter.\nIf building for pre-O devices, rewrite any references to these IDs of\nthe for 0xPPTTEEEE, where PP \u003e 7f, to 0x7fPPEEEE.\n\nThe symbol table will check for potential collisions against the base\nAPK, so this should be safe.\n\nBug: 37498913\nTest: manual\nChange-Id: Ife3bbd29db287757ef8a2ffd83053d97f1db2613\n"
    },
    {
      "commit": "820d72adc0eccbfe4ac4238cdc89b7680ea03d9e",
      "tree": "d7f39f1675f4b0f20f764dfa8b70dfb1a26e14e5",
      "parents": [
        "3dfd8275749a734380282437579156b6b35ccc51"
      ],
      "author": {
        "name": "Chris Warrington",
        "email": "cmw@google.com",
        "time": "Thu Apr 27 15:27:01 2017 +0100"
      },
      "committer": {
        "name": "Chris Warrington",
        "email": "cmw@google.com",
        "time": "Fri Apr 28 10:06:38 2017 +0100"
      },
      "message": "AAPT2: Error reporting through JNI.\n\nRather than relying on stderr being wired correctly.\n\nTest: Tests for JNI integration in studio-master-dev.\nChange-Id: I1c7e7130bc4e56d61de259a9596bee3a6b3520fb\n"
    },
    {
      "commit": "b522f04bc2a581e2877bef4a44ac00b827f879ed",
      "tree": "4cb0aa93571e8abfdc485ad6e3f2070ba5569347",
      "parents": [
        "9431c476f35431f45a13c257b305e9999821190d"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 21 16:57:59 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 21 17:02:09 2017 -0700"
      },
      "message": "AAPT2: Allow truncating of package names\n\nResTable_package header only allows 127 UTF-16 characters, so AAPT\nwould truncate the real package name to fit. AAPT2 would error-out\non any package name longer than 127 UTF-16 characters. This strictness\nis not required except when building shared libraries, which use the\nfull package name as a way of identifying the runtime assigned\npackage ID to package name mapping.\n\nBug: 36940145\nTest: make aapt2_tests\nChange-Id: I7d2b7e50c7ab30c6a6c4f15d310e711f68e35091\n"
    },
    {
      "commit": "b97d51a0d2bd28f597cd81df9bbd776436d03fb6",
      "tree": "716e3d6504e69097e60df7d27ce854ce01f999c3",
      "parents": [
        "676bd21542d991edfadf8b655d481baa83d23511",
        "db091577fff5bcddac703bc8ac4f932fd53e0621"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 14 00:58:04 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 14 00:58:08 2017 +0000"
      },
      "message": "Merge \"AAPT2: Allow the \u0027;\u0027 separator on Windows for split args\" into oc-dev"
    },
    {
      "commit": "db091577fff5bcddac703bc8ac4f932fd53e0621",
      "tree": "9367138a0889a4c84c7ea993853eb62db099c549",
      "parents": [
        "ec8f35366851fcfea2d8b8e42821dda72bdca344"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Apr 13 12:48:56 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Apr 13 16:07:35 2017 -0700"
      },
      "message": "AAPT2: Allow the \u0027;\u0027 separator on Windows for split args\n\nBug: 36870463\nTest: manual (wine)\nChange-Id: I8a38545a3cac9354b41858e1840b197b60925c03\n"
    },
    {
      "commit": "62b713ed73e72ce18ae81367322e5de00aabeb07",
      "tree": "f60ba4b2dff556dba638f4cd0525749a65ad697c",
      "parents": [
        "07525d4f259934e43d10c733b203a55c6fa8e1ef",
        "ea134e08d70d156bdd17714d5f9ab9c44c91d4fa"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Apr 13 22:53:56 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 13 22:54:02 2017 +0000"
      },
      "message": "Merge \"AAPT2: Fix order-of-destruction crash\" into oc-dev"
    },
    {
      "commit": "ea134e08d70d156bdd17714d5f9ab9c44c91d4fa",
      "tree": "6a4f5d5db064e11a303d6adb7b5e0cec2e126282",
      "parents": [
        "ec8f35366851fcfea2d8b8e42821dda72bdca344"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Apr 13 12:55:19 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Apr 13 12:57:06 2017 -0700"
      },
      "message": "AAPT2: Fix order-of-destruction crash\n\nMake sure that users of StringPool are destroyed before\nthe StringPool itself.\n\nTest: valgrind aapt2 optimize -o opt.apk out/target/common/obj/APPS/framework-res_intermediates/package-export.apk\nChange-Id: I140c2d32f8449028976795d5d6865d83e1409b53\n"
    },
    {
      "commit": "418763ff54170484c527bf618ef2fad34fe63f97",
      "tree": "fd7d16b9602e9487917058997bda65bed6551c85",
      "parents": [
        "ec8f35366851fcfea2d8b8e42821dda72bdca344"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Apr 11 17:36:53 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Apr 11 17:40:02 2017 -0700"
      },
      "message": "AAPT2: Generate R.txt\n\nIn order to support a staged rollout of support for AAPT2,\nlibraries being built the old way (merged into a single resource\ndirectory) still need to make use of the generated R.txt AAPT\nemitted. Do the same as AAPT.\n\nTest: manual\nChange-Id: Iaac1e824ddbd67e4efbab7692cddc1e4aa052f5a\n"
    },
    {
      "commit": "d0f492db038c6210c1138865d816bfb134376538",
      "tree": "1d4ed362037758111a28ecb453d527403d5d6815",
      "parents": [
        "0015a153536c51cdd66dce5e9f08d19eb517fab8"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Apr 03 18:12:45 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Apr 10 11:59:18 2017 -0700"
      },
      "message": "AAPT2: Share split functionality between link and optimize\n\nGenerating splits should be possible to do from the optimize command.\nThis means that a lot of infrastructure around split APKs can be\nshared by both the optimize and link phase.\n\nBug: 35925830\nChange-Id: Ia88b9e4bff300a56353b2f7a4a2547c8eb43a299\nTest: manual\n"
    },
    {
      "commit": "f4dacf29cc995fad4aea8e8f25811f9ee4685d91",
      "tree": "8b75908098416f6cee9505070e409f2c6c8777f1",
      "parents": [
        "ca73ff016f29bb091cd404717b5908db4cce10d0"
      ],
      "author": {
        "name": "Mihai Nita",
        "email": "mnita@google.com",
        "time": "Fri Apr 07 08:25:06 2017 -0700"
      },
      "committer": {
        "name": "Mihai Nita",
        "email": "mnita@google.com",
        "time": "Fri Apr 07 09:27:03 2017 -0700"
      },
      "message": "AAPT2: fixing the -c flag being ignored\n\nBug: 36999175\nTest: manual\n\nChange-Id: Id9a4a00a3b37bc088d86df7c75bbe711536b980f\n"
    },
    {
      "commit": "113ee097386380daa8f01d74916504a9a1338a63",
      "tree": "eec257e64dd728c8d4432c7ad08773d4821a92d6",
      "parents": [
        "881a623e3522e3e4f0905b606ca5c77cf899b21c"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Apr 03 19:38:25 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Apr 03 19:38:25 2017 -0700"
      },
      "message": "AAPT2: Allow multiple -c flags\n\nAAPT allows multiple -c flags in addition to separating -c arguments\nwith commas.\n\nBug: 35671619\nTest: manual\nChange-Id: I90491968e8ea2b28e3cd6e9246bcdd62bd6d6a3c\n"
    },
    {
      "commit": "06460ef0d7072114ea3280e1650f77f55e7223f4",
      "tree": "5045dafbd896153c191ee0ea14717359021175e2",
      "parents": [
        "3910adfb62b6db705878058ccbae52af0fecb172"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Mar 14 18:52:13 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Mar 20 16:53:46 2017 -0700"
      },
      "message": "AAPT2: Fix up file IO\n\nThis also enables an AAPT behavior that CTS tests have\ncome to depend on.\n\nSmall files that compress negatively (get larger) are stored\nuncompressed. Some CTS tests assume this and try to open these\nfiles by mmapping them, which is only possible if they are\nuncompressed.\n\nBug: 35461578\nTest: make aapt2_tests\nChange-Id: Id622a6150fe72477ad65d67d1bad897a8ee2ffb9\n"
    },
    {
      "commit": "b0c47ef8779e445865e63355ab66265461e1f2a3",
      "tree": "b0823faa314d767d90f9f0d2120c56ca57653ed0",
      "parents": [
        "1665d0f028e3a225cb117d3e227bef5c5dace2d4"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Mar 06 20:05:57 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 16 15:45:16 2017 -0700"
      },
      "message": "AAPT2: Finish support for feature splits\n\n- Prefix the config split name generated from a feature split with the\n  name of the feature split.\n- Add the \u0027configForSplit\u0027 attribute to the \u003cmanifest\u003e tag of a config\n  split and give it the same name as the feature split it was generated\n  from.\n- Look for the featureSplit attribute in \u003cmanifest\u003e and automatically\n  convert it to \u0027split\u0027 and inject \u0027android:isFeatureSplit\u003d\"true\"\u0027.\n\n  Feature splits should be written like so:\n\n  \u003cmanifest xmlns:android\u003d\"http://schemas.android.com/apk/res/android\"\n            package\u003d\"com.foo.example\"\n            featureSplit\u003d\"feature_b\"\u003e\n\n        \u003cuses-split android:name\u003d\"feature_a\" /\u003e\n\n        ...\n  \u003c/manifest\u003e\n\nBug: 34703094\nTest: manual\nChange-Id: I01b5c4a9aa03a2d25ef1e87bc7874b57c9deede9\n"
    },
    {
      "commit": "b39ad7c9f66877f92ea8583aa8b7b5a8daa6031e",
      "tree": "8b444f19230497d8a12e940c2ecd7a6673386345",
      "parents": [
        "208e2644618af7474f399089c264f0da1cfb0c81"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Mar 13 11:40:48 2017 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Mar 14 12:26:28 2017 -0700"
      },
      "message": "AAPT2: Add -A (assets) support\n\nLooks like the build system doesn\u0027t support assets/ for\nresources, so we will re-introduce them in aapt2, even though\nwe\u0027re just copying them around and they would be better\nsuited for inclusion in the APK when classes.dex gets inserted.\n\nBug: 35461578\nTest: CTS test android.content.res.cts.AssetManager#testAssetOperations should pass\nChange-Id: I18361d7367d476806bcf7154ee76df3f0e83b565\n"
    },
    {
      "commit": "f34b6f4f2b969b47a3f371eb9549e92ef1680d91",
      "tree": "ba2db0d2374464655c54dd7a3c24a65207e415a3",
      "parents": [
        "df2870df9ae6e5dbb7acfe3d5fd840a3317b0e66"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 03 16:33:26 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Mar 07 11:06:16 2017 -0800"
      },
      "message": "AAPT2: Add --package-id flag for feature-split suppport\n\nBug: 35928935\nChange-Id: Ia8496505e61cfcfdb8f9f62366d2f36e453db111\nTest: make aapt2_tests\n"
    },
    {
      "commit": "b5dc4bd49a036e3403ca17e961d2c8e13e038295",
      "tree": "e07c0d9a9718a34e2834fe6adbfd99e449cebb8b",
      "parents": [
        "9a53d03104c4535f512ec24e63afe9a965979812"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 22 19:29:29 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 22 19:54:43 2017 -0800"
      },
      "message": "AAPT2: Few tweaks to get shared-libraries working\n\nTest: manual (building shared support library demo)\nChange-Id: I4730645aa92ba1893baf67ffe35fbd4aac0f8e46\n"
    },
    {
      "commit": "d48944a745f9ed121e6bde22ef6feb3a44fbec39",
      "tree": "349c152caa68f1283535b2f9c49f5cd8a50eb59b",
      "parents": [
        "ceb9b2f80f853059233cdd29057f39a5960a74ae"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 21 14:22:30 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 22 11:41:55 2017 -0800"
      },
      "message": "AAPT2: Rename strip phase to optimize\n\n- Allow resource deduping, version collapsing, and sparse resource\n  encoding.\n\nTest: manual\nChange-Id: Ia4aa892ab5b06ba1d5ea4a6efb51b00bc3a980c4\n"
    },
    {
      "commit": "ceb9b2f80f853059233cdd29057f39a5960a74ae",
      "tree": "9093e8537319a97d8a2cbd8d4f0042c81de5ff8e",
      "parents": [
        "f9bd2944694539f1dce74d420156cc50bbb4af14"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Feb 16 12:05:42 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 22 11:16:13 2017 -0800"
      },
      "message": "AAPT2: Shared library support\n\nTest: make aapt2_tests\nChange-Id: I98dddf1367e6c0ac425bb20be46e6ff05f4f2f45\n"
    },
    {
      "commit": "c8f71aa67ea599cb80205496cb67e9e7a121299c",
      "tree": "2966aa97b09f04f9b7379fd93a7fc3ea1ae9009f",
      "parents": [
        "c535d122c6a58a152ff2581f936070c2695c45ba"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 08 07:03:50 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 15 12:40:02 2017 -0800"
      },
      "message": "Add ResTable_sparseTypeEntry support\n\nBenchmarks on bullhead-userdebug show that there is a negligent\nperformance impact when using sparse entries on a 30% loaded\nsparse type of 1000 resources.\n\nBenchmark                                             Time           CPU Iterations\n-----------------------------------------------------------------------------------\nBM_SparseEntryGetResourceSparseLarge                255 ns        254 ns    2751408\nBM_SparseEntryGetResourceNotSparseLarge             254 ns        254 ns    2756534\n\nBug: 27381711\nTest: make libandroidfw_tests aapt2_tests\nChange-Id: I051ea22f2f6b2bc3696e446adc9e2a34be18009f\n"
    },
    {
      "commit": "672384b41e1fc7195424533b7aa6753fb771a6cb",
      "tree": "2fa775cab3a3f4b0df5649b2f25e6c0577c0e44c",
      "parents": [
        "85a05cd9b5945c42f46ce1bcacb2d1e0aa8c7a44"
      ],
      "author": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Mon Feb 06 10:29:02 2017 +0000"
      },
      "committer": {
        "name": "Pierre Lecesne",
        "email": "lecesne@google.com",
        "time": "Sun Feb 12 15:57:41 2017 +0000"
      },
      "message": "Allow for multiple preferred densities in the strip command.\n\nTest: Unit tests pass.\n\nChange-Id: I1f27ac8c36ff3489e4c8e4fce7f3d9cb31df6906\n"
    },
    {
      "commit": "4d35cca96ce55eb29d1948086214f91ae94e9adb",
      "tree": "2ddb5bd63163bf8806be9dc4773e66630b5c4712",
      "parents": [
        "9727f22fc092fe7ccdbf2929d697126f2095d62e"
      ],
      "author": {
        "name": "Yuichi Araki",
        "email": "yaraki@google.com",
        "time": "Wed Jan 18 20:42:17 2017 +0900"
      },
      "committer": {
        "name": "Yuichi Araki",
        "email": "yaraki@google.com",
        "time": "Tue Jan 24 14:59:51 2017 +0900"
      },
      "message": "AAPT: Add --no-version-transitions flag\n\nAdd a new flag to disable versioning of Transition related XMLs.\nTransition support library will use this to handle these XMLs on older\nAPI levels.\n\nTest: make libaapt_tests AaptTestAppOne\nBug: 34427868\nChange-Id: I66e81cca049e71ef6704177b2ca21c9cdeaff78f\n"
    },
    {
      "commit": "d5083f6f6b9bc76bbe64052bcec639eee752a321",
      "tree": "29b5dfb74c7e9b12164ced408315b0ad8d5cf527",
      "parents": [
        "04e7b6c6de620406348142ba9dd65bad094e264b"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 16 15:07:21 2017 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jan 17 18:55:51 2017 -0800"
      },
      "message": "Move StringPiece to libandroidfw\n\nlibandroidfw needs to make use of StringPiece, so\nmove it to libandroidfw and update all code referencing\nStringPiece in aapt2.\n\nTest: make libandroidfw_tests libaapt2_tests\nChange-Id: I68d7f0fc7c651b048d9d1f5e7971f10ef5349fa1\n"
    },
    {
      "commit": "e343eb145c42d00c4fd3fdde93cd0be55cb5b855",
      "tree": "687304b2b9ca6106eaa7387c304ac4e46570ddc1",
      "parents": [
        "584264f6af08faea57653c65db4abcb8111009c0"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Oct 27 16:31:58 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Oct 27 16:31:58 2016 -0700"
      },
      "message": "AAPT2: Insert \u003cuses-sdk\u003e element before \u003capplication\u003e\n\nPackageParser on the device uses the targetSdkVersion of the\napp while it parses \u003capplication\u003e. That means that if the\n\u003cuses-sdk\u003e tag comes after \u003capplication\u003e, the targetSdkVersion\nis assumed to be 0.\n\nTest: make libaapt2_tests\nChange-Id: I60f2179a7ff44e7419217afb53f3d24f8c030f6e\n"
    },
    {
      "commit": "ce5e56e243d262a9b65459c3bd0bb9eaadd40628",
      "tree": "cf0ecea98883d090d8d2856fc6d32046c7e3d9e8",
      "parents": [
        "0f7cc4dc2c49a30c072cbc7aa6c0c5d5c31496d4"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 21 17:56:45 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Oct 26 19:30:23 2016 -0700"
      },
      "message": "AAPT2: Rename to match new style\n\nUse Google3 naming style to match new\nprojects\u0027 and open source google projects\u0027 style.\n\nPreferred to do this in a massive CL so as to avoid\nstyle inconsistencies that plague legacy code bases.\nThis is a relatively NEW code base, may as well keep\nit up to date.\n\nTest: name/style refactor - existing tests pass\nChange-Id: Ie80ecb78d46ec53efdfca2336bb57d96cbb7fb87\n"
    },
    {
      "commit": "6a396c1abb4e52f5a8fed5fab204ebc7b8e16dec",
      "tree": "7494b207c6cc2a37a84ee988cec11b2ffc4831d4",
      "parents": [
        "011cef54ee0a8260f6b4381c7ea28a450cd3cbce"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Oct 20 14:38:23 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Oct 20 14:40:49 2016 -0700"
      },
      "message": "AAPT2: Error on uncompiled XML or PNG files in link phase\n\nIncorrectly passing text XML and unprocessed PNG files to\nthe AAPT2 link phase should raise an error.\n\nTest: manual incorrect invocation of aapt2\nChange-Id: Iab47f99bc378b5d1c4f4d87098f08243b9a4dc6a\n"
    },
    {
      "commit": "cacb28f2d60858106e2819cc7d95a65e8bda890b",
      "tree": "c8ac4af72b0a9599983567029e5680c40f9883a3",
      "parents": [
        "733f0bc08ea0c93d095016a791c2914658d0cdde"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Oct 19 12:18:14 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Oct 19 12:18:14 2016 -0700"
      },
      "message": "Use Google3 style guide with .clang-format\n\nTest: style change only, builds ok\nChange-Id: I885180e24cb2e7b58cfb4967c3bcb40058ce4078\n"
    },
    {
      "commit": "77788eb4cf0c5dba0f7370192e40364fe853050a",
      "tree": "58cfdb7a8c306a564984613b25b4226a9a544bf0",
      "parents": [
        "d67b4f53d5aa35579b5fb9326e86b5a1db7c5985"
      ],
      "author": {
        "name": "Alexandria Cornwall",
        "email": "acornwall@google.com",
        "time": "Tue Sep 06 15:16:49 2016 -0700"
      },
      "committer": {
        "name": "Alexandria Cornwall",
        "email": "acornwall@google.com",
        "time": "Fri Sep 30 18:27:13 2016 -0700"
      },
      "message": "AAPT2: Add dominator tree analysis and resource removal\n\nAdded dominator tree analysis of resource configurations for each\nresource entry to allow deduping of resource entries if:\n\n1. The configuration for the resource entry\u0027s value is dominated by\na configuration with an equivalent entry value.\n\n2. All compatible configurations for the entry (those not in conflict\nand unrelated by domination with the configuration for the entry\u0027s\nvalue) have an equivalent entry value.\n\nBug: 30051199\nTest: make libaapt2_tests \u0026\u0026 libaapt2_tests\nChange-Id: I66468d3014a2d6097a94b039ac1028f9f461c7d3\n"
    },
    {
      "commit": "5eeaaddffd23d8d85aeb321e3ceea626e42cf9de",
      "tree": "dcd102c0f14825c34c2251427db84e48cb11d8a7",
      "parents": [
        "79758c8e7706f3cce265a881cc66df8771d3c456"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Aug 25 12:26:56 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Aug 31 18:32:34 2016 -0700"
      },
      "message": "AAPT2: Add Inline Complex XML support\n\nSee: https://developer.android.com/guide/topics/resources/complex-xml-resources.html\n\nChange-Id: I8274c85e25cabf90423141c228697e873167d136\n"
    },
    {
      "commit": "a7cc3f1d79eb7a02a68928381998137f2f9b10a3",
      "tree": "23b7c77188e2a7d12271565becf65f4132c7b6e6",
      "parents": [
        "58a00115d935ee44ac113ea68253e440dbd24087"
      ],
      "author": {
        "name": "Alexandria Cornwall",
        "email": "acornwall@google.com",
        "time": "Tue Aug 16 13:33:32 2016 -0700"
      },
      "committer": {
        "name": "Alexandria Cornwall",
        "email": "acornwall@google.com",
        "time": "Wed Aug 17 11:01:05 2016 -0700"
      },
      "message": "AAPT2: Add support to strip namespaces from XML\n\nThe --no-xml-namespaces flag will strip namespace information from\ncompiled binary XML files in res/* (excluding res/raw/*) and\nAndroidManifest.xml. It will also strip URI information from compiled\nbinary XML files in res/* (excluding res/raw/* and AndroidManifest.xml).\n\nAndroidManifest.xml URI information is retained due to PackageParser, which\nrequires the Android URI for intent filters.\n\nBug: 29115919\nChange-Id: I90cad6ed39ce02a69776f55314c1d4f38ad1aabe\n"
    },
    {
      "commit": "1d740812e657e92e5370b4162991a7e43ec43221",
      "tree": "e4ca2b3aad366f36a9853c63e88b8a2a1be6e000",
      "parents": [
        "feef0e80035d263df55c4c480d2551ebd1f5364f",
        "36c73a595910e96f3552f938eeb81d46356067a1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Aug 15 20:46:36 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 15 20:46:38 2016 +0000"
      },
      "message": "Merge \"AAPT2: Expose split support to command line\""
    },
    {
      "commit": "36c73a595910e96f3552f938eeb81d46356067a1",
      "tree": "69632325f13ba59c48c9951b35abc3ef6e7ceda3",
      "parents": [
        "534376f3e9e302946d6f5aae883748107d466c50"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Aug 11 13:39:24 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Aug 15 12:14:26 2016 -0700"
      },
      "message": "AAPT2: Expose split support to command line\n\nBug:30445078\nChange-Id: If4b8530dba71b9059b8e62c04757da99c1119d22\n"
    },
    {
      "commit": "9b8528fee4eed35b8e887ded0851d08eb2b10db6",
      "tree": "36df1cee89b3689454e6b09a6bfa5eabfb3214b1",
      "parents": [
        "7310353aeb771c109e5aea2c5415fa502eb13a7b"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 10 14:15:30 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Aug 11 15:16:41 2016 -0700"
      },
      "message": "Fix clang-tidy warnings in aapt and aapt2.\n\n* Add explicit keyword to conversion constructors.\n* Add NOLINT(implicit) comments for implicit conversion constructors.\nBug: 28341362\n* Use const reference type for read-only parameters.\nBug: 30407689\n* Use const reference type to avoid unnecessary copy.\nBug: 30413862\nTest: build with WITH_TIDY\u003d1\n\nChange-Id: Id6d21961f313a1ad92b15a37fdaa5be9e8ab48e1\n"
    },
    {
      "commit": "637b4820dc1858dacbf562ca65c13b4be0249e0e",
      "tree": "ffe2680955b435e78a08da1a77282769fce31041",
      "parents": [
        "5e64600d8ea7bd7d2b94c3abb6c204929c885b63"
      ],
      "author": {
        "name": "Alexandria Cornwall",
        "email": "acornwall@google.com",
        "time": "Thu Aug 11 09:53:16 2016 -0700"
      },
      "committer": {
        "name": "Alexandria Cornwall",
        "email": "acornwall@google.com",
        "time": "Thu Aug 11 09:53:16 2016 -0700"
      },
      "message": "AAPT2: Reorder link steps\n\nAAPT2\u0027s link steps were writing the res/* files before optimizations to the\nresource table were performed (such as version collapsing). This was causing\nunreferenced res/* files to remain in the archive, even though they\u0027re no\nlonger necessary.\n\nBug: 30705740\nChange-Id: I50d7943ef7429b14e46587093855c15d54038299\n"
    },
    {
      "commit": "f6762fc22a15e54d869a3e8d7f80560d0dddedf9",
      "tree": "d6e2651a3a34fe0a05af62c68f1a1c9e9f03bec3",
      "parents": [
        "ed063d46dc6eb45bcc7a751451ada600b482fd70"
      ],
      "author": {
        "name": "Alexandria Cornwall",
        "email": "acornwall@google.com",
        "time": "Tue Aug 09 12:36:46 2016 -0700"
      },
      "committer": {
        "name": "Alexandria Cornwall",
        "email": "acornwall@google.com",
        "time": "Tue Aug 09 13:23:03 2016 -0700"
      },
      "message": "AAPT2: Merge binary XML file attributes\n\nAAPT2 generates extra versions of XML binaries based on the sdkVersion\nthat attributes were introduced, up to v21. This should only happen for\nsdkVersions that are \u003e minSdkVersion, as everything else can be included\nin the main configuration (e.g. \"layout\" instead of \"layout-v4\").\n\nThis change handles the merging of XML binary sdkVersions that were created\nimplicitly.\n\nBug: 30705740\nChange-Id: I854843dd6dbaca52896cea0c24c70c900cec3e8e\n"
    },
    {
      "commit": "9756dec248458abc7f4e7c59907299bba85521b4",
      "tree": "dc301b05469e58c86fb6300a26d188daa094950f",
      "parents": [
        "c8e978208aea24b2b6d7ba7e199148ca742112da"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Aug 08 12:35:04 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Aug 08 12:41:45 2016 -0700"
      },
      "message": "AAPT2: Add default no-compress extensions\n\nChange-Id: Iff0820993059bcab59208b07601b2c6d8d953c89\n"
    },
    {
      "commit": "bf0bd0f9ac1ffa0231cff0f6591dede48b3c6d52",
      "tree": "fa0def8a1f754872ce6b912e30b7badc6470e208",
      "parents": [
        "ef556916aa75ae5e992b7c92345dc1011899a660"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jun 01 15:31:50 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jul 25 16:02:18 2016 -0700"
      },
      "message": "AAPT2: Add support to specify stable IDs\n\nThe --stable-ids flag allows the user to specify a file containing\na list of resource name and resource ID pairs in the form of:\n\npackage:type/name \u003d 0xPPTTEEEE\n\nThis assigns the given resource the specified ID. It helps ensure\nthat when adding or removing resources, IDs are assigned in a stable\nfashion.\n\nIf a package, type, or name is not found, no error or warning is\nraised.\n\nChange-Id: Ibc2f4e05cc924be255fedd862d835cb5b18d7584\n"
    },
    {
      "commit": "d0f116b619feede0cfdb647157ce5ab4d50a1c46",
      "tree": "5b2a8663602ba2b267890ff85d3cf5618ac922b5",
      "parents": [
        "aaac91f4a00a9968ef107ea143e6f2f669f762f1"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jul 08 15:00:32 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jul 13 17:45:28 2016 -0700"
      },
      "message": "AAPT2: Remove usage of u16string\n\nFor legacy reasons, we kept around the use of UTF-16 internally\nin AAPT2. We don\u0027t need this and this CL removes all instances of\nstd::u16string and StringPiece16. The only places still needed\nare when interacting with the ResTable APIs that only operate in\nUTF16.\n\nChange-Id: I492475b84bb9014fa13bf992cff447ee7a5fe588\n"
    },
    {
      "commit": "fb6312fe93a8544e6a95d1c619c8cea3940cbe1a",
      "tree": "6bf029d03d8dcfa46f0b9561a72907bde7273406",
      "parents": [
        "4c62cbda12ec606f19fbdfddebae0d72fcaa4f55"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jun 28 14:40:32 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jun 29 17:02:19 2016 -0700"
      },
      "message": "AAPT2: Add version collapsing\n\nWhen an app specifies (or imports) resources with various\nconfigurations for different SDK versions, specifying\na minSdk will make many of those resources unreachable.\n\nVersion collapsing will prune out the resources specified\nfor SDK versions less than the minSdk.\n\nIf, however, there is no exact matching resource for the\nminSdk version, the next smallest SDK version is kept.\n\nChange-Id: Ic7bcab6c59d65c97c67c8767358abb57cdec60a4\n"
    },
    {
      "commit": "1e21ff00b005110128245a4b0d13a7513a2d5e0c",
      "tree": "d346491f40cad44f33b748a46e7220964fc84e05",
      "parents": [
        "97b561449418327e86fce49102ea5cfca9fb0867"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jun 24 14:57:58 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jun 24 14:57:58 2016 -0700"
      },
      "message": "AAPT2: accept argument file list for -R\n\nBug:29462255\nChange-Id: Ia83919a3e7de7fe2056a3f7613621972cccd49cb\n"
    },
    {
      "commit": "5fcf5d4fec809c2d71767d394388587ed3133194",
      "tree": "df6a512e5c05558ac1c75c80842812292705fb08",
      "parents": [
        "6489459f676ba1da9f9c740d365424584e9fcf52",
        "e59d48398f983b822191ea3096499bdd0793840a"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Apr 28 20:05:24 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 28 20:05:24 2016 +0000"
      },
      "message": "Merge \"AAPT2: Accept a file with arguments when argument list is too long\" into nyc-dev am: 28d6c1e493 am: 461be97e30\nam: e59d48398f\n\n* commit \u0027e59d48398f983b822191ea3096499bdd0793840a\u0027:\n  AAPT2: Accept a file with arguments when argument list is too long\n\nChange-Id: Iad1d2b91109b0d1c78739c3fa3f31da5e0704f12\n"
    },
    {
      "commit": "c51562cf5acda7849a34c4ae2a88077c068859c0",
      "tree": "4f9430be9631a1ccb6042781d2d265fb396796a5",
      "parents": [
        "6e685dc3c519526a0f38ec5ee9e81e1f57e0fa36"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Apr 28 11:12:38 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Apr 28 11:14:38 2016 -0700"
      },
      "message": "AAPT2: Accept a file with arguments when argument list is too long\n\nBug:22775504\nChange-Id: Ife73d4e4611016c9ee7b56264bc6a765c54beba3\n"
    },
    {
      "commit": "e49bb30dab4c37926962e8b408045e5a45f52c40",
      "tree": "d45b8707ccb66a1819692e84225b50deafdfc722",
      "parents": [
        "e776105529ade8ee25fadda22cfb68d95de56b23"
      ],
      "author": {
        "name": "Rohit Agrawal",
        "email": "rohitagr@google.com",
        "time": "Fri Apr 22 12:27:55 2016 -0700"
      },
      "committer": {
        "name": "Rohit Agrawal",
        "email": "rohitagr@google.com",
        "time": "Fri Apr 22 14:40:40 2016 -0700"
      },
      "message": "AAPT2: ProGuard config for components in main dex.\n\nCreate an analogue of \"aapt2 --proguard\" which outputs a proguard\nconfiguration that keeps only components which need to be in the main\ndex.\n\nBug: 27383099\n\nChange-Id: I61d652bfcdfc18e1614e852bd6f7540efd15f780\n"
    },
    {
      "commit": "3524a23edb88f0e67352d55ac6a2919f1edf7b30",
      "tree": "273d57159996b7c91ce844585de2c52162ad54cf",
      "parents": [
        "c83ce39a8e22b2df75cdfcb09b032d0b2244a5ca"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 01 19:19:24 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Apr 04 12:42:05 2016 -0700"
      },
      "message": "AAPT2: Add option to add JavaDoc annotations to Java classes\n\nChange-Id: I7ee8c20cdd91380927a65c41097ffd3a6ffa2df5\n"
    },
    {
      "commit": "6cbfb1de493e42d937158ed57495c9656864ccba",
      "tree": "cfc5c985a647ba2282904b028e20409d45b43635",
      "parents": [
        "becc30196dbd6ebe68726c984a448c90fa6ef167"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 31 13:33:02 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 31 16:43:04 2016 -0700"
      },
      "message": "AAPT2: Change how we generate Java classes\n\nPreviously we would be writing out the Manifest.java file as we\nprocessed the AndroidManifest.xml. This would lead to empty\nManifest classes if there were no permissions or permission groups\ndefined in the AndroidManifest.xml.\n\nThis would pose problems for processes that checked for public classes\nand considered them part of the API (support lib).\n\nNow we collect the structure of the Java class in memory before deciding\nif a file should be created.\n\nChange-Id: I6b909f28d74356414c6ef5ad005180d6ea5e44ca\n"
    },
    {
      "commit": "330c57dbd19a064d1f5a4adb3c8ed014711b473f",
      "tree": "9a795b0dbeae55273f3f3f35d842574f51102c6d",
      "parents": [
        "607c0a0a09e6543609f70eb27cc06ff44857252e",
        "7656554f91b40bc93bf94c89afcad4a9a8ced884"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 11 09:16:43 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 11 09:16:44 2016 +0000"
      },
      "message": "Merge \"AAPT2: Add descriptions of Attributes in Styleables for R.java\" into nyc-dev"
    },
    {
      "commit": "7656554f91b40bc93bf94c89afcad4a9a8ced884",
      "tree": "76a275c869513d419dc85ee2b7f946688043e3d9",
      "parents": [
        "5b37ef489a4090da3643041c8d0e6efa282ad8b6"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 10 21:55:04 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 11 00:22:52 2016 -0800"
      },
      "message": "AAPT2: Add descriptions of Attributes in Styleables for R.java\n\nChange-Id: I69e7b73cbdfe4baf502348397435c501ae29ff5e\n"
    },
    {
      "commit": "96917c25f09bb2f33e22f20cdfa4ece8f310b084",
      "tree": "3ceb11cdc8d6dfc3dd399a01e648bda0d91dea05",
      "parents": [
        "0dda14c671e7c19841f963b0bc665da055738437"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Mar 09 13:11:25 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Mar 09 13:23:12 2016 -0800"
      },
      "message": "AAPT2: Fix file::mkdirs when given absolute paths\n\nfile::mkdirs would try to extract the first part of the\npath \u0027/path\u0027 which would be the empty string \u0027\u0027. Mkdir would\nfail creating the empty string directory.\n\nChange-Id: Ice8ba92135f145f52f3663499a2c49eebe797328\n"
    },
    {
      "commit": "626a69f34536d01db0847df0051199beaecce060",
      "tree": "96f2c6b77d3db445c6e81de7b0ac416329416c73",
      "parents": [
        "f311b01b843434151d04e75c1b50f36447031278"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 03 10:09:26 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 04 17:02:42 2016 -0800"
      },
      "message": "AAPT2: Support --no-version-vectors\n\nChange-Id: I8029b2f9e2f7ab8e37a49565f95210f47a7be609\n"
    },
    {
      "commit": "64587af8179affd38ee26543b748f2d63b7f67bb",
      "tree": "bf4eb34ea2bc5ce357e23dc6ac0572d9366f7d8e",
      "parents": [
        "bd4b217a289edca382b63f2bf5d1dd2017e9cf2e"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Feb 18 18:33:06 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Mar 04 14:39:01 2016 -0800"
      },
      "message": "AAPT2: Support building, linking, and merging static libraries\n\nAndroid static libraries are like APKs but they contain much more debugging\nand source information. We need to treat them differently in 3 ways:\n\n1) When building a static library, we skip things like ID assignment and\n   product/config stripping. Source information is emitted as well.\n2) When building a static library and linking against another\n   static library, we don\u0027t want to merge, we want to simply reference.\n3) When building an app that uses static libraries, we want to merge\n   the static library under the same package with or without mangling.\n\nBug:25958912\nChange-Id: I425e032857936a3e83173c1edc2a6cdc6020b842\n"
    },
    {
      "commit": "355f285ffd000f6cfe76680eb22d010546d124bb",
      "tree": "94d86559ba73ed2f482af1f296ef56374776a8f6",
      "parents": [
        "e4735a99598bf29847a9f12dd7fae6d7df880bc4"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Sat Feb 13 20:26:45 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Feb 17 18:17:25 2016 -0800"
      },
      "message": "AAPT2: Implement density stripping and initial Split support\n\nWhen a preferred density is supplied, the closest matching densities\nwill be selected, the rest stripped from the APK.\n\nSplit support will be enabled in a later CL. Command line support is still\nneeded, but the foundation is ready.\n\nBug:25958912\nChange-Id: I56d599806b4ec4ffa24e17aad48d47130ca05c08\n"
    },
    {
      "commit": "e4bb9eb5af5b0899dc0921d5580220b20e15bd5a",
      "tree": "d522014811735f3bdba1f916d83dc699189a14b9",
      "parents": [
        "59e04c6f92da584b322c87072f18e6cab4de4c60"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 12 22:18:51 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Feb 12 22:21:48 2016 -0800"
      },
      "message": "AAPT2: Introduce notion of \u0027product\u0027 to ResourceTable\n\nThis allows us to preserve the various product definitions during the compile\nphase, and allows us to select the product in the link phase.\n\nThis allows compiled files to remain product-independent, so that they do not need\nto be recompiled when switching targets.\n\nBug:25958912\nChange-Id: Iaa7eed25c834b67a39cdc9be43613e8b5ab6cdd7\n"
    }
  ],
  "next": "59e04c6f92da584b322c87072f18e6cab4de4c60"
}
