)]}'
{
  "log": [
    {
      "commit": "21efb6827cede06c2ab708de6cdb64d052dddcce",
      "tree": "0e2ab9e6220b5d731efcb417a490cff47b4329f7",
      "parents": [
        "b0de46ef079b8fae781b40a5a67bd7552bd81ddd"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Sep 14 17:35:43 2016 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Sep 29 15:28:52 2016 -0700"
      },
      "message": "AAPT2: Refactor PngCrunching\n\nPngCrunching now has a slightly better heuristic of choosing to encode\nan image as a palette or RGB. For small images, RGB compresses much better\nthan a palette.\n\nThe original PNG is used as-is (minus some optional chunks being stripped)\nif the resulting crunched PNG is larger than the original.\n\n9-patch handling is abstracted away from PNGs, paving the way\nfor other 9-patches, like WebP.\n\nTODO: handle PNGs with 9-patch chunks already present, which\nshould just be passed through. This will allow for 3rd party\ntools to generate 9-patches.\n\nTODO: implement cheap transparency: when one color is used to represent\ntransparent, and all other colors are opaque.\n\nBug:30053276\nChange-Id: I5167f53b91d1efa462d9f03d6b9108d9b541c0c1\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": "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": "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"
    },
    {
      "commit": "59e04c6f92da584b322c87072f18e6cab4de4c60",
      "tree": "c08dd13ae57f9b6000441035201f226d532f8896",
      "parents": [
        "41466449aae2d304cf05680f5adbf44312d7a65e"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Feb 04 15:59:23 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Feb 09 19:59:17 2016 +0000"
      },
      "message": "AAPT2: Switch to protobuf for intermediate format\n\nWithout needing to conform to the runtime data format,\nit is much easier to add new features such as debugging symbols\nand carrying over product data to link time.\n\nThis also simplifies the runtime format parser and serializer,\nwhich will change much less frequently than the protobuf intermediate\nformat.\n\nChange-Id: I209787bbf087db0a58a534cb8511c51d21133e00\n"
    },
    {
      "commit": "52364f7ae31716d7827ea8f8566f4a28bd30a921",
      "tree": "ce146fb6dc5e9f9b1166964b77273b6481f8258b",
      "parents": [
        "d901155166983adde84d9da2a6b265371191068a"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 11 13:10:24 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jan 13 18:48:24 2016 -0800"
      },
      "message": "AAPT2: Variety of small fixes to get the build working\n\n- Add option to rename package in AndroidManifest.xml\n- Support default versionName and versionCode\n- Accept True and False as valid booleans\n\nChange-Id: I400e350b9dcd0fd1c197d1929144299c7823617d\n"
    },
    {
      "commit": "979ccb2e6f3f1f7f00a448eb440a85daf033dc9e",
      "tree": "fd2e294460c4832e1a450ed333b80a545cfdfc7e",
      "parents": [
        "e5b386d2bbfa0fdf6439850191a24dfc17ee50c3"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 11 10:42:19 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 11 10:42:19 2016 -0800"
      },
      "message": "AAPT2: Warn when positional arguments exist and --legacy is on\n\nThis is normally an error, but old AAPT didn\u0027t check for it correctly,\nso many projects violate this. With --legacy, this becomes a warning.\n\nChange-Id: I23647e029930e11b719591cd38609e1b43247e20\n"
    },
    {
      "commit": "7751afc796842bbb24bfbb19bd0fee4a7b7c8a4e",
      "tree": "fad12506e9f244038a186dd8dbe31e87f6bafafe",
      "parents": [
        "198ce1a5e6fbe2cb84263e427032e9715e27379f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jan 06 15:45:28 2016 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jan 06 16:18:40 2016 -0800"
      },
      "message": "AAPT2: Fix product support\n\nPreviously the default product wasn\u0027t tried if \u0027default\u0027 wasn\u0027t specified on the command line.\nAlso adds support for multiple products.\n\nChange-Id: I1e4872b34bb8d609b6444841a4e7e4dbb3bbb76b\n"
    },
    {
      "commit": "393b5f0d6130d3848dd82075986a5cf40c09ce44",
      "tree": "5643311ac74ad383b2efa37fee2f3d21878cf6d8",
      "parents": [
        "24b8ff0faf7c59323d0171cdd825ca09e712aa1e"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Dec 17 13:03:11 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jan 06 12:05:41 2016 -0800"
      },
      "message": "AAPT2: Port AAPT pseudolocalization to AAPT2\n\nPseudolocalization happens at the compile phase. Pseudolocalized\nvalues are weak, such that manually specified values will take precedence.\n\nChange-Id: I5e064ce0d270c9f4f9022f75aecedab9d45bc980\n"
    },
    {
      "commit": "a40e972fdaa68fc486ff90a319195515819068b2",
      "tree": "38b228d8517f63faf67bcb1a6710d2533788a6d6",
      "parents": [
        "1cffc196610891f6669c33404f3ff5b0232b7059"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Nov 24 19:11:46 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 30 11:14:01 2015 -0800"
      },
      "message": "AAPT2: Support compiling a res/ directory and output to zip\n\nThis allows us to compile an entire directory and output to a single\nfile. This is important to support generated resources in the make\nbuild, since we may not know what resources get generated.\n\nThe link step will accept the zip and read the contents of it as if they\nwere passed in on the command line.\n\nChange-Id: If1a51b0abe772350c24074353eb4989953c2e0cb\n"
    },
    {
      "commit": "467f171315f9c2037fcd3eb5edcfabc40671bf7b",
      "tree": "3b14762e3d9e42a660479d0d5722883b391f835b",
      "parents": [
        "abf83cbe4f63cd76043aab89cd0e08525560fea2"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 16 17:35:44 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 19 14:46:53 2015 -0800"
      },
      "message": "AAPT2: Fail compiling when private symbols are referenced\n\nAlso moved some XML specific stuff into its own directory,\nand refactored ReferenceLinker a bit.\n\nChange-Id: I912247a82023c1bbf72dc191fbdaf62858cbec0c\n"
    },
    {
      "commit": "83f2255f69729e0e97539e96e5e6161843e85823",
      "tree": "212ce1c375059cc7f1c373ea6110c011d088d954",
      "parents": [
        "27afb9e8894b512b21fcca6ce142f40f1ee16cbb"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Sat Nov 07 11:51:23 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Sat Nov 07 11:51:23 2015 -0800"
      },
      "message": "AAPT2: Disambiguate merging of resources\n\nMerging local app resources is slightly different than merging\nresources from a static library.\n\nLocal app resources may not have a package name set, but we do take interest in the\nID set for the package (should be 0x0 or match the ID of the app we\u0027re building).\n\nStatic library resources have an explicit package name defined for them, so we\nonly merge resources from that package.\n\nChange-Id: I95e559ae94cc1df6972e77a347b1b37a93674c4d\n"
    },
    {
      "commit": "9f22204c3a9ddac4f92573c9ab098e6cf3ed1cb4",
      "tree": "7146efe6062b17d4a5fb63230ac3e8d64b1f2e17",
      "parents": [
        "08322c2152131979a846d399ca6b9bebdbdc0355"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Nov 04 13:51:45 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 05 10:56:32 2015 -0800"
      },
      "message": "AAPT2: Fix small issue with detecting translatable resources\n\nChange-Id: Idd21b5de4d20be06c6f8c8eb5a22ccd68afc4927\n"
    },
    {
      "commit": "9ba47d813075fcb05c5e1532c137c93b394631cb",
      "tree": "1eb9f7adc315ab8ad640249f8ac1888951520f3f",
      "parents": [
        "072c5bdff77e354bdf333c0c1d460cdd1c2e76ae"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Oct 13 11:37:10 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 16 15:50:58 2015 -0700"
      },
      "message": "Filter products during compile phase\n\nUnfortunately there is no good way to deal with products in the link phase.\nProducts are like preprocessor defines in that they are processed early\nand change the composition of the compiled unit.\n\nChange-Id: I6d5e15ef60d29df8e83e059ba857c09333993779\n"
    },
    {
      "commit": "1ab598f46c3ff520a67f9d80194847741f3467ab",
      "tree": "4846790211599fdd7a9bb35ec94df4a6ec4839d6",
      "parents": [
        "547c346bb34878b691fd53e54aa3a88efcc5dc6f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Aug 14 14:26:04 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 16 12:13:08 2015 -0700"
      },
      "message": "AAPT2: Separate out the various steps\n\nAn early refactor. Some ideas became clearer as\ndevelopment continued. Now the various phases are much\nclearer and more easily reusable.\n\nAlso added a ton of tests!\n\nChange-Id: Ic8f0a70c8222370352e63533b329c40457c0903e\n"
    }
  ]
}
