)]}'
{
  "log": [
    {
      "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": "7ff3ee19f4b831a526baf4b928d1ac172d070d82",
      "tree": "6b80cd676d4d9d3e98f4382090011834be106228",
      "parents": [
        "36a832dd128c18628783cc629b89b2ae399db4f8"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Dec 14 16:08:50 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Dec 17 11:01:55 2015 -0800"
      },
      "message": "AAPT2: Respect format attribute of \u003citem\u003e tag\n\nAn \u003citem\u003e is a general tag that can override certain behavior. For\ninstance, this is allowed:\n\n    \u003citem name\u003d\"foo\" type\u003d\"integer\" format\u003d\"float\"\u003e0.4\u003c/item\u003e\n\nEven though without the format attribute, this would be illegal.\n\nChange-Id: I8133ce59e14719a70d7476a1464c3f564c435289\n"
    },
    {
      "commit": "a6fe345be955368a13aea76aefb4db821aad11df",
      "tree": "c5385f798a6e1fb674f6f13c0f323726258618ca",
      "parents": [
        "01655232371d7c7ea5b58ccf66ad99917072018a"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Dec 09 15:20:52 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Dec 10 16:24:15 2015 -0800"
      },
      "message": "AAPT2: Fix overlay support\n\nSupports the \u003cadd-resource\u003e tag and mimics old AAPT behavior of\nnot allowing new resources defined unless \u003cadd-resource\u003e was used\nor --auto-add-overlay was specified.\n\nChange-Id: I9b461137357617ade37fd7045b418b8e6450b9c4\n"
    },
    {
      "commit": "28cacf091ad2b1c2749e77f590e9523e58735252",
      "tree": "6ff85383ec5688074e54fb5fcd4df6c75694b038",
      "parents": [
        "a587065721053ad54e34f484868142407d59512d"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 23 14:22:47 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 23 14:22:47 2015 -0800"
      },
      "message": "AAPT2: Record source/comments for compound values\u0027 children\n\nValues like styles or arrays have children which need to have\ntheir source and comments preserved.\n\nChange-Id: I6fc713ba36627e6d66c7930b4080cc1403bac207\n"
    },
    {
      "commit": "a587065721053ad54e34f484868142407d59512d",
      "tree": "57efbb55d03b5e68610802da8e469d5d48a29078",
      "parents": [
        "78de1bcbbdad03d893d0b1df5372732cf6d0d934"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 20 15:32:30 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 23 12:01:15 2015 -0800"
      },
      "message": "AAPT2: Verify min/max attr fields\n\nIntegers are now checked to see if they fall in the range\nof min/max for the attribute they are assigned.\n\nChange-Id: I42c435b15fd3f0bd23691c83efccce4ad5973276\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": "abf83cbe4f63cd76043aab89cd0e08525560fea2",
      "tree": "1fbe581590f001d5af1c63ae8126aad1e9ea6d77",
      "parents": [
        "cf95a580149ec03588b1c75f036c924730f83615"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 16 15:59:10 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 16 15:59:10 2015 -0800"
      },
      "message": "AAPT2: Prevent duplicate enums/flags\n\nChange-Id: I998cba12ac194000e9c778cb620ed7ab33003e7d\n"
    },
    {
      "commit": "fa10505ceaf9d4c41b76bb1b32f257926e96e441",
      "tree": "2976196a52ac3a06e16e2f36afd36092bde536ea",
      "parents": [
        "83f2255f69729e0e97539e96e5e6161843e85823"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Sat Nov 07 13:34:39 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Sat Nov 07 13:34:39 2015 -0800"
      },
      "message": "AAPT2: Accept aliases defined for external resource types\n\nResource types that are typically stored outside of the resource table\n(like layout, xml, drawable) can only have aliases (reference to another\nresource).\n\nChange-Id: Idb768801f02bb142e5be5e438904f221499bd756\n"
    },
    {
      "commit": "27afb9e8894b512b21fcca6ce142f40f1ee16cbb",
      "tree": "a3980c54d8f44831bc342738cfaff1373f223a62",
      "parents": [
        "b274e35abfbbd09e0fce983a215c11522c56cce2"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 06 18:25:04 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 06 18:25:04 2015 -0800"
      },
      "message": "AAPT2: Add support for clearer in-progress public attributes\n\nBefore, the ID assigned to a public resource without an explicitly set id\nwas more difficult to figure out. It would be the next available ID.\n\nAAPT2 introduces a new way to specify public attributes in progress.\n\n\u003cpublic-group type\u003d\"attr\" first-id\u003d\"0x0101047f\"\u003e\n  \u003cpublic name\u003d\"foo\" /\u003e\n  \u003cpublic name\u003d\"bar\" /\u003e\n  ...\n\u003c/public-group\u003e\n\nThe IDs assigned to each resource is auto-incremented starting from `first-id`.\nThis also keeps resource\u0027s with the same type grouped together so that\nthe auto-incrementing nature is evident.\n\nAlso, due to how AAPT2 was implemented, this is required :P\n\nChange-Id: I95ea92ad0405e87ed0b1766879bb2f1d9d0b636e\n"
    },
    {
      "commit": "b274e35abfbbd09e0fce983a215c11522c56cce2",
      "tree": "a30ba5aac504bbdfde8ac6931cb8471a46f6e284",
      "parents": [
        "557b64abad9915f92a9d35c748766e873f3a29fd"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 06 15:14:35 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 06 16:37:57 2015 -0800"
      },
      "message": "AAPT2: Fix inclusion of comments in R.java javadoc\n\nComments weren\u0027t being copied when merged from the various\nresource tables.\n\nAlso refactored the JavaClassGenerator to omit a class\nif no entries exist for it.\n\nChange-Id: I6eaa89b7b3715bc05403635a2baf0d1db3efd142\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": "b23f1e077b02a1d62bcf5e34655e8dc979e124fa",
      "tree": "854c4a7afe2e62e9ead4a10ce17422e3923a1502",
      "parents": [
        "2ae4a877d1623f851040ce69239552c873f1abf0"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Nov 03 12:24:17 2015 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Nov 03 12:58:12 2015 -0800"
      },
      "message": "AAPT2: Verify positional Java String format arguments in strings\n\nChange-Id: Id415969035a0d5712857c0e11e140155566a960c\n"
    },
    {
      "commit": "ca5638fd85098c3d0a699492751043545f75553a",
      "tree": "9ede79caee33fc201b2d5a2da994a77fa25a7c2c",
      "parents": [
        "030cfd3da697d51bf1bffd076881c12acedd851e"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Oct 21 14:42:43 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 30 13:51:11 2015 -0700"
      },
      "message": "AAPT2: Support generating Manifest.java\n\nThis includes comments from AndroidManifest.xml.\n\nChange-Id: I412d9ecb12bad20a49a683d6b3bea4a0be1235ae\n"
    },
    {
      "commit": "e78fd617ec60139a973a01925fa7adad31febb39",
      "tree": "b64f9590b16dfb2e6e9ea8bf2eb5d54a02230b0a",
      "parents": [
        "3b7acbb86207df78eccfeb40aabcc8543703a58f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Oct 22 12:48:43 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Oct 22 16:35:47 2015 -0700"
      },
      "message": "AAPT2: Move comments and source into Value\n\nValues are closely related to where they were defined, so\nthis information should live inside the Value.\n\nThis also enables comments to be attached to nested Values.\n\nChange-Id: Ic7481b5a5f26d0ef248d638e2e29252f88154581\n"
    },
    {
      "commit": "9e10ac70155c993e7053323ad36beaea7bf7d54f",
      "tree": "6d5ba83f2ff0e6ff0a0ac1fede1154902b3f14ab",
      "parents": [
        "5359893effd12bac156505e1ad3a77a30d27cc0a"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 16 14:37:48 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Oct 22 12:52:49 2015 -0700"
      },
      "message": "AAPT2: Process \u003cjava-symbols\u003e and private symbol package\n\nNeed to introduce the idea of multiple levels of visibility to support \u003cjava-symbol\u003e.\n\nPublic, Private, Undefined.\n\nPublic means it is accessible from outside and requires an ID assigned.\nPrivate means that we explicitly want this to be a symbol (show up in R.java), but not visible\nto other packages. No ID required.\n\nUndefined is any normal resource. When --private-symbols is specified in the link phase,\nthese resources will not show up in R.java.\n\nChange-Id: Icba89221e08e685dee7683786aa7112baf28c856\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"
    },
    {
      "commit": "dfa5e0705ff82f15e228ba076bc192893bcbe118",
      "tree": "10dbca8e4feeefc96019fcab8fa08c7943b8c97e",
      "parents": [
        "d13fb249865703901b77f48c5fed1864f06e1c63"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue May 12 21:42:59 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue May 12 21:56:43 2015 -0700"
      },
      "message": "AAPT2: Fix issue where @null was wrongly encoded\n\n@null must be encoded as TYPE_REFERENCE with a value of\n0. TYPE_NULL is used by the runtime as a placeholder when resolving\nstyle attributes. If we set a style attribute to TYPE_NULL,\nthe runtime will throw. The runtime will convert a TYPE_REFERENCE\nwith value 0 to a proper null value.\n\nChange-Id: Id983ca7e1fbee3124dddafe32f1b5741b824225b\n"
    },
    {
      "commit": "bdaa092a193d8ddccbd9ad8434be97878e6ded59",
      "tree": "04310ae0b932078409147cbfa8332d96e76555d1",
      "parents": [
        "330edcdf1316ed599fe0eb16a64330821fd92f18"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri May 08 20:16:23 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue May 12 20:41:31 2015 -0700"
      },
      "message": "AAPT2: inferred style parent processing\n\nChange-Id: I8fbc4feef16b6039cf4c526fcfb767dc75a9c131\n"
    },
    {
      "commit": "24aad163bc88cb10d2275385e9afc3de7f342d65",
      "tree": "361fc0b3fbef5f68a16f357ae9d2bed5e93efbf5",
      "parents": [
        "ab2581398c812917145088590bd18eb83f3a2ea6"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 24 19:19:30 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon May 04 16:43:24 2015 -0700"
      },
      "message": "Add namespace handling in attribute values\n\nPreviously, you could only reference namespace prefixes in attribute names:\n\n\u003cView xmlns:appcompat\u003d\"http://schemas.android.com/apk/res/android.support.v7.appcompat\"\n      appcompat:name\u003d\"hey\"\n      ...\n\nNow you can also reference them in resource names within an attribute value:\n\n      ...\n      android:text\u003d\"@appcompat:string/confirm\"\n      ...\n\nWhich will be treated as \"@android.support.v7.appcompat:string/confirm\".\n\nChange-Id: Ib076e867a990c80cf877a704eb77cd1ef0b23b52\n"
    },
    {
      "commit": "769de98f2dd41bfe39a1c9f76aefd1ad58942733",
      "tree": "3d79143b08f02dfb61158689f51e01eeb1bb371e",
      "parents": [
        "9310e4285b3fc951c3524d040726d1161015562c"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 10 19:43:55 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Apr 15 19:56:59 2015 -0700"
      },
      "message": "AAPT2: Add library support\n\nChange-Id: I307f56d9631784ab29ee4156d94886f9b2f25b30\n"
    },
    {
      "commit": "ca2fc353c2b07e24e297fdc8426c7abd601d908b",
      "tree": "2f9242af3558209ac265fb7d2d1164652f78d8de",
      "parents": [
        "7e3a19ac85d30abade971d8d0a948b4599d97c9e"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 03 12:08:26 2015 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 03 12:33:02 2015 -0700"
      },
      "message": "Fix windows build of AAPT2\n\nChange-Id: Ib8e1a4322510b582e9600a08d3118842c9abc73c\n"
    },
    {
      "commit": "6f6ceb7e1456698b1f33e04536bfb3227f9fcfcb",
      "tree": "0a1f8e354c4714f162f849b09a5d5da757c6d5b8",
      "parents": [
        "041ca26d028ae314d416cb107721ea7267af6aca"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Nov 14 14:48:12 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Apr 02 17:02:48 2015 -0700"
      },
      "message": "AAPT2\n\nFirst checking of AAPT2. The individual phases of AAPT2 work, but there\nare some missing pieces.\n\nFor early testing we are missing:\n- Need to properly mark file references and include them in package\n- Need to package into zip\n\nFinal AAPT for apps we are missing:\n- Need to crush PNGs\n- Need to parse 9-patches\n- Need to validate all of AndroidManifest.xml\n- Need to write align method to align resource tables for splits.\n\nFinal AAPT for apps + system we are missing:\n- Need to handle overlays\n- Need to store comments for R file\n- Need to handle --shared-lib (dynamic references too).\n\nNew AAPT features coming:\n- Need to import compiled libraries\n    - Name mangling\n    - R file generation for library code\n\nChange-Id: I95f8a63581b81a1f424ae6fb2c373c883b72c18d\n"
    }
  ]
}
