)]}'
{
  "log": [
    {
      "commit": "ea4e5ecc27793b5c1dd2eda291f752b3f900ee6c",
      "tree": "efdd249d1298cdcdd9d35b668660c25e14fa00c4",
      "parents": [
        "4df65bf1eb454814954421403da9f8b5fcb82180"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Dec 10 15:46:51 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Dec 10 15:55:27 2014 -0800"
      },
      "message": "AAPT: attributes showing up after v21 attributes would be removed for pre-21 devices\n\nThere was an inconsistency in the indexing when removing attributes\nin layouts. Now we account for that shift that happens when you delete\nan attribute.\n\nBug:18707321\nChange-Id: I656eee3fb614168fa8ceeff379e8594708961dad\n"
    },
    {
      "commit": "9b624c186cb6059dfb3ec24bfb6386a0fc17b88c",
      "tree": "e57516e076eddb75d4c657704522f43067153c2a",
      "parents": [
        "92ad4dd017a13364b4001bdb04911202932f81c2"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Nov 19 17:49:26 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Dec 03 15:59:20 2014 -0800"
      },
      "message": "AAPT: Move private attrs to new type for framework\n\nPrivate attributes are typically placed after public\nattributes in the resource table. Each time a new version\nof the Android framework is released, new public attributes\ntake the place of the private attributes, and the private\nattributes are shifted after the new public ones.\n\nThis means that any apps built against the newer SDK\nmay inadvertently be using private attributes on older\ndevices.\n\nThis change moves all private attributes to a completely\ndifferent type ID, so there will never be collisions across\nversions.\n\nThese private attributes are automatically moved to a synthesized\ntype only for the system resources.\n\nBug:18263655\n\nChange-Id: I7a850512953fadcc9f3524d509cea30249782db8\n"
    },
    {
      "commit": "dcdfe9fef4b07ee53d312c3fbecc74cb215ace6f",
      "tree": "1e689ea612de5ab03f10144b4103fae511b564e8",
      "parents": [
        "d12b69518daabff3c13482f4b5140020b747b71f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 06 12:54:36 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Nov 06 14:57:34 2014 -0800"
      },
      "message": "split-select: Fix rules generated for anydpi density\n\nChange-Id: I9de569ca9a76eb22df4d0e178df847ba1c7d0b01\n"
    },
    {
      "commit": "de7de47fef1dcaa26d553665d89e4d3792325c3f",
      "tree": "0d9551d2f037b841f325bbbd3ba27a309e9441b3",
      "parents": [
        "f7ffcaa7a478eaafc121e84b14dcaf2503dd5457"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 03 12:03:08 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 03 15:55:44 2014 -0800"
      },
      "message": "Add error checking to aapt for split generation\n\nChange-Id: Ica627db6a671f6a6c35f98bfd9c03598ffe103ce\n"
    },
    {
      "commit": "4bf58108d442b37ab4adf5ce3a4ecd63472ce254",
      "tree": "2b6359ad85861bf339e6a45813c599ab683fc7c3",
      "parents": [
        "e8d9810cdef5b3e288f54f42adc3205532343406"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 03 11:21:19 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Nov 03 11:49:47 2014 -0800"
      },
      "message": "Fix issues that will be present in C++11\n\n- char16_t is a distinct type, so stay consistent\n  with it throughout the code base.\n- char16_t is defined as minimum size of 16 bits.\n  Since we mmap and cast data structures onto raw memory,\n  we need a precise definition (uint16_t), so we cast between\n  that (and static_assert that they are the same size).\n\nChange-Id: I869c32637543bbcfb39d2643e7d9df10d33acd3c\n"
    },
    {
      "commit": "aff7c2447df1ddfe094628317b6d22121cd657f8",
      "tree": "02f11ac125243065e21563e262bcabec3e3b1055",
      "parents": [
        "00831836cdeeb4a61ba10c724c3ca33280937b62"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Oct 20 12:15:25 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Oct 20 12:15:25 2014 -0700"
      },
      "message": "AAPT: Fix path for final generated resources on Windows\n\nChange-Id: Id11ac79b281b51747c73f90406ebd60023c54f92\n"
    },
    {
      "commit": "f15de2e2151ae48338afd27f3ebd33fce5009103",
      "tree": "f0fc010bafa6673fbb17e2f4a9ca90eef07863f1",
      "parents": [
        "b591da942e159588c70687dfe3e792feedc8f3b4"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 03 14:57:28 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 03 14:57:28 2014 -0700"
      },
      "message": "AAPT: Gate v21 resource synthesizing logging behind -v flag\n\nThis is verbose information and should be hidden behind the -v flag.\n\nBug:17822471\nChange-Id: I36e2c6beb54669a31cde73416427477a80ded8a6\n"
    },
    {
      "commit": "978ab9d92934b79409638cf220de3002fea8d505",
      "tree": "9352e4099e7c627436ac9e3a8d7e9094e6987f69",
      "parents": [
        "7e1d525b47404a27fb1c780ea2070f7ca8344461"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Sep 24 19:02:52 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Sep 24 19:02:52 2014 -0700"
      },
      "message": "AAPT: Fix issue with synthesized resource not actually showing up\n\nAAPT keeps around a few pieces of state that are disjoint, so\nsimply adding to a collection won\u0027t add the resource to the final\nflattened output. Instead, we create the resource from the top\nand then copy over the values into the newly created resource.\n\nBug:17647890\nChange-Id: I214263e84c18f9370c6e6a5aa53aa2d833fc842d\n"
    },
    {
      "commit": "e572c011feabf6319ba836cf5bc4c3baa0ba6a85",
      "tree": "14a4e5461bbdcec4fb348663b8144efb28a796e4",
      "parents": [
        "82a2dd8efe48d3a4e04655f01329da857ace4b7d"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Sep 19 15:10:04 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Sep 22 10:51:20 2014 -0700"
      },
      "message": "AAPT: Continuation of public/private attribute fix\n\nXML files like layouts are now scanned and checked\nfor v21 attributes. If those kinds of attributes\nare found, then we remove them in the original\nversion and synthesize a new xml file under the\nv21 configuration.\n\nBug:17520380\nChange-Id: Icf984cb96134180a2e35349c1dbf2cef9a8f0bda\n"
    },
    {
      "commit": "82a2dd8efe48d3a4e04655f01329da857ace4b7d",
      "tree": "9c5ec064aeba43cf4b27fd4bb36e31f0bf425f35",
      "parents": [
        "49c0e7375b237bc6eff8746ae91466ea6a660233"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Sep 17 18:34:15 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Sep 18 14:05:24 2014 -0700"
      },
      "message": "Fix backwards compat problem with AAPT public attrs\n\nAAPT has traditionally assigned resource IDs to public attributes,\nand then followed those public definitions with private attributes.\n\n--- PUBLIC ---\n| 0x01010234 | attr/color\n| 0x01010235 | attr/background\n\n--- PRIVATE ---\n| 0x01010236 | attr/secret\n| 0x01010237 | attr/shhh\n\nEach release, when attributes are added, they take the place of the private\nattributes and the private attributes are shifted down again.\n\n--- PUBLIC ---\n| 0x01010234 | attr/color\n| 0x01010235 | attr/background\n| 0x01010236 | attr/shinyNewAttr\n| 0x01010237 | attr/highlyValuedFeature\n\n--- PRIVATE ---\n| 0x01010238 | attr/secret\n| 0x01010239 | attr/shhh\n\nPlatform code may look for private attributes set in a theme. If an app\ncompiled against a newer version of the platform uses a new public\nattribute that happens to have the same ID as the private attribute\nthe older platform is expecting, then the behavior is undefined.\n\nWe get around this by detecting any newly defined attributes (in L),\ncopy the resource into a -v21 qualified resource, and delete the\nattribute from the original resource. This ensures that older platforms\ndon\u0027t see the new attribute, but when running on L+ platforms, the\nattribute will be respected.\n\nWe still need to address this problem in the platform moving forward,\nas this will only help us in the transition from pre L to L.\n\nBug:17520380\nChange-Id: Ia2a985798b50006c21c7c3431d30d9598f27cd91\n"
    },
    {
      "commit": "3fb8c9b50ef1873454acf3a4e7fd33ad182c03d7",
      "tree": "dec5449bab1566ca938ba1a3d81f39c064a36458",
      "parents": [
        "97e75e1da97f01e82c0105b1f915821a99dda196"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Sep 09 16:05:10 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Sep 09 16:05:10 2014 -0700"
      },
      "message": "AAPT: Don\u0027t crash on illegal symbol name\n\nWe never checked the return value when adding a nested\nsymbol, which would be NULL if the symbol name was invalid.\n\nExternal bug: https://code.google.com/p/android/issues/detail?id\u003d75876\n\nChange-Id: I5211f4d4b87897d52f2b6e5907113d31930bb92d\n"
    },
    {
      "commit": "27f69f4e06961fdecd1078b2292d764a157e5e1c",
      "tree": "24a4336bc223fd6380ba4fe0113d86edcee33a23",
      "parents": [
        "759f780af0b838316556de69049fb892f7b11ed5"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Aug 21 13:19:12 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Aug 21 13:59:46 2014 -0700"
      },
      "message": "AAPT: mipmaps should not end up in Splits\n\nMipmaps are never filtered, and so they will always\nend up in the base APK. Make sure they get omitted from\nany split.\n\nChange-Id: Id24b082bc9bd2d3f031a58bd0de4d30b4f0de7e0\n"
    },
    {
      "commit": "6022debdbcc4498736580640c6287b57872617a2",
      "tree": "17fa702311166e6f78ad07af3e767ca672817135",
      "parents": [
        "e02f340d9a0c4f841376c3db8ec93f65e7e58417"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Aug 20 14:59:19 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Aug 20 17:55:33 2014 -0700"
      },
      "message": "AAPT: Fix regression generating dynamic ref table for shared libraries\n\nAAPT stopped generating dynamic reference tables for shared libraries.\n\nChange-Id: Ib0025811bdca1a4756eb21080dd6b6bb3fc1ca3d\n"
    },
    {
      "commit": "43a0df04b0826ffb9e4589aac73b07b0c98abe8c",
      "tree": "118d79fa190f8a6f622e1490403ec25681a875e9",
      "parents": [
        "611f8f17f333f7702cd8c60e2f4908ae306a02db"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Aug 18 17:14:57 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Aug 19 03:46:00 2014 +0000"
      },
      "message": "Allow enum generated IDs to reuse existing IDs\n\nChange-Id: Ida5dbbce1c4ecb0a4e57511555cec6448737be25\n"
    },
    {
      "commit": "833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1",
      "tree": "a57e8389088178108de1424faf41ea3bb87c934a",
      "parents": [
        "5c09e8ad5ee8e67976066366527ee58792551953"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jun 18 15:06:01 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Aug 04 18:48:14 2014 -0700"
      },
      "message": "AAPT support for feature splits\n\nThis change allows the developer to add a base package for\nwhich to build a feature split. The generated resource types\nwill begin after the base APK\u0027s defined types so as not\nto collide or override resources.\n\nMultiple features can be generated by first choosing an\narbitrary order for the features. Then for each feature,\nthe base APK and any preceding features are specified\nwith the --feature-of flags.\n\nSo with a base APK \u0027A\u0027 and features, \u0027B\u0027, and \u0027C\u0027,\n\u0027B\u0027 would be built with\n\naapt package [...] --feature-of A [...]\n\nand \u0027C\u0027 would be built with\n\naapt package [...] --feature-of A --feature-of B [...]\n\nChange-Id: I1be66e3f8df9a737b21c71f8a93685376c7e6780\n"
    },
    {
      "commit": "57079519f4610715e4c0668c641575d10f3d4461",
      "tree": "aeecc2293b5d0de29a512c288ac2add5c940bf7c",
      "parents": [
        "e9ac817e834ce9c41a9bfed73e6cf1cf5ccf01c7"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jul 29 11:51:35 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jul 30 18:46:51 2014 +0000"
      },
      "message": "Fix large memory corruption in AAPT\n\nWhen assigning a new string pool to a package, don\u0027t release the\nreference to the old memory immediately, as the cleanup code that\nis called after references the old memory.\n\nBug: 16155257\nChange-Id: I3eaeb81191b71a282a0ef82856023f09707f1b17\n"
    },
    {
      "commit": "f90f2f8dc36e7243b85e0b6a7fd5a590893c827e",
      "tree": "b2fb1fc49961c7c5f5c1712872ce2ffcfe550a89",
      "parents": [
        "c802c8cda234129c1ce3c7a939bd68a1d5813ce6"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Jun 06 14:27:00 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jun 18 19:20:08 2014 +0000"
      },
      "message": "Support multiple resource tables with same package\n\nIn order to support APK split features, the resource\ntable needs to support loading multiple resource\ntables with the same package but potentially new set\nof type IDs.\n\nThis adds some complexity as the type ID space changes\nfrom dense and ordered to potentially sparse.\n\nA ByteBucketArray is used to store the type IDs in\na memory efficient way that allows for fast retrieval.\n\nIn addition, the IDMAP format has changed. We no longer\nneed random access to the type data, since we store the\ntypes differently. However, random access to entries of\na given type is still required.\n\nChange-Id: If6f5be680b405b368941d9c1f2b5d2ddca964160\n"
    },
    {
      "commit": "f0009776203b4e5b705f575990d3fa466a10a1b3",
      "tree": "adce2f25011a4201e57d85b8a82faa3a483247a4",
      "parents": [
        "1cb088c1281deec042bdf00e0f2d227f7e5cd718",
        "fab50875b98e8274ac8ee44b38ba42521bbbf1f9"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon May 12 18:12:34 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon May 12 18:12:35 2014 +0000"
      },
      "message": "Merge \"Add support for building split APKs\""
    },
    {
      "commit": "fab50875b98e8274ac8ee44b38ba42521bbbf1f9",
      "tree": "984277e1fadd3d5156bb6b05b21a1c23252b3a1b",
      "parents": [
        "57df4fd69e96c901ac0a027aa913f3f9086fbbf6"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Apr 16 14:40:42 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Sun May 11 18:30:12 2014 -0700"
      },
      "message": "Add support for building split APKs\n\nBuild multiple APKs, each containing a disjoint subset\nof configurations. These can then be loaded into the device\nAssetManager and should operate as if they were never split.\n\nUse the idea of building multiple sets of files, where each\nset represents an APK. An ApkBuilder can place files\nin a set based on its configuration, but you can actually\nadd directly to a set, in the case of the resources.arsc and\ngenerated AndroidManifest.xml for splits.\n\nChange-Id: Ic65d3f0ac1bbd290185695b9971d425c85ab1de3\n"
    },
    {
      "commit": "f3e7945c79557cfd4d667caeacf69ee197508535",
      "tree": "b6563edea58fd7f3219976ebc8b1f908c4c1aa22",
      "parents": [
        "ccd3a6a519030989c18371c1d58d6d3632de78ee",
        "867680342e12af59a26756f30cf817a131724943"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 06 02:34:40 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue May 06 02:34:40 2014 +0000"
      },
      "message": "am 86768034: am b593ad60: am f1f28d1d: Merge \"Skip resource files for locales en-XA and ar-XB during packaging if pseudolocalization was done automatically. This prevents attemts to add same resource twice.\"\n\n* commit \u0027867680342e12af59a26756f30cf817a131724943\u0027:\n  Skip resource files for locales en-XA and ar-XB during packaging if pseudolocalization was done automatically. This prevents attemts to add same resource twice.\n"
    },
    {
      "commit": "47843df11fe88b30abcac324173b6c15f16cc797",
      "tree": "228316dd281263a087e6b60b071db711f5003004",
      "parents": [
        "83a538e40ed8bdcda64c4bb5a448c0357b8e5e73"
      ],
      "author": {
        "name": "Igor Viarheichyk",
        "email": "viarheichyk@google.com",
        "time": "Thu May 01 17:04:39 2014 -0700"
      },
      "committer": {
        "name": "Igor Viarheichyk",
        "email": "viarheichyk@google.com",
        "time": "Mon May 05 18:13:41 2014 -0700"
      },
      "message": "Skip resource files for locales en-XA and ar-XB\nduring packaging if pseudolocalization was done automatically.\nThis prevents attemts to add same resource twice.\n\nChange-Id: I51e17f961ac44047bf466ce4aa0d4d17f4ded0d6\n"
    },
    {
      "commit": "8c2fff23853d78c19a94d034dbf21fc2718ead9a",
      "tree": "28ce995652ad196e67719836e6f6636ec321ac77",
      "parents": [
        "5e2901ba1c88c922a86d91915a00c4fa08f805ff",
        "fd955f14d6c87dffd1a20c36ad8001705495f831"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 30 23:35:39 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 30 23:35:39 2014 +0000"
      },
      "message": "am fd955f14: am 6a6979ad: am 86315c45: Merge \"Fixes issue causing pseudolocalization of strings in non-translatable resource files.\"\n\n* commit \u0027fd955f14d6c87dffd1a20c36ad8001705495f831\u0027:\n  Fixes issue causing pseudolocalization of strings in non-translatable resource files.\n"
    },
    {
      "commit": "84410b054c7db0b6685a0f15cb2d1ffcb264f6c9",
      "tree": "e75b6010cd7a2eb70025fe4db1c2b90b798b13ee",
      "parents": [
        "56cd8dbfbdeebc36ccbd5b2beedaaaa3f13c8b07"
      ],
      "author": {
        "name": "Igor Viarheichyk",
        "email": "viarheichyk@google.com",
        "time": "Wed Apr 30 11:56:42 2014 -0700"
      },
      "committer": {
        "name": "Igor Viarheichyk",
        "email": "viarheichyk@google.com",
        "time": "Wed Apr 30 11:56:42 2014 -0700"
      },
      "message": "Fixes issue causing pseudolocalization of strings\nin non-translatable resource files.\n\nChange-Id: Ic8e5effc86226d5be00561ac71bab7695ef90376\n"
    },
    {
      "commit": "4b0ee78bfa0df6e278c7327822fd9a0eff52b584",
      "tree": "536b4b814feb42123a516c3eda279470f70bbcd3",
      "parents": [
        "5b5def547201b213bc2325400371c37d1612732e",
        "56ca82191231f3aba1132e3db06e7e09a10ec6dc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 18 16:07:41 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 18 16:07:41 2014 -0700"
      },
      "message": "resolved conflicts for merge of 56ca8219 to master\n\nChange-Id: I62f5804a5c4404eedce09188cda2e3b1bb990b36\n"
    },
    {
      "commit": "a2ef5c0d4fb863c0382e77ae00f986a019b11cbe",
      "tree": "d6c10bedf5d762e0fc0bd10b38f381ccefefa248",
      "parents": [
        "ecdf9b199ac9659c37c34c0b23084199acea80bf"
      ],
      "author": {
        "name": "Anton Krumin",
        "email": "antkrumin@google.com",
        "time": "Wed Mar 12 14:46:44 2014 -0700"
      },
      "committer": {
        "name": "Anton Krumin",
        "email": "antkrumin@google.com",
        "time": "Wed Apr 09 16:59:48 2014 -0700"
      },
      "message": "Pseudolocalizer improvements.\n\nFixes accented pseudolocalization and adds RTL pseudolocale.\n\nThis change contains following modifications in the pseudolocalization logic:\n1) zz_ZZ pseudolocale was removed;\n2) en_XA pseudolocale was added for pseudo-accented;\n3) ar_XB pseudolocale was added for pseudo-rtl;\n4) Pseudo RTL localization functionality was implemented;\n5) Text expansion functionality was implemented;\n6) Text bracketing was implemented;\n7) Couple of issues of previous implementation were fixed.\n\nChange-Id: I9f7f27bed717e39e82717d15c398decffc8bec3c\nSigned-off-by: Anton Krumin \u003cantkrumin@google.com\u003e\n"
    },
    {
      "commit": "de898ff42912bd7ca1bfb099cd439562496765a4",
      "tree": "849b591a99a7e6a8fd790aedca3afff6f6b6eade",
      "parents": [
        "05f79758cd2688f89444a38baba326a0a1c1a438"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jan 29 18:20:45 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Mar 25 12:09:56 2014 -0700"
      },
      "message": "Shared library resource support\n\nShared libraries can now export resources for applications\nto use.\n\nExporting resources works the same way the framework exports\nresources, by defining the public symbols in res/values/public.xml.\n\nBuilding a shared library requires aapt to be invoked with the\n--shared-lib option. Shared libraries will be assigned a package\nID of 0x00 at build-time. At runtime, all loaded shared libraries\nwill be assigned a new package ID.\n\nCurrently, shared libraries should not import other shared libraries,\nas those dependencies will not be loaded at runtime.\n\nAt runtime, reflection is used to update the package ID of resource\nsymbols in the shared library\u0027s R class file. The package name of\nthe R class file is assumed to be the same as the shared library\u0027s\npackage name declared in its manifest. This will be customizable in\na future commit.\n\nSee /tests/SharedLibrary/ for examples of a shared library and its\nclient.\n\nBug:12724178\nChange-Id: I60c0cb8ab87849f8f8a1a13431562fe8603020a7\n"
    },
    {
      "commit": "e119b22146c602dac1e8bdfdb325b6c83fc66d66",
      "tree": "d318c4a106673041cf3b47733a8dea78463aaad5",
      "parents": [
        "88517170cbb09b45324d5b457a0e5e840cc7d09b"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 20 18:04:57 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Mar 24 10:50:34 2014 -0700"
      },
      "message": "Reduce warning verbosity in aapt\n\n- Attributed source of problems to the correct file.\n- Only verify string localizations against valid\n  locales.\nBug:13140015\nChange-Id: I9dabc5efa0510649caee8af0c8ebb803d6f48269\n"
    },
    {
      "commit": "a01a9374fd386f3a8773528d7a49bc5315492dff",
      "tree": "30857703034ba4ae65c917cac6a17c4a15c347c3",
      "parents": [
        "40436a20c666c99287379838e737cc69ee10fd10"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 20 18:04:57 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Mar 20 18:14:48 2014 -0700"
      },
      "message": "Reduce warning verbosity in aapt\n\n- Attributed source of problems to the correct file.\n- Only verify string localizations against valid\n  locales.\nBug:13140015\nChange-Id: I9dabc5efa0510649caee8af0c8ebb803d6f48269\n"
    },
    {
      "commit": "788fa41482b9d398591b7db8b0b01839029611ad",
      "tree": "ab94d4040351d79cca717a8b7e21fc6be5d0fcb5",
      "parents": [
        "48620f1d1b03e1cb4e0dce4999e0a4c2daf3a1b2"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jan 21 15:32:36 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Feb 14 14:08:57 2014 +0000"
      },
      "message": "Extended locales in AAPT / AssetManager.\n\nSupport 3 letter language codes, script codes \u0026\nvariants. The bulk of the changes are related to\nthe implementation of command line filtering of\nlocales etc. The previous code assumed that the\nvalue of each \"axis\" (locale, density, size etc.)\ncould be represented by a 4 byte type. This is\nno longer the case.\n\nThis change introduces a new class, AaptLocaleValue\nwhich holds a (normalized) locale parsed from a\ndirectory name or a filter string. This class takes\nresponsibility for parsing locales as well as\nwriting them to ResTable_config structures, which is\ntheir representation in the resource table.\n\nThis includes minor changes at the java / JNI level\nfor AssetManager. We now call locale.toLanguageTag()\nto give the native layer a well formed BCP-47 tag.\nI\u0027ve removed some duplicated parsing code in\nAssetManager.cpp and replaced them with functions on\nResTable_config. The native getLocales function has\nbeen changed to return well formed BCP-47 locales as\nwell, so that the corresponding java function can use\nLocale.forLanguageTag to construct a Locale object\nout of it.\n\nFinally, this change introduces default and copy\nconstructors for ResTable_config to prevent having\nto memset() the associated memory to 0 on every\nstack allocation.\n\n(cherry-picked from commit 91447d88f2bdf9c2bf8d1a53570efef6172fba74)\n\nChange-Id: I1b43086860661012f949fb8e5deb7df44519b854\n"
    },
    {
      "commit": "91447d88f2bdf9c2bf8d1a53570efef6172fba74",
      "tree": "dc46e96130696c26e8fd3883227314ef5c0b7ad1",
      "parents": [
        "378c6775a62d9c461cde51f06c1b14bb014c78fd"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jan 21 15:32:36 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Feb 10 15:50:16 2014 +0000"
      },
      "message": "Extended locales in AAPT / AssetManager.\n\nSupport 3 letter language codes, script codes \u0026\nvariants. The bulk of the changes are related to\nthe implementation of command line filtering of\nlocales etc. The previous code assumed that the\nvalue of each \"axis\" (locale, density, size etc.)\ncould be represented by a 4 byte type. This is\nno longer the case.\n\nThis change introduces a new class, AaptLocaleValue\nwhich holds a (normalized) locale parsed from a\ndirectory name or a filter string. This class takes\nresponsibility for parsing locales as well as\nwriting them to ResTable_config structures, which is\ntheir representation in the resource table.\n\nThis includes minor changes at the java / JNI level\nfor AssetManager. We now call locale.toLanguageTag()\nto give the native layer a well formed BCP-47 tag.\nI\u0027ve removed some duplicated parsing code in\nAssetManager.cpp and replaced them with functions on\nResTable_config. The native getLocales function has\nbeen changed to return well formed BCP-47 locales as\nwell, so that the corresponding java function can use\nLocale.forLanguageTag to construct a Locale object\nout of it.\n\nFinally, this change introduces default and copy\nconstructors for ResTable_config to prevent having\nto memset() the associated memory to 0 on every\nstack allocation.\n\nChange-Id: I899a56a9a182ee6be52b9389d1ae59266f5482e9\n"
    },
    {
      "commit": "9a9fa163c384e7fff159d339dfcce3b3122bece5",
      "tree": "29943710651270e47dbea26c4a96fd750e2454e5",
      "parents": [
        "9636071bdc29df0ed5d801d0499bdb76abade1db"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Dec 18 13:27:30 2013 +0000"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 27 10:31:10 2014 -0800"
      },
      "message": "Don\u0027t pseudolocalize untranslatable strings.\n\nbug: https://code.google.com/p/android/issues/detail?id\u003d63004\n\n(cherry picked from commit 7e1b8ff3e15b35b92978e572ccbfbc47cedce242)\n\nChange-Id: I99ba1a915ae8fc61f70ce570b782108171d0fcaa\n"
    },
    {
      "commit": "cd28bd37ea2d88dd72930f032ca73daaad5744b4",
      "tree": "3fda41d9360e2d127b47cbe31ebd176c8a900588",
      "parents": [
        "24dffd0b0beb58d900bf232448596064f3c7d483"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Thu Nov 14 17:12:10 2013 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 27 10:31:09 2014 -0800"
      },
      "message": "Add new aapt flag --error-on-missing-config-entry\n\nIt forces aapt to return an error if aapt fails to find an resource\nentry for a configuration.\n\nBug: 11259444\nChange-Id: Ie5674a29dff5d4455e7d7c94f6b25560fb1305b7\n"
    },
    {
      "commit": "8ff15b4cada7998e78c93934ab2c869c322d7e07",
      "tree": "98c5c7e41ca513b9dd115675a5559e4d80946df7",
      "parents": [
        "492d16434acaaf050f676b6767fbf020fd6ff772"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Oct 07 16:54:01 2013 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 27 10:31:07 2014 -0800"
      },
      "message": "AAPT emits error for res with no \u0027default\u0027 product\n\nRather than ignoring resources that do not match the specified\nproduct, we keep track of the ignored ones and make sure that\nsome variant of the resource that matches the product was processed.\n\nbug:10860838\nChange-Id: I7a35f37fda2c9561634f75323bd4cb2b9047e29b\n"
    },
    {
      "commit": "282e181b58cf72b6ca770dc7ca5f91f135444502",
      "tree": "e313e7ab30ff4679562efa37bde29cfcb9e375d3",
      "parents": [
        "7023df08f14ec5dee76ac54c03e870f84e297636"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jan 23 18:17:42 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 27 10:31:04 2014 -0800"
      },
      "message": "Revert \"Move frameworks/base/tools/ to frameworks/tools/\"\n\nThis reverts commit 9f6a119c8aa276432ece4fe2118bd8a3c9b1067e.\n"
    },
    {
      "commit": "7e1b8ff3e15b35b92978e572ccbfbc47cedce242",
      "tree": "4393ea93637c97d20808c49f197e5ead561a645a",
      "parents": [
        "6e2d0c1d91f644ab50e0c0b7cae4306262a4ca41"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Dec 10 09:49:59 2013 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Dec 10 13:37:32 2013 +0000"
      },
      "message": "Don\u0027t pseudolocalize untranslatable strings.\n\nbug: https://code.google.com/p/android/issues/detail?id\u003d63004\nChange-Id: I8e47a53d887144dc867111e42313d0e113b83ea1\n"
    },
    {
      "commit": "2b8e82fd51fca815675e7cb32c35da3932f0dc13",
      "tree": "80ffefd2ff99d2f3d129c7682b014d468a56c7dd",
      "parents": [
        "fc141ef20bf871e925fbbbe4bb9af64c67033246"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 04 12:06:38 2013 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Oct 04 15:14:09 2013 -0700"
      },
      "message": "AAPT emits error for res with no \u0027default\u0027 product\n\nRather than ignoring resources that do not match the specified\nproduct, we keep track of the ignored ones and make sure that\nsome variant of the resource that matches the product was processed.\n\nbug:10860838\nChange-Id: I804cd04a053269a35b7e1c1cc743b77493337bf9\n"
    },
    {
      "commit": "9f6a119c8aa276432ece4fe2118bd8a3c9b1067e",
      "tree": "1391656f9ad624aa99d4c7d2880d38121801a424",
      "parents": [
        "647b6f5ed276bf93d95e5801e5e8af2802ef5fbb"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Wed Aug 28 09:44:17 2013 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Wed Aug 28 09:44:17 2013 -0700"
      },
      "message": "Move frameworks/base/tools/ to frameworks/tools/\n\nChange-Id: I3ffafdab27cc4aca256c3a5806b630795b75d5c8\n"
    },
    {
      "commit": "d8dde13a63565dcd72bcf03a5088407b737ba793",
      "tree": "671cd9a2e230b1f960e673e8c2c1bbd3b535d9cc",
      "parents": [
        "aeb6268645d571dfc9f2d387a7ad2471039ddb54"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Nov 16 15:58:08 2012 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Nov 27 18:28:49 2012 -0800"
      },
      "message": "Cache resource ID lookups in aapt\n\nThis speeds up certain workloads considerably, particularly\nthose involved in buildling apps via the SDK.  Windows-based\nuse should particularly benefit from the change.\n\nChange-Id: I29f4b3a77400b201ee219729cc28a5e359c0c5e8\n"
    },
    {
      "commit": "5f7979993979466c79ab4f38d83c6f2aca361662",
      "tree": "90c8b098b3c9a53a90c039641b0b7ba379d6b4eb",
      "parents": [
        "5e8e41e41aecd2a4951659a1f3507f3371e0cc47"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Fri Jun 15 20:16:41 2012 -0700"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Thu Aug 23 14:55:33 2012 -0700"
      },
      "message": "Add support for \"-rtl\" in resources\n\n- fix bug #7035019 Need to have \"-rtl\" support for Resource\n\nChange-Id: Ic82145c2ac672729d8a6c695a5f343276a1a0a2c\n"
    },
    {
      "commit": "3e2d59146df9e9e325dcc65018bb130b03242bbc",
      "tree": "54d3d73e5d71d8ae0e83bfd6516cb6befd7ece97",
      "parents": [
        "39b58ba2b299e1c97e13535aae9add530d942c7b",
        "13c04786ceec6aebe898bca7c62853af2e4e7c09"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue May 01 10:00:22 2012 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue May 01 10:02:02 2012 -0700"
      },
      "message": "resolved conflicts for merge of 13c04786 to jb-dev-plus-aosp\n\nChange-Id: Ib7aa5a768f4606beb2a4387811cfed7c00cbc111\n"
    },
    {
      "commit": "39b58ba2b299e1c97e13535aae9add530d942c7b",
      "tree": "94247b9025407767a527abeded5c8cfebfabe1cb",
      "parents": [
        "a43d2589b1ce657d8af7702cd7b3e3114e7ae133",
        "bc2fb7b92e013779356c16685a388d5cdae6e93d"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue May 01 09:53:48 2012 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue May 01 09:54:38 2012 -0700"
      },
      "message": "resolved conflicts for merge of bc2fb7b9 to jb-dev-plus-aosp\n\nChange-Id: I5386585e473201268c6ed8b05e0a16569d434ea2\n"
    },
    {
      "commit": "345b7eb8749d6954942fd4e961fff9f2f854934c",
      "tree": "9357978bf60889db44adb838760e261265a5d839",
      "parents": [
        "8a9cfcc85260eadcc2c17c4a8911c6d93b642f39"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 16 15:25:17 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 16 15:25:17 2012 -0700"
      },
      "message": "Remove dead code in StringPool.\n\nThe sorted string pool option was no longer used.\nNeither were strings with associated identifiers.\n\nChange-Id: Ic5f6368637fbeedfda873d63f4ad0f3ea9d0d603\n"
    },
    {
      "commit": "59eb5fd509c98a371b8824f6b13cf29981a4f063",
      "tree": "c40de115ed24179aa4dbabd93f8634f8167d8efc",
      "parents": [
        "5eb37241fee7e656cf9787bf00a160e94b4894fc"
      ],
      "author": {
        "name": "Ben Gruver",
        "email": "bgruv@google.com",
        "time": "Tue Mar 06 19:26:22 2012 -0800"
      },
      "committer": {
        "name": "Ben Gruver",
        "email": "bgruv@google.com",
        "time": "Wed Mar 07 10:49:55 2012 -0800"
      },
      "message": "Fix up getAttributeFlags() function\n\nIn addition to a couple of minor clean-up items, this fixes an issue that can\nrarely cause incorrect parsing of attribute flag values, when there is a \u0027|\u0027\ncharacter in the few bytes past the end of the attribute value being parsed.\n\nChange-Id: I6050b1c2db60720c7c0ab7df9eba8cfc629b320e\n"
    },
    {
      "commit": "b13b9bdad2baf6ad1ec2e56b6b7598fa20f55fc4",
      "tree": "2b90dc39a35d8081ea47b038893624b69a01202d",
      "parents": [
        "6db0608dff408130b35e6f21abe746a635648b18"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 17 18:27:36 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 17 19:01:26 2012 -0800"
      },
      "message": "frameworks/base refactoring.\n\nstep 2: move libutils headers to their new home: androidfw\n\nChange-Id: I14624ba23db92a81f2cb929f104386e1fab293ef\n"
    },
    {
      "commit": "249e3ed5400e5c7ab2e9aa8017f612d79d2e8089",
      "tree": "117adb62a967a24a5739f88d95add6ac29f1fc98",
      "parents": [
        "c761d8b0086f9e92eb1e4b3a5683ae6afb84036a"
      ],
      "author": {
        "name": "Mårten Kongstad",
        "email": "marten.kongstad@sonyericsson.com",
        "time": "Wed Feb 08 10:22:47 2012 +0100"
      },
      "committer": {
        "name": "Zoran Jovanovic",
        "email": "zoran.jovanovic@sonyericsson.com",
        "time": "Thu Feb 16 16:43:07 2012 +0100"
      },
      "message": "Runtime resource overlay: clean-up.\n\nThis is a combination of three minor clean-up tasks:\n\n- Generate correct idmap even if name lookup fails:\n\n  Any resources following a resource with a spec but no actual values\n  would receive an incorrect ID in the idmap due to an accumulating offset\n  error. To combat this, a dummy value is inserted in the idmap whenever\n  a resource with a spec but no values is encountered.\n\n- Optimize pruning of padding zeroes in idmaps:\n\n  Earlier, trailing zeroes were iteratively popped from the end of each\n  type block of an idmap. This commit instead tracks where to make the\n  cut, and does so with a single function call.\n\n- aapt: warn about resources which lack values:\n\n  The resource framework assumes every resource to have a value for\n  at least one valid configuration. However, if multiple resource\n  directories are used (several -S options to aapt), the list of\n  configurations is limited by dpi (-c option to aapt) and a resource\n  is only available in discarded dpi configurations, aapt will create\n  a resource entry where each configuration lack an actual value. This\n  commit lets aapt emit a warning whenever this has happened.\n\nChange-Id: Ic7451b7f4adfef5bfa6b0d7e64e057f317a2cdaa\n"
    },
    {
      "commit": "1644c6d7f4931d0b4fe7ea77c63b016af01a46d3",
      "tree": "794f3b2ccf8ce784b043b74e03fe970b811bc455",
      "parents": [
        "e7171effdf9ef0700782520187c0a292b0a74759"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Feb 06 15:33:21 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 07 12:57:50 2012 -0800"
      },
      "message": "Only generate private symbols that are needed.\n\nChange-Id: Icc4c86638db8429a387bf87c934cc712f807e213\n"
    },
    {
      "commit": "c761d8b0086f9e92eb1e4b3a5683ae6afb84036a",
      "tree": "dfbb0ead537b70a58fc991c236a109cbca0ea685",
      "parents": [
        "a081c7b8bc5a3ea19fc7562b333fac525b17bc5f"
      ],
      "author": {
        "name": "Mårten Kongstad",
        "email": "marten.kongstad@sonyericsson.com",
        "time": "Tue Feb 07 19:12:45 2012 +0100"
      },
      "committer": {
        "name": "Zoran Jovanovic",
        "email": "zoran.jovanovic@sonyericsson.com",
        "time": "Tue Feb 07 19:14:28 2012 +0100"
      },
      "message": "Build overlay packages just like regular packages.\n\nPreviously, building overlay packages required passing aapt its -o flag.\nThis commit decouples the idmap generation code from the effects of the\n-o flag.\n\nSince this commit renders the -o flag obsolete, support for the flag was\nremoved from aapt as well.\n\nChange-Id: Ied2e0ab8cb800e49623f0a2044b06cd4935473d5\n"
    },
    {
      "commit": "6c997a9e880e08c354ffd809bd62df9e25e9c4d4",
      "tree": "593504e8a7d67bf57e0799daff1e8eb9e4797857",
      "parents": [
        "2247e3f0dc00762b44ef6adcbb2a91c8bbc1be58"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jan 31 11:27:43 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jan 31 15:41:30 2012 -0800"
      },
      "message": "aapt now sorts the strings in the resource string pool.\n\nIn our current environment with very many translations, this can\nsave a lot of RAM -- for example over 200K in Gmail just by sorting\nthe strings in the Gmail .apk (not the framework).\n\nAlso add a new aapt command to print the contents of the resource\ntable string pool.\n\nChange-Id: I1da037b3e2c377b890833ff57ab158965314ac48\n"
    },
    {
      "commit": "e6b680364dd992907a8d2037685a2e500d188dfb",
      "tree": "3d931a3139f058da9ae934e5cf50cd6dc50f7e64",
      "parents": [
        "d814d4fa0c76a0384f7e32816e1ca36f237911c6"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Oct 13 16:26:02 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Oct 16 11:52:17 2011 -0700"
      },
      "message": "New aapt feature to do smarter filtering of configurations.\n\nThis adds a --preferred-configurations flag that specifies the\nspecific configurations you would like to have.\n\nIt is smarter than \"-c\" because it will avoid stripping a\nconfiguration if that would result in there being no value\nfor the resource.\n\nIt is dumber than \"-c\" because it can\u0027t process as many kinds\nof resources.  It is really only intended for bitmaps and use\nwith density configs.\n\nThis required re-arranging AaptAssets to group files together\nby config again, like they used to be.  I think this hasn\u0027t\nbroken anything.  Hopefully.\n\nChange-Id: I4e9d12ff6e6dbd1abb8fd4cb1814c6674b19d0e5\n"
    },
    {
      "commit": "914f7e683a01f15f8830810c49eaecc31bc554a6",
      "tree": "702278393601f3f27b0ec0213246c8ea3bf70d09",
      "parents": [
        "006e6ef2e6349f5b3f9ef27c81750f007f56c69a"
      ],
      "author": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Tue Sep 27 16:09:41 2011 -0700"
      },
      "committer": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Tue Sep 27 16:09:41 2011 -0700"
      },
      "message": "Don\u0027t lose product variant strings that also vary between locales.\n\nLocalized strings with product variants were not being included in the APK,\napparently because the check to ensure that a different variation of the\nstring had not already been included in the APK was matching the version\nof it from the default, untranslated configuration.\n\nNow check to make sure that the string not only exists but also exists in\nthe correct configuration.\n\nBug 5372711\n\nChange-Id: I52975570b75e0f11827dc6bcf1cb4a987d0541aa\n"
    },
    {
      "commit": "f14dff1219d2a87340dccad657f666f5451d8c6e",
      "tree": "32b39d7d93170aed01c11e7353afc53a2b306cb4",
      "parents": [
        "9980043e930f877c4cd066de2b3d57dce4fc926e",
        "c6adfed6dcea8482e482db58bd396ea8de08426a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 10 07:45:38 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 10 07:45:38 2011 -0700"
      },
      "message": "am c6adfed6: am f795e9a8: Okay *now* really enforce the limit on non-public styles.\n\n* commit \u0027c6adfed6dcea8482e482db58bd396ea8de08426a\u0027:\n  Okay *now* really enforce the limit on non-public styles.\n"
    },
    {
      "commit": "9980043e930f877c4cd066de2b3d57dce4fc926e",
      "tree": "75a6babdf701437e03d87c98e02f6ffb706ba8ff",
      "parents": [
        "f51ded0f8f593d17af82946eb65c05fc04f688b4",
        "820caf7b04f1e5c83599437e9e783e91322eb4f9"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 09 16:18:07 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 09 16:18:07 2011 -0700"
      },
      "message": "am 820caf7b: am 8821ba86: Ummm...  f*, stop breaking the build.\n\n* commit \u0027820caf7b04f1e5c83599437e9e783e91322eb4f9\u0027:\n  Ummm...  f*, stop breaking the build.\n"
    },
    {
      "commit": "f795e9a86d4f62e5314ef95978c3ea17d90975db",
      "tree": "6823d69078ce14eb0aeffd2fd774cea163a52263",
      "parents": [
        "8821ba860693f5206c56ae727a4231e4d6f0a735"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 09 16:17:53 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 09 16:17:53 2011 -0700"
      },
      "message": "Okay *now* really enforce the limit on non-public styles.\n\nChange-Id: Ie8df6acf7cc3dec00f615b2fa9a5122ec79a0aae\n"
    },
    {
      "commit": "8821ba860693f5206c56ae727a4231e4d6f0a735",
      "tree": "e9184a6f581738ecd6ffc406b73fda17d3625309",
      "parents": [
        "220cd77de62956eb76c5084e1d1341d69bfd214a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 09 11:29:08 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 09 16:09:15 2011 -0700"
      },
      "message": "Ummm...  f*, stop breaking the build.\n\nChange-Id: I6a42cb60e7cebda6d17222e6af1f327889323c40\n"
    },
    {
      "commit": "f51ded0f8f593d17af82946eb65c05fc04f688b4",
      "tree": "32b39d7d93170aed01c11e7353afc53a2b306cb4",
      "parents": [
        "5a8455c3c625201f3ae6b9ce32913bf97ba61cc8",
        "a8d7ea067cf22baeee2ff0a33e5a8c5a35936942"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 09 16:06:07 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 09 16:06:07 2011 -0700"
      },
      "message": "am a8d7ea06: am 220cd77d: Merge \"Enforce public resource restriction on bag parents.\" into honeycomb-mr2\n\n* commit \u0027a8d7ea067cf22baeee2ff0a33e5a8c5a35936942\u0027:\n  Enforce public resource restriction on bag parents.\n"
    },
    {
      "commit": "426431adcc220b6adfbe1d9530247f897e60fa36",
      "tree": "e9dd34ae5151de5bf9f57edb3055d0d228e1f006",
      "parents": [
        "1d3173c3dc93bb4f2efc5b059fec8e7577b3258a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 09 11:29:08 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 09 15:27:39 2011 -0700"
      },
      "message": "Enforce public resource restriction on bag parents.\n\nNeed to put some more styles in the SDK to avoid breaking apps.\n\nAlso, welcome Android 3.2.\n\nChange-Id: Ia31d07c9b1b91ad868d8630437fdc1b5ae24f37d\n"
    },
    {
      "commit": "06a8ceacb0dc2713cb0bb2c93d2a750f2a58db68",
      "tree": "14cda7bbbdc5e6cabb492d7af1977a2f5548062b",
      "parents": [
        "90177e59e5211dd9ab33761ce800e8a86a49d1e2",
        "c851ea5672f6e042c2e89b2a2ce4a2467e1fcd2a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 19 19:34:21 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 19 19:34:21 2011 -0700"
      },
      "message": "am c851ea56: am 69cb8757: Add new \"-swNNNdp\" resource qualifier.\n\n* commit \u0027c851ea5672f6e042c2e89b2a2ce4a2467e1fcd2a\u0027:\n  Add new \"-swNNNdp\" resource qualifier.\n"
    },
    {
      "commit": "69cb87576ba163b61bb0e6477a3b7c57a9b11d40",
      "tree": "a44be0af3d008409403be133358bdcd628741c01",
      "parents": [
        "b9537db8d9ee27efb4a98415ad2d6b50c1806e5d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 19 18:13:32 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 19 18:23:29 2011 -0700"
      },
      "message": "Add new \"-swNNNdp\" resource qualifier.\n\nChange-Id: I0101e88ca9d8d44138bdcaf571f24b0352f4f6ce\n"
    },
    {
      "commit": "2e4a3236a7634d17f89288e9739a438ecbea0471",
      "tree": "45e1c4c61f4eb9775572d94a55dd91b071b84916",
      "parents": [
        "15f8a6a726658bfb195924bd5d7bb86684a22de0",
        "46a282f323bc05606e4fe1eba795bd9ac7c99819"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 13 11:21:26 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 13 11:21:26 2011 -0700"
      },
      "message": "am 46a282f3: am 0ed2e845: Merge \"DO NOT MERGE.  Integrate add new screen width/height in \"dp\" configs.\" into honeycomb-mr2\n\n* commit \u002746a282f323bc05606e4fe1eba795bd9ac7c99819\u0027:\n  DO NOT MERGE.  Integrate add new screen width/height in \"dp\" configs.\n"
    },
    {
      "commit": "ebff8f92f13513ce37bd74759eb1db63f2220590",
      "tree": "909da02ab7ff47483e227f032828dbdbe7f959af",
      "parents": [
        "a8138732a01b92f0a40f72050b74a3bd4cf6d215"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 12 18:07:47 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 12 18:39:51 2011 -0700"
      },
      "message": "DO NOT MERGE.  Integrate add new screen width/height in \"dp\" configs.\n\nYou can now specify resource configuration variants \"wNNNdp\"\nand \"hNNNdp\".  These are the minimum screen width/height in \"dp\"\nunits.  This allows you to do things like have your app adjust\nits layout based only on the about of horizontal space available.\n\nThis introduces a new configuration change flag for screen size.\nNote that this configuration change happens each time the orientation\nchanges.  Applications often say they handle the orientation change\nto avoid being restarted at a screen rotation, and this will now\ncause them to be restarted.  To address this, we assume the app can\nhandle this new config change if its target SDK version is \u003c ICS.\n\nChange-Id: I4acb73d82677b74092c1da9e4046a4951921f9f4\n"
    },
    {
      "commit": "18490fb93e206fd899c3258096cc32f293373c92",
      "tree": "e45db3abacf59a0cba4604cde390c310e38e4153",
      "parents": [
        "0b9b8711a1a2107dc913cc751b7d981fce4f3082",
        "87b3c0dcc45223ff9d5ab2e39d7b9a6953e03f50"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Apr 12 10:27:15 2011 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Apr 12 10:27:15 2011 -0700"
      },
      "message": "resolved conflicts for merge of 87b3c0dc to honeycomb-plus-aosp\n\nChange-Id: Ia1a0024aabf531438203eb9fea3a10dd15eabe53\n"
    },
    {
      "commit": "57f4b77c89bafedf9468f9a636561c0c193405c9",
      "tree": "9e73065411411858c9c6ae350c5ee8ffe14598c3",
      "parents": [
        "c6b22e2727bd3730edd5ad72831a9bb4670d00f3"
      ],
      "author": {
        "name": "Mårten Kongstad",
        "email": "marten.kongstad@sonyericsson.com",
        "time": "Thu Mar 17 14:13:41 2011 +0100"
      },
      "committer": {
        "name": "Kenneth Andersson",
        "email": "kenneth.andersson@sonyericsson.com",
        "time": "Fri Apr 01 14:12:10 2011 +0200"
      },
      "message": "Runtime resource overlay, iteration 1.\n\nRuntime resource overlay allows unmodified applications to appear\nas if they had been compiled with additional resources defined. See\nlibs/utils/README for more information.\n\nThis commit is the first iteration of runtime resource overlay. It\nprovides the actual overlay modifications and loading of trusted overlay\npackages (ie residing in /vendor) targeting framework-res.apk.\n\nThis commit loads exactly one overlay package. The overlay,\nif present, must target framework-res.apk and be located at\n/vendor/overlay/framework/framework-res.apk.\n\nChange-Id: If26ee7754813004a96c043dba37fbe99fa3919db\n"
    },
    {
      "commit": "02feeb4b2bb6515491cf3dd7ae2b204caac81bae",
      "tree": "a9da1ef9057f38d262425ba2a8b83164c25d156b",
      "parents": [
        "9d97b63d0e0c7c9deb2d140c1dd579b51f52c1af"
      ],
      "author": {
        "name": "Josh Stone",
        "email": "cuviper@gmail.com",
        "time": "Mon Jan 17 18:34:11 2011 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Jan 23 16:00:36 2011 -0800"
      },
      "message": "aapt: Allow raw \"%\" in unformatted string-arrays\n\nCommit 15fe2cb added format checking for translatable strings, enforcing\nthe use of positional args.  This check can be disabled on \u003cstring\u003e\nvalues with translatable\u003d\"false\" or formatted\u003d\"false\".  But they didn\u0027t\ncheck for those attributes on \u003cstring-array\u003e, so some of CM\u0027s strings\nfail when they\u0027re not really format strings, just because they contain\npercent signs.  (e.g. brightness widget\u0027s \"Auto/Dim/40%/100%\")\n\nSo now the formatted/translatable attributes are checked in string-array\ntoo, and we can restore our proper percent signs.\n\nChange-Id: I3478ab7e0b939e61fe0cec20201ac55096264080\n"
    },
    {
      "commit": "bf50322a245c430f3b3a1e7ecc299fe0a939daec",
      "tree": "ca114f9d2be8f42e406f404fbcc2eea25c57e16c",
      "parents": [
        "35f4d32dc2f0c383323e780ecc7e2764704c5d2c"
      ],
      "author": {
        "name": "Josh Stone",
        "email": "cuviper@gmail.com",
        "time": "Mon Jan 17 18:34:11 2011 -0800"
      },
      "committer": {
        "name": "Josh Stone",
        "email": "cuviper@gmail.com",
        "time": "Sat Jan 22 21:13:12 2011 -0800"
      },
      "message": "aapt: Allow raw \"%\" in unformatted string-arrays\n\nCommit 15fe2cb added format checking for translatable strings, enforcing\nthe use of positional args.  This check can be disabled on \u003cstring\u003e\nvalues with translatable\u003d\"false\" or formatted\u003d\"false\".  But they didn\u0027t\ncheck for those attributes on \u003cstring-array\u003e, so some of CM\u0027s strings\nfail when they\u0027re not really format strings, just because they contain\npercent signs.  (e.g. brightness widget\u0027s \"Auto/Dim/40%/100%\")\n\nSo now the formatted/translatable attributes are checked in string-array\ntoo, and we can restore our proper percent signs.\n\nChange-Id: I3478ab7e0b939e61fe0cec20201ac55096264080\n"
    },
    {
      "commit": "7c71023b7f5aafac09bd2f0425fccb5fe2d22b27",
      "tree": "a3c86b0da5f22866d64c8d5ff61b6e0689a8453c",
      "parents": [
        "83d97c8c7ddff9374f876bef48758414a7775cb1"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Nov 22 22:28:37 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Nov 22 22:28:44 2010 -0800"
      },
      "message": "Add knowledge of mipmap to aapt\n\nNew mipmap drawable type that does not get filtered according to\nconfiguration. Useful for things that get built as part of the system.\n\nChange-Id: I556033d065e504079271dce79c23c90d3c387ce4\n"
    },
    {
      "commit": "82849afd719037968ddcb58e14cec8685f702216",
      "tree": "a16549c00299cb9ed039a2d1428c0b5561b378f1",
      "parents": [
        "a9570ab0439e7a734ef4ffc65e55dbf7f433d270",
        "3442611ee11b2987c83054fe3c7ed5521f27f052"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sat Nov 06 16:25:03 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Nov 06 16:25:03 2010 -0700"
      },
      "message": "am 3442611e: am 5580e44c: Merge \"Support changing style parent in overlays\"\n\n* commit \u00273442611ee11b2987c83054fe3c7ed5521f27f052\u0027:\n  Support changing style parent in overlays\n"
    },
    {
      "commit": "3442611ee11b2987c83054fe3c7ed5521f27f052",
      "tree": "ff4a2db0081d7c404b0c5a1bdc4ac28768272405",
      "parents": [
        "8806fc729b96bf806806ef8d82147d59abfc1536",
        "5580e44c250944f5cd011b2682eea5cc2de9706c"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Nov 05 14:05:41 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 05 14:05:41 2010 -0700"
      },
      "message": "am 5580e44c: Merge \"Support changing style parent in overlays\"\n\n* commit \u00275580e44c250944f5cd011b2682eea5cc2de9706c\u0027:\n  Support changing style parent in overlays\n"
    },
    {
      "commit": "58520b24d40bb2587f394a52535dab4f2736bab1",
      "tree": "09b3f3ed6d4c68f0084df07a8b880884d109e071",
      "parents": [
        "5e9f64ce24b3381ee48f9e12242aba5216f136a4",
        "10d5b0966d1b6ab0e3b63c71d5325403e75b647e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Oct 04 14:54:59 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Oct 04 14:54:59 2010 -0700"
      },
      "message": "resolved conflicts for merge of 10d5b096 to master\n\nChange-Id: Id5c6ba651f72b48f0d70ee2ca64a6c9adf5e74f7\n"
    },
    {
      "commit": "407f625a9b8e356e765a5ec587c443af1f3aadb5",
      "tree": "f2cb0a3b75327c8ffee2e1d0f351d35431305f24",
      "parents": [
        "eb6e22f29ded58e7e51702c34878fd01e20ff802"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Oct 04 11:31:17 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Oct 04 13:58:56 2010 -0700"
      },
      "message": "Add new API to find out whether external storage is removable.\n\nThis is implemented based on whether we are using the \"nosdcard\"\nproduct.  Needed to tweak aapt to allow use of the product attribute\nwith other resource definition tags besides strings.\n\nChange-Id: I49922d23b52a34183a8e2f4d2515adaf1fc9149a\n"
    },
    {
      "commit": "6f27ab8bd4aca5a43f6bf93cd68c43dde825bfa1",
      "tree": "40eaf1634c582ef040e5157fc2bbf73ac16b9106",
      "parents": [
        "7eb805707fc512f1711fbf00eb5eec2472a0bae1",
        "9c70835896b6c078ac4c8b2e30cb6cfba70bb9d7"
      ],
      "author": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Thu Sep 23 13:52:00 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 23 13:52:00 2010 -0700"
      },
      "message": "am 9c708358: am 37cedce1: Merge \"Add an aapt option to allow string variations for different devices.\" into gingerbread\n\nMerge commit \u00279c70835896b6c078ac4c8b2e30cb6cfba70bb9d7\u0027\n\n* commit \u00279c70835896b6c078ac4c8b2e30cb6cfba70bb9d7\u0027:\n  Add an aapt option to allow string variations for different devices.\n"
    },
    {
      "commit": "90964040cabfc67f92a7c3322a02401bb6f8ae82",
      "tree": "52f1ce1de971a071026a12e145837e015e60d26a",
      "parents": [
        "89647b1172cdf40a3681922150122b0bd2ea83f1"
      ],
      "author": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Wed Sep 15 15:59:21 2010 -0700"
      },
      "committer": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Thu Sep 23 10:32:47 2010 -0700"
      },
      "message": "Add an aapt option to allow string variations for different devices.\n\nThe --product option to aapt is a comma-separated list of characteristics\nof the device being built for.  For example, --product nosdcard,grayscale\nfor a device with no SD card and a grayscale screen.\n\nStrings can specify a product\u003d\"characteristic\" option to cause that version\nof the string to be used only for that type of device.  All such strings\nshould also specify, at the end of the block, product\u003d\"default\", which\nwill be used if none of the variations match.  For example:\n\n\u003cstring name\u003d\"choose\" product\u003d\"bw\"\u003eChoose black or white\u003c/string\u003e\n\u003cstring name\u003d\"choose\" product\u003d\"grayscale\"\u003eChoose a shade of gray\u003c/string\u003e\n\u003cstring name\u003d\"choose\" product\u003d\"default\"\u003eChoose a color\u003c/string\u003e\n\nThe default characteristic will also be used when no --product option\nis specified.\n\nChange-Id: Ie6c1505599e02e15b7818e8be6ec47bc6ce71aaa\n"
    },
    {
      "commit": "2fda9f45623e888f71c6ea769305ccc4d9e76af2",
      "tree": "6350705338ec0eacd6f6d74653cca73cde772609",
      "parents": [
        "c708e38356e9c381b640ef96db3b0b0fdd41d433"
      ],
      "author": {
        "name": "Martin Nordholts",
        "email": "martin.nordholts@sonyericsson.com",
        "time": "Wed Jun 02 15:42:28 2010 +0200"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonyericsson.com",
        "time": "Tue Aug 17 13:18:59 2010 +0200"
      },
      "message": "Support changing style parent in overlays\n\nPackage overlays makes it possible for vendors to tweak the look of\nthe platform and the applications without touching any platform or\napplication code directly. This makes package overlays an important\nmechanism in the Android build system.\n\nThere is currently a limitation that forbids changing the parent of a\nstyle. If vendors could change the parent of e.g. ‘CalendarTheme’\nfrom Android’s vanilla ‘Theme’ to ‘VendorTheme’, then vendor\nspecific adjustments could be done without changing any code directly.\n\nFrom looking at the code it can be seen that the parent value of a\nstyle is stored temporarily in ResourceTable::Entry::mParent while\noverlays are gone through in buildResources(), and processed (in\nResourceTable::Entry::assignResourceIds()) at first after all overlays\nhave been handled, so there aren’t any obvious reasons why changing\nparent in an overlay should be forbidden.\n\nChange-Id: I5969bb8aab90df437e1967fc504cc0da79107d13\n"
    },
    {
      "commit": "f1ff21ac62a51f5ba8ca0821ea8a90f70957e25d",
      "tree": "93b20482d80f3008a887e0c89eaa9a7cd3ad61ca",
      "parents": [
        "b5c49c8bb1e830ba934c7fbceec9409b89ead4a9"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Mon Jun 14 17:34:04 2010 +0100"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jun 25 11:02:15 2010 +0100"
      },
      "message": "Fixes a few minor problems with AAPT\n\n- Fixes casting problems with stricter compilers\n- Adds a couple of missing ifdef guards\n\nThis is a first step toward being able to generate APKs on the fly on the device.\n\nBug: 2766918\nChange-Id: Icaaee5a4032afa313256add321b447443861dd85\n"
    },
    {
      "commit": "15fe2cb73b0770316db302f6502f568062d68e74",
      "tree": "9764af2f6feb0083e768779fc933de1b7f98f352",
      "parents": [
        "a9f06fef8e2fff0c909132073203de5bd2461795"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri May 28 15:44:32 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Jun 03 09:33:43 2010 -0700"
      },
      "message": "Add error checking for translatable strings\n\nTranslatable strings that have multiple substitutions should use\npositional String.format() substitutions. This change makes it an error\nnot to use that format on translatable strings that have more than one\nsubstitution in its text.\n\nChange-Id: I3a19707f3804aa24e8568dc1653a11576cac5916\n"
    },
    {
      "commit": "c9f3088036dd7cce6903e307afea3e289a334036",
      "tree": "e443791605a84703e7530e51f5b1ab97809da6b3",
      "parents": [
        "f60ce402dd1ff5fe402c606c41dafe1294b1f0ff"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Mar 24 11:55:16 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Mar 24 12:05:24 2010 -0700"
      },
      "message": "Use correct API version for UTF-8 checking\n\nUse the constant for checking the API version in aapt instead of a bare\nnumber.\n\nBug: 2541326\nChange-Id: Ice7af7b393363a00f1832dd84753b8138d057fb4\n"
    },
    {
      "commit": "1741cd4904414b5b4e768953a8f1abb3f0ef0a0a",
      "tree": "e58d120464d0e466c672a71818cdcb3aa2019bfb",
      "parents": [
        "2fbc10f3559b85f6550dd34b8779e9ee94e4c73c"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Mar 18 12:12:11 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Mar 18 12:12:11 2010 -0700"
      },
      "message": "Fix minSdkVersion scanning to not throw warnings\n\nFor the UTF8/UTF16 switch code, we needed to know what was the\nminSdkVersion specified as early as possible. Unfortunately, this threw\nwarnings when the SDK was compiling since we always set this field in\nthe Bundle.\n\nThis splits out the field used by the initial AndroidManifest.xml scan\nto a separate one that we won\u0027t attempt to re-insert into the\nAndroidManifest.xml  This also switches the logic to better reflect the\npreference of UTF-8 over UTF-16; previously UTF-16 was the default.\n\nChange-Id: Ia81f6b21047043ebb711eb24c2c3718534979ef6\n"
    },
    {
      "commit": "774562275fa76681933a0105ed61c672892b23bd",
      "tree": "63f8d23f18ce2eea22637feb63c6c340273bd6ab",
      "parents": [
        "a8fbe1fb74d3bd40b73c90c85ac25e5176475ca5"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Mar 10 11:38:05 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Mar 10 11:38:05 2010 -0800"
      },
      "message": "Revert \"Dedupe resource config pointers\"\n\nThis reverts commit 7b467d8b44c00d14590c021928b6a9ad5a36348e.\n"
    },
    {
      "commit": "7b467d8b44c00d14590c021928b6a9ad5a36348e",
      "tree": "35a46a47d27f92d94e0bb7c4ecfc1ab2bd90a928",
      "parents": [
        "4aaf256e95de9d09936b37a6c44e1200e751324e"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Mar 09 16:55:23 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Mar 09 20:56:41 2010 -0800"
      },
      "message": "Dedupe resource config pointers\n\nWhen there are two configs in a StringPool that would match a string ID\nonly keep the more generic entry to save some space. This means that if\nyou have both \"es\" and \"es_US\" translations that have the same\ntranslation, the string entry would be removed from the \"es_US\" config.\n\nChange-Id: I4d619942d35ddb477e2eabe4437b7f02697c24de\n"
    },
    {
      "commit": "cf244ada58539ce857ec041d7288d0271204fbb6",
      "tree": "ec16084d19a3b0c0e43e11dd276fbe7c6a6813c5",
      "parents": [
        "ae58f6d7473c67d76b6c6373794fd1a77543ddb4"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 09 15:00:30 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 09 17:18:05 2010 -0800"
      },
      "message": "Add ability for some manifest attributes to reference resources.\n\nThis loosens our restriction on many manifest attributes requiring\nliteral string values, to allow various ones to use values from\nresources.  This is only allowed if the resource value does not change\nfrom configuration changes, and the restriction is still in place\nfor attributes that are core to security (requesting permissions) or\nmarket operation (used libraries and features etc).\n\nChange-Id: I4da02f6a5196cb6a7dbcff9ac25403904c42c2c8\n"
    },
    {
      "commit": "65e185b51ec655518f1917418cd6192400ac439d",
      "tree": "12b22850dbc7af459aeffe3a7abc23f17290ee1a",
      "parents": [
        "f25269398e970f7c072893f71fdebe62afff785b"
      ],
      "author": {
        "name": "Ed Heyl",
        "email": "edheyl@google.com",
        "time": "Fri Mar 05 11:08:58 2010 -0800"
      },
      "committer": {
        "name": "Ed Heyl",
        "email": "edheyl@google.com",
        "time": "Fri Mar 05 11:24:35 2010 -0800"
      },
      "message": "Change an aapt \"warning\" from \"*** \" to \"**** \" (from three to four stars).\n\"*** \" (three stars and a space) is the \u0027magic make error string\u0027; so this change makes it\neasier to find the real issues/errors in build logs.  Besides, other aapt messages are \"**** \".\n"
    },
    {
      "commit": "f5a7c121dd3abb9763c30115c772fd1fc03caea2",
      "tree": "88aae80771f637c88a969e9a9efc910653f1ff4f",
      "parents": [
        "c948cc8c8a8a9a751d8252e390e5975d1a763d34"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Feb 18 09:43:08 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Feb 18 09:44:35 2010 -0800"
      },
      "message": "Change buf size holding integer in ResourceTable\n\nA 32-bit integer can be 10 characters long plus a byte for \\0 at the\nend.\n\nChange-Id: I58040fe6e1674e78bcc6e07463ff36fb26e280f4\n"
    },
    {
      "commit": "27b28b3f62bd3b54fa13acd5d035940b9be464f3",
      "tree": "d1f44096f7071bbc53e5bc979117be8e0f4aa55c",
      "parents": [
        "d5663a108760de672b130ffabd4f6632982f75e5"
      ],
      "author": {
        "name": "Tobias Haamel",
        "email": "haamel@google.com",
        "time": "Tue Feb 09 23:09:17 2010 +0100"
      },
      "committer": {
        "name": "Tobias Haamel",
        "email": "haamel@google.com",
        "time": "Thu Feb 11 21:25:58 2010 +0100"
      },
      "message": "Introduce special UI modes for night and car usage.\n\nThe device mode is now called ui mode. Furthermore is the order of\nprecedence for the resources now in such a way that the ui mode needs\nto be specified after the orientation and before the density.\n\nThe ui mode can be set, like it is done for the locale, as follows:\n\nIActivityManager am \u003d ActivityManagerNative.getDefault();\nConfiguration config \u003d am.getConfiguration();\nconfig.uiMode \u003d Configuration.UI_MODE_TYPE_CAR | Configuration.UI_MODE_NIGHT_ANY;\nam.updateConfiguration(config);\n\nTo allow users to disable the car mode and set the night mode the IUiModeManager\ninterface is used.\n\nThe automatic night mode switching will be added in a separate change.\n"
    },
    {
      "commit": "99080c7d9ad9e5ccfec70dd10e4c24468a960c45",
      "tree": "5ebcc1e38b01a53bb07617bd1b151d1c8fa5f1b5",
      "parents": [
        "732ebb1bc3d7760fd424b84e0235ea9946100102"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Feb 04 18:45:31 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Feb 04 18:53:14 2010 -0800"
      },
      "message": "Add --auto-add-overlay option to aapt.\n\nThis option allows resources only present in overlays to be\nadded automatically instead of being declared through \u003cadd-resource\u003e\n\nChange-Id: Iff782311056f6a045193e57d204f7d3413e11b26\n"
    },
    {
      "commit": "19138468caf7050d482dc15f35a344eab11bb756",
      "tree": "ea1f96c5bcab356355ab05d315abfa66a7f888c4",
      "parents": [
        "6be01bf207077ffbdcd3879250171a26ec805835"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Dec 04 09:38:48 2009 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Dec 07 15:14:15 2009 -0800"
      },
      "message": "Optional use of UTF-8 strings in resource bundles\n\nAllows the use of UTF-8 for packing resources instead of the\ndefault of UTF-16 for Java. When strings are extracted from the\nResStringPool, they are converted to UTF-16 and the result is\ncached for subsequent calls.\n\nWhen using aapt to package, add in the \"-8\" switch to pack the\nresources using UTF-8. This will result in the value, key, and\ntype strings as well as the compiled XML string values taking\nsignificantly less space in the final application package in\nmost scenarios.\n\nChange-Id: I129483f8b3d3b1c5869dced05cb525e494a6c83a\n"
    },
    {
      "commit": "59ad275e937bb3c32e59bc01d86f484e7b4bdbe1",
      "tree": "d24f9a40a7428257c2de8dbd4559bb375b06b0dc",
      "parents": [
        "5a4d66965d3c5061d47201fcaa62c90d126e7187"
      ],
      "author": {
        "name": "Dirk Dougherty",
        "email": "ddougherty@google.com",
        "time": "Tue Nov 03 15:33:37 2009 -0800"
      },
      "committer": {
        "name": "Dirk Dougherty",
        "email": "ddougherty@google.com",
        "time": "Tue Nov 03 15:33:37 2009 -0800"
      },
      "message": "doc change: fix broken R.styleable formatting (caused by missing periods). Adjust table markup.\n\nBug: 2230588\nChange-Id: I54545dfd9d26acef567e586cfc916f6b883a4de7\n"
    },
    {
      "commit": "93d72516994277acdd3894a169ec1f1cbc50db97",
      "tree": "8a12fcb8bb24d01221f4c401ef672ea69274fbfc",
      "parents": [
        "6e478d7afb33eff4efe704a16b1a05435b431062"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "robdroid@android.com",
        "time": "Wed Sep 02 18:23:57 2009 -0700"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "robdroid@android.com",
        "time": "Wed Sep 02 18:23:57 2009 -0700"
      },
      "message": "Fix compilation of add-resource tag.\n\nIt used the wrong tag-type to find the end of itself.\n"
    },
    {
      "commit": "c87d25215c842cea370c6a86ce67585fa8da4900",
      "tree": "221eb50bb658c745f0ce5c56588193d565a1ccf3",
      "parents": [
        "b7559e02803266e5fa9f4496174bc343ecd245ab"
      ],
      "author": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Tue Sep 01 15:20:30 2009 -0700"
      },
      "committer": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Tue Sep 01 15:20:30 2009 -0700"
      },
      "message": "Make it an error to use a bare apostrophe in aapt, and adjust warnings/errors.\n\nIn practice, no one ever writes an apostrophe in an aapt string with the\nintent of using it to quote whitespace -- they always mean to include a\nliteral apostrophe in the string and then are surprised when they find\nthe apostrophe missing.  Make this an error so that it is discovered\nright away instead of waiting until late in QA or after the strings have\nalready been sent for translation.  (And fix a recently-introduced string\nthat has exactly this problem.)\n\nSilence the warning about an empty span in a string, since this seems to\nannoy people instead of finding any real problems.\n\nMake the error about having a translated string with no base string into\na warning, since this is a big pain when making changes to an application\nthat has already had some translations done, and the dead translations\nshould be removed by a later translation import anyway.\n"
    },
    {
      "commit": "58c27a0a03f573791935116fa35f6a7c8bf93896",
      "tree": "edece19830db9d14352390f5ea6e36cc6d8ccc17",
      "parents": [
        "364277866f6433560dc0a32047884a954605785b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 13 13:36:00 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 13 13:36:00 2009 -0700"
      },
      "message": "Allow overlays to add resources.\n"
    },
    {
      "commit": "dd931864209eac0b4182d7a0d1ca965fcc3b8c03",
      "tree": "27cd6d92392b837373bf97682d91834e7c4238d8",
      "parents": [
        "3cdff8133b96b672523c330bbc1adcab59125b9f"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Jul 13 13:02:33 2009 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Jul 13 14:14:01 2009 -0700"
      },
      "message": "Format aapt warnings the same way as other compiler warnings\n(\u0027warning: \u0027 instead of \u0027WARNING: \u0027 or \u0027WARNING \u0027)\n"
    },
    {
      "commit": "f878e2d80c3a0afefe3b018d232df6066379e1d5",
      "tree": "7a5ad87b37729db613202666cea37e525dbd53a3",
      "parents": [
        "1e3d1b4b83452286b000b8cd1997e5aef97fe2a7"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "robdroid@android.com",
        "time": "Tue Jun 09 09:14:20 2009 -0700"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "robdroid@android.com",
        "time": "Tue Jun 09 16:23:35 2009 -0700"
      },
      "message": "Make aapt Error out when an overlay adds a string.\n\nFinal added check (I think) for 1585775 - not letting overlays add\nresources.\n\n\tmodified:   ResourceTable.cpp\n\tmodified:   ResourceTable.h\n"
    },
    {
      "commit": "1aa8170e6a448afad86e5d62927d3b8ca4cd9707",
      "tree": "911e494fa0ab405fa8c5cb4271f8a0907a583d24",
      "parents": [
        "5d16ac5eb6c4a468cabc39bdd00eac1759993db5"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "robdroid@android.com",
        "time": "Fri Jun 05 15:59:15 2009 -0700"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "robdroid@android.com",
        "time": "Fri Jun 05 16:09:24 2009 -0700"
      },
      "message": "Add per-named-item overlay ability in res xml.\n\nFixes 1899451.\nAlso errors out if you add a bag via an overlay (which would renumber\nresources).  Note that you can still add elements within the bag as they are\nnot issued resource IDs.  So for example you can now modify the framework\nthemes.xml file without copying the entire file.\n\nAll bag types are now modifable except non-named bag types (how would you\naddress which element to replace?):\n    array\n    string_array\n    integer_array\n"
    },
    {
      "commit": "f479aa0900e9a85afdc78b1048684e37579ebf23",
      "tree": "1337f0f101bfe38ec5b182201b0d1b6dbb4cafb0",
      "parents": [
        "b204d4f12773ec67c7f0ded41cb111018f154476"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed May 20 16:01:06 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed May 20 16:30:59 2009 -0700"
      },
      "message": "Add padding to public.xml to avoid breaking from auto-merges.\n"
    },
    {
      "commit": "a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3d",
      "tree": "75e0804e6628f9bb818c5f6f918315640c721d4b",
      "parents": [
        "ba2a3a1b32e242eea4e97c927d886e8987fde3d4"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed May 13 15:06:13 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 15 18:02:47 2009 -0700"
      },
      "message": "Implement compatibility support for WRITE_SDCARD permission.\n\nNow old applications will automatically be granted it.  Also renamed it from\nSDCARD_WRITE to WRITE_SDCARD to be consistent with our other permissions,\nand re-arranged how we do targetSdkVersion to actually be usuable for this\nkind of stuff.\n\nNote that right now this results in basically all apps being given the\nWRITE_SDCARD permission, because their targetSdkVersion is not set.  I will\nbe dealing with that in a future change.\n"
    },
    {
      "commit": "32c2c902200e894c6e887218a337334d81013be5",
      "tree": "8d376335073d978468ea394f5a1e917dbaf002bf",
      "parents": [
        "c825d3ebd6ca66e65e63fdc76f032e08aa2a8e22"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "robdroid@android.com",
        "time": "Fri May 08 11:45:37 2009 -0700"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "robdroid@android.com",
        "time": "Fri May 08 11:45:37 2009 -0700"
      },
      "message": "Fix 1840639 to support overlays with zz_ZZ.\nEverything but strings worked fine before but a new default string would generate a build error.\n"
    },
    {
      "commit": "9411a39866b749ad0a47f15083f311847eb79178",
      "tree": "9b07caf5f0f48bb19c9e9bf5d185e82a3304a781",
      "parents": [
        "80e12129773644bd4573207d92119beb9f612c82"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "",
        "time": "Fri Apr 03 16:44:30 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Apr 03 16:44:30 2009 -0700"
      },
      "message": "AI 144547: Fix change 144342 by making it active only during overlay processing.\n  BUG\u003d1754390\n\nAutomated import of CL 144547\n"
    },
    {
      "commit": "4b4f4a908895bc0ba63f929bfdc02eec22c0f6e5",
      "tree": "27ad907b6d1999c14bf04f4d2adb3c2b8ff85e90",
      "parents": [
        "2a3ce2825182aab7c6e555f69b77e2c3d42bd660"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "",
        "time": "Thu Apr 02 16:55:50 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Apr 02 16:55:50 2009 -0700"
      },
      "message": "AI 144342: Fix bag (string-array,etc) behavior with overlays.\n  We used to replace elements in the default with elements from\n  the overlay.  This change causes us to empty the array first\n  so if the overlay array is smaller we don\u0027t end up with elements\n  from the default array showing through at the end of the array.\n  Ex: [A,B,C] and overlay [D] should give [D] but used to give\n  [D,B,C].\n  BUG\u003d1754390\n\nAutomated import of CL 144342\n"
    },
    {
      "commit": "9066cfe9886ac131c34d59ed0e2d287b0e3c0087",
      "tree": "d88beb88001f2482911e3d28e43833b50e4b4e97",
      "parents": [
        "d83a98f4ce9cfa908f5c54bbd70f03eec07e7553"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "d83a98f4ce9cfa908f5c54bbd70f03eec07e7553",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "076357b8567458d4b6dfdcf839ef751634cd2bfb"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "d24b8183b93e781080b2c16c487e60d51c12da31",
      "tree": "fbb89154858984eb8e41556da7e9433040d55cd4",
      "parents": [
        "f1e484acb594a726fb57ad0ae4cfe902c7f35858"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Feb 10 15:44:00 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Feb 10 15:44:00 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@130745\n"
    },
    {
      "commit": "22f7dfd23490a3de2f21ff96949ba47003aac8f8",
      "tree": "41bc290bb2f1f08a0e37cfda4955742a85d42ecf",
      "parents": [
        "9266c558bf1d21ff647525ff99f7dadbca417309"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Jan 20 14:03:58 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Jan 20 14:03:58 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@127101\n"
    }
  ],
  "next": "9266c558bf1d21ff647525ff99f7dadbca417309"
}
