)]}'
{
  "log": [
    {
      "commit": "54de298c01ad79fe7f5850eb7aefc2542dd8d5da",
      "tree": "7e7b5001571265a66474e793bcd6c00ed81797d5",
      "parents": [
        "4df65bf1eb454814954421403da9f8b5fcb82180"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Dec 16 09:16:26 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Dec 16 09:16:26 2014 -0800"
      },
      "message": "AAPT: Copy android:revisionCode to Splits\n\nBug:18706179\nChange-Id: I669b56e0b67dd1bfda7749ef433b55af16851154\n"
    },
    {
      "commit": "62c5df52e771e8cf490ee42e5d1516ec10170679",
      "tree": "ded8265fdf1fe1ef02b3dd94f0c6d1e1db2f4220",
      "parents": [
        "4c488ff931fe6b2fc79ef854febc98b4cb748402"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Dec 02 16:19:05 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Dec 02 16:23:59 2014 -0800"
      },
      "message": "AAPT: Add pathMotion custom classes to Proguard Keep set\n\nBug:18590044\nChange-Id: Ia5dbf55317d2cc89826316e8d10f031b5d340e57\n"
    },
    {
      "commit": "4c488ff931fe6b2fc79ef854febc98b4cb748402",
      "tree": "83c4d20398ce41b7ade1bc1ea460e3e2a87c5fdf",
      "parents": [
        "92ad4dd017a13364b4001bdb04911202932f81c2"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Dec 02 14:50:21 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Dec 02 15:40:17 2014 -0800"
      },
      "message": "AAPT: Add custom transition classes to Proguard keep set\n\nBug:18590044\nChange-Id: Ib24831e669a09f0e6f32434081c0e2499702399c\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": "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": "0f3a5a6559a955ea20f1ae2d3e0995f3fa821c90",
      "tree": "d00b9872793dd4a7e4618f489edfd934b30660d7",
      "parents": [
        "a41c4bcc3dcac9e808c9d524e24454d132790e9a"
      ],
      "author": {
        "name": "Marcin Kosiba",
        "email": "mkosiba@google.com",
        "time": "Thu Sep 11 13:48:48 2014 +0100"
      },
      "committer": {
        "name": "Marcin Kosiba",
        "email": "mkosiba@google.com",
        "time": "Thu Sep 11 16:02:13 2014 +0100"
      },
      "message": "Don\u0027t use reflection when generating the onResourcesLoaded callback.\n\nBUG: 17466240\nChange-Id: I74608f3d8b3617281639a9d387face97e15fb616\n"
    },
    {
      "commit": "ad2d07d2d98a46babb2a9472413fe9ce5080ca76",
      "tree": "40be93c366de29a74421b20cf8ae10c34ac34dfd",
      "parents": [
        "032402cff1fe5dc3a6b2adae3d4c13fb771cd91f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Aug 27 16:21:08 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Aug 27 18:28:49 2014 -0700"
      },
      "message": "Stamp platform version code into app Apks\n\nThe versionCode of theframework resources that an app is built against\ngets stamped inside an app\u0027s AndroidManifest.xml in the \u003cmanifest\u003e\ntag as \"platformBuildVersionCode\" and \"platformBuildVersionName\"\nattributes.\n\nBug:17207635\nChange-Id: Id573c3dffcbca38eec9c0eb3e89f4a547e3361d3\n"
    },
    {
      "commit": "1e466385d4a4f1acee080fa0fdf16cc8fd8ce7ca",
      "tree": "431c15e17f780767289dc5d3362d5d6d53ee3c18",
      "parents": [
        "5b8e5a7d4c930b42e1a3c2b3e67144b89d37efa2"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Aug 15 14:47:28 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Aug 25 20:04:07 2014 -0700"
      },
      "message": "Have R classes generate their own reference rewrite logic\n\nChange-Id: I0e5b8311fc3479d966a49f9acf0d4c32a6a024d3\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": "6a7d2757a936ee79b8dba2055139c8b71130c58e",
      "tree": "cf709a074ba681da1001e5394931d5442ad75979",
      "parents": [
        "223ddaa74d39cb0afabd2d3f3e4ae3ae4bdba572"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Aug 07 21:26:53 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Aug 21 11:00:09 2014 -0700"
      },
      "message": "Use the correct versionCode for Split APKs\n\nInsert the correct versionCode into the generated\nSplit AndroidManifest.xml.\n\nChange-Id: I0aec797b5a4ff8bd70f9394b18aee5ad292b37c8\n"
    },
    {
      "commit": "d3edfde51bd069a63e820282421d1a534fcf00ce",
      "tree": "9974d53c7ff2edc8577fd45066844de166fae7ed",
      "parents": [
        "4482e4bb8d1f5fe586b641bc3d6298dc7b8fee80"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Aug 08 17:32:44 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Aug 15 15:53:35 2014 -0700"
      },
      "message": "Add FeatureGroup to PackageInfo\n\nFeatureGroups replace top-level FeatureInfo objects.\nFeatureGroups inherit top-level FeatureInfos but override\nthem if the feature names are the same.\n\nBug:16822121\n\nChange-Id: I80b2cb778a0fbcb4521efce986fba641e0914290\n"
    },
    {
      "commit": "6240840387335632fdc92d5d168f924e2f414dda",
      "tree": "c6e61afb94092c457c16c1c2c31b8cbb7277e4bf",
      "parents": [
        "d7c1fae12ef0b31c225ef130e6b06445b5af53a9"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Aug 07 21:26:53 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Aug 14 19:29:47 2014 +0000"
      },
      "message": "Ensure that split names are valid\n\nGenerate valid split names for resource splits.\nValidate split names for features.\n\nChange-Id: I3040438af0156778c2bd66ddeffdf62fe9dcc9fc\n"
    },
    {
      "commit": "ec64709ce042bcf456f9749e079e5f6981cfbbb9",
      "tree": "9ac12058f26bbf10fb5c2909de4149a3d25b77fc",
      "parents": [
        "c1bf40f5c46e5c7597d5cd3f80d8eda83773683e",
        "833f3ccbc8f4dd1ec8abb9121988b99ff34ec4c1"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Sat Aug 09 01:48:35 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Aug 09 00:40:15 2014 +0000"
      },
      "message": "Merge \"AAPT support for feature splits\" into lmp-dev"
    },
    {
      "commit": "e8e91925074479fc06310418b58b54f49d051801",
      "tree": "bf5753bdddb03e5f1ea205c4bfdcefb07be8dc38",
      "parents": [
        "1ca722548d23dccae13829a51cc4e23a1579b900"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Aug 06 17:41:08 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Aug 07 22:37:12 2014 +0000"
      },
      "message": "Have styleable indices be non-final for library projects\n\nInvoking aapt after merging resources from a library project\nmay yield a different ordering to styleable arrays, so have\nthe indices be non-final too.\n\nBug:16842410\n\nChange-Id: I0432bea03dc4312d5908a770fc70a11f0a1596ae\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": "78a130144bdd047665f00782c481d31edb3e5fb7",
      "tree": "ef9e2bc4e6e7e962cd6a5dbb80ae7c6e1ab17e98",
      "parents": [
        "da96e137bcc8191c584ada7b5de31eaae92f244f"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Jul 15 20:18:34 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Jul 15 20:18:39 2014 -0700"
      },
      "message": "Mark resource-only splits as hasCode\u003dfalse.\n\nPackageManagerService now skips dexopt for split APKs that don\u0027t\ndeclare they have code.  Also surface more detailed error messages\nin logs.\n\nBug: 14975160\nChange-Id: Ie6078dba724815020cee59b7fc52317e88ca097a\n"
    },
    {
      "commit": "2cfc8482267707a671cbe4275ea8927c1aef991a",
      "tree": "da3f675b0c8c7b881317d2ab3515415ce784feb3",
      "parents": [
        "dbbf07a5c7f514f2168f236e1df3b2ca70d4ab2f"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Jul 09 16:10:16 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Jul 09 16:12:49 2014 -0700"
      },
      "message": "Add versionCode to split manifest; compile.\n\nTo verify consistency at install time, all APK manifests must declare\nthe same package name and version code.  Also start compiling the\nmanifest, since versionCode is an attribute.\n\nBug: 14975160\nChange-Id: I2a1a769bd3dfde05b19563af5ca9b6c15a9c95ff\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": "eb490d6194bd79adbe144a1230fc126f4c180a2f",
      "tree": "bd9ef0f7c42da1df1f781d0db87fb8b386a32c72",
      "parents": [
        "a18d0acc1fa9822cac2c63ace318ec546603e142"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jun 06 19:43:42 2014 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jun 06 19:43:42 2014 -0700"
      },
      "message": "Add support for @SystemApi annotation to aapt.\n\nWhen aapt sees @SystemApi in the XML comment associated with a resource,\nit will now remove this tag from the comment (since is it not meaningful as\na Javadoc tag) and instead add an @android.annotation.SystemApi annotation\nto the declared type or member.  This enables easy downstream processing of\nthis annotation from generated code.\n\nChange-Id: If984908477648c0c90be52fdc955fbb891d99b28\n"
    },
    {
      "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": "9cf4b4a932d0bd84e0b7263540bd9d7174e8d2d0",
      "tree": "9750f889088ad4f14b3f73cc4c20776fc2103686",
      "parents": [
        "c3be45064863003d11387b2456c6957bc86d2fd2"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 25 11:36:02 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Fri Apr 25 11:37:23 2014 -0700"
      },
      "message": "Child nodes of \u003cpreference-headers\u003e now output proguard keep options.\n\nBug:13797600\nChange-Id: I55c71a2fcf7f9b4bdad684d5c235981c3a8bc1e9\n"
    },
    {
      "commit": "df08d1c24dbbc242978ee33416d1e54998f88915",
      "tree": "1f933fa448fcac027fb3b7bb0fc9cba1e273c510",
      "parents": [
        "c1970190549519acde6719c777f53611674058cb"
      ],
      "author": {
        "name": "Jeff Davidson",
        "email": "jpd@google.com",
        "time": "Tue Feb 25 12:28:08 2014 -0800"
      },
      "committer": {
        "name": "Jeff Davidson",
        "email": "jpd@google.com",
        "time": "Tue Feb 25 13:42:12 2014 -0800"
      },
      "message": "Add --replace-version flag to aapt.\n\nMotivation: we\u0027d like to programmatically specify the version\nname/code (i.e. to include the build number from the build server).\nHowever, this means that we cannot specify version info in the\nAndroidManifest.xml file, as this takes precedence. Not doing so makes\nIDE use more difficult, as the IDE gets version code 0 and won\u0027t\ninstall over an existing non-IDE version unless you first force a\ndowngrade to an IDE build from the command line.\n\nThis flag allows us to specify a very high version code in the\nAndroidManifest.xml file, making IDE builds take precedence, while\nstill allowing us to override this info when performing command-line\n(official) builds.\n\nChange-Id: I5d01048698af5c26bdf19066c6cd4eca1115112a\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": "00b314436f4fdfada4bbf1e79ec12e9fa38aeaf1",
      "tree": "d1d6075692ef537e80d05255a13204a61f0f8a04",
      "parents": [
        "729b12c7a91f9caa65af77197cf6a8814a5a2051"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Jan 27 17:32:37 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jan 28 16:27:52 2014 +0000"
      },
      "message": "Change ResourceType cookies to int32_t.\n\nAlso change the order of parameters in ResTable constructors\nto avoid ambiguity.\n\nChange-Id: If7bfa1f640dddca39b9f26a3ce84081fa7b6e6e3\n"
    },
    {
      "commit": "b30296b5fda75bf383c7ab3f567eb41820747869",
      "tree": "1c6745cc073dcaa88b2840e24623079018c0135f",
      "parents": [
        "2675f769673f69b0661ddee346292f25cb30a296"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 29 15:25:52 2013 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 27 10:31:08 2014 -0800"
      },
      "message": "Re-apply several tools fixes lost by the directory rearrangement.\n\nLeaks on error in tools/aapt/Images.cpp.\nhttps://code.google.com/p/android/issues/detail?id\u003d61552\n\nTwo missing fclose calls in tools/aapt/Resource.cpp.\nhttps://code.google.com/p/android/issues/detail?id\u003d61553\n\nMissing fclose in tools/aidl/aidl.cpp.\nhttps://code.google.com/p/android/issues/detail?id\u003d61554\n\nChange-Id: I56ce144958296961b77354815efc1a245564594b\n"
    },
    {
      "commit": "7cce7bb5d8d68e78a414c176dc89a803f706c9ce",
      "tree": "93d34b950a01e6c1581a22bb30b4738bc24710d8",
      "parents": [
        "282e181b58cf72b6ca770dc7ca5f91f135444502"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed Sep 04 17:41:11 2013 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 27 10:31:04 2014 -0800"
      },
      "message": "Remove scenes from Resource.cpp\n\nPart of the Transition API changes, except that the tools/ directory\ngot moved between klp and master, so re-making the same changes here.\n\nIssue #10460684 KLP API Review: android.view.transition and android.animation\n\nChange-Id: Icedca1dc689285b4b213f9376656b26f18c7f23e\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": "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": "1f5762e646bed2290934280464832782766ee68e",
      "tree": "123bcdf3ba4c98f885631b02bb90803b7885e438",
      "parents": [
        "9f3e1175657425115e863fdb256b83cadedc33e9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 06 20:20:34 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 07 17:09:46 2013 -0700"
      },
      "message": "libutils clean-up\n\nChange-Id: I11ee943da23a66828455a9770fc3c5ceb4bbcaa9\n"
    },
    {
      "commit": "5ae02e92e4ea2621ae6be6076e304a972793e2f3",
      "tree": "2efdc361f1eb6f08aaca456819c6eadad7e1ca0f",
      "parents": [
        "65e46420ea0c24f53e36b08f4e927f3d0db3f895",
        "eb6403e95d601b62be7b4610599e72fd329f2666"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 26 12:06:15 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Apr 26 12:06:15 2013 -0700"
      },
      "message": "am eb6403e9: resolved conflicts for merge of bfdd2566 to jb-mr2-dev-plus-aosp\n\n* commit \u0027eb6403e95d601b62be7b4610599e72fd329f2666\u0027:\n  Generate SDK docs for v7 support library packages.\n"
    },
    {
      "commit": "caf7b0a155f6adef1b9af6cbf7370460c55e3a3f",
      "tree": "c69a8effe9c9299b687232dc672094f9c76c7b00",
      "parents": [
        "22f6a60e62253436a4f7da1a5d59adc0f17534cc"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 25 21:24:44 2013 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 26 00:20:42 2013 -0700"
      },
      "message": "Generate SDK docs for v7 support library packages.\n\nThis change required fixing some bugs in how AAPT handles\nqualified symbols such as \"android:layout_height\"\nwhen generating JavaDoc links.  The links were being\ngenerated using the package name of the generated R file\nrather than the package name of the referenced symbol.\nThese broken links caused the JavaDoc build to fail.\n\nBug: 8175766\nChange-Id: I52fbef27825a25abca960cb44b59c2132267e9d6\n"
    },
    {
      "commit": "faebd8f0795b7d275fb4e503533c8c0c4a9acc21",
      "tree": "464de8bb5dcd9ae99402ebb630d329dc8ce953cc",
      "parents": [
        "b3caa9200a61cde1178a2c83419de56579d3c5a5"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri May 18 14:17:57 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Apr 18 13:33:13 2013 -0700"
      },
      "message": "First draft of Scenes \u0026 Transitions feature\n\nThis checkin has preliminary API (in flux, definitely changes still\nto be made) and implementation for a new \"Scenes \u0026 Transitions\" feature.\nThe current implementation allows you to define different Scenes\n(via layout resource IDs or callbacks) and Transitions to be used when\nchanging to those scenes. By default, scene changes will use AutoTransition,\nwhich generally does the right thing.\n\nThere are no overview docs or tutorials yet. The best way to learn how things\nwork is to see the code for the various tests in\nframeworks/base/tests/TransitionTests.\n\nExpect the API to change. Expect the implementation to change (mostly to add\nmore functionality). Expect bugs, but tell me if things do not work\nas expected.\n\nChange-Id: Ib025a9f565678b225afa4759325cf6d496cc7215\n"
    },
    {
      "commit": "a068eeddc9d47af1a12afbe6efe7d00e8e903b9f",
      "tree": "df9f8663d47adc21195ea822fc107c514d514c27",
      "parents": [
        "301e95f2e17164c6f432f1b68f55e5f12aa0ca78"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Sat Apr 13 09:48:01 2013 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Sat Apr 13 09:48:01 2013 -0700"
      },
      "message": "Revert \"Make --non-constant-id generates non final IDs for styleable.\"\n\nThis reverts commit 8730f46ae5ba9021a0e01c068ffc6b552b6c4510.\n"
    },
    {
      "commit": "8730f46ae5ba9021a0e01c068ffc6b552b6c4510",
      "tree": "0029a29868d6ff22577549764334b6e664766fbf",
      "parents": [
        "e203384f1627f27c81ff72426498927fb9d80698"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Apr 12 16:00:49 2013 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Apr 12 16:02:54 2013 -0700"
      },
      "message": "Make --non-constant-id generates non final IDs for styleable.\n\nThis was already done for all other types of resources, but not\nfor styleable (or the constants for the styleable array indices).\n\nThis fixes this. This only affects the SDK as this is used by the\nSDK toolchain only.\n\nChange-Id: Idfc2f7915be2b0e88590f38fd660610ffc7e160c\n"
    },
    {
      "commit": "253f76357dc9acdb329f321190eca4f0b049b4af",
      "tree": "d791e452faaeb3ae4e13029ee29a6fbf7fad1690",
      "parents": [
        "b079d1f28089ad4de05162b7df0ace90bc40a5f3",
        "fb34490f4dca7aac623fb9a80fe9a2371107a786"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Sep 26 10:44:22 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 26 10:44:22 2012 -0700"
      },
      "message": "am fb34490f: Merge \"Fix writing text version of styleable IDs.\"\n\n* commit \u0027fb34490f4dca7aac623fb9a80fe9a2371107a786\u0027:\n  Fix writing text version of styleable IDs.\n"
    },
    {
      "commit": "d16047434bca24b2811de7ea9d22de6ee0f87f79",
      "tree": "ef2b9d05669191e2b2a5f82e8e5b3063670c2dd2",
      "parents": [
        "5e8cbdc0bd6dfc51e6b54db1d5fd61347336d862"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Sep 26 10:11:54 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Sep 26 10:11:54 2012 -0700"
      },
      "message": "Fix writing text version of styleable IDs.\n\nChange-Id: I3f2614689a597de3fd46628c020cf649a808c82f\n"
    },
    {
      "commit": "5de9603529ee01a416b5fa31074197565fde4482",
      "tree": "f610ba56bf685b21bbc81bbf4d6ed8b2d5640ef7",
      "parents": [
        "cc9747ed45302956a3ec9dd21f7b950b837dbfdd",
        "31820a35b2cf864a8dcb71d43e6fd21d54f49a2d"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Sep 17 12:03:19 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 17 12:03:19 2012 -0700"
      },
      "message": "am 31820a35: Merge \"Add --output-text-symbols option to aapt.\"\n\n* commit \u002731820a35b2cf864a8dcb71d43e6fd21d54f49a2d\u0027:\n  Add --output-text-symbols option to aapt.\n"
    },
    {
      "commit": "cc9747ed45302956a3ec9dd21f7b950b837dbfdd",
      "tree": "4f5bf98606f87858b78a95bd8dd09e9e6a797716",
      "parents": [
        "f5437ee86a34751fa6d441b95282feb315e19eb6",
        "d72525718ea7ef3e1f97cf557365b143c8919a5b"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Sep 17 12:03:12 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 17 12:03:12 2012 -0700"
      },
      "message": "am d7252571: Merge \"Add --error-on-failed-insert option to aapt.\"\n\n* commit \u0027d72525718ea7ef3e1f97cf557365b143c8919a5b\u0027:\n  Add --error-on-failed-insert option to aapt.\n"
    },
    {
      "commit": "f5de650ff1e161ea135c828e43515895343d2c0f",
      "tree": "4398a8d071f3322512e6c4d5f153fb9564865d6a",
      "parents": [
        "7714a2429b192c88e134ff67b969121bbaeb5457"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Sep 11 14:45:22 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Sep 11 18:19:00 2012 -0700"
      },
      "message": "Add --output-text-symbols option to aapt.\n\nLibrary projects in the SDK are built using --non-constant-id\nto generate a temporary R.java class.\nWhen the library is packaged with the application to generate an\napk, the R class is recreated with the proper IDs due to all the\nresources coming from the app and all the libraries.\n\nHowever for large apps with many libraries (each with their own\nR class in their package), this means a lot of unnecessary IDs:\nall R classes contains all the IDs including for resources from\nby projects they don\u0027t have access through the dependency graph.\n\nFor really large apps (X,000 resources), with lots of libraries\n(10+), this can generate tens of thousands of resources, which\ncan trigger dalvik\u0027s limit of 65K fields and methods per dex\nfiles.\n\nThis changes lets aapt generate not only the R class but a simple\ntext file containing the list of all those IDs so that it is\neasier to parse back. The SDK build system will not ask aapt\nto generate the R class of the libraries (through the\n--extra-packages option), instead it will then read this\nfile to know what IDs are needed for each library and generate\na much smaller R class for each library (using the same text\nfile output from compiling all the resources to get the final\ninteger value).\n\nChange-Id: I4db959fec372cf3ead9950e4b2b82fa1ae7eed2d\n"
    },
    {
      "commit": "7714a2429b192c88e134ff67b969121bbaeb5457",
      "tree": "13d8c0eeb0d9eee815e3444fd236924306861fe3",
      "parents": [
        "2415841c370d855d7f3a3e6a537e641c69a57097"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Sep 05 17:49:21 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Sep 11 18:17:22 2012 -0700"
      },
      "message": "Add --error-on-failed-insert option to aapt.\n\nThe new SDK build system give the ability to insert\nversionCode/Name and min/targetSdkVersion in the manifest\nbut aapt won\u0027t replace those if they already exist.\n\nThe main problem is that aapt doesn\u0027t actually fail when\nit doesn\u0027t replace them, making the output not what the\ndeveloper wanted.\n\nThis patch set adds an option to aapt to make it return\nan error if the insert failed because the attribute\nalready existed.\n\nChange-Id: I8938ec1238da407a8562c974e9598db39001ffd9\n"
    },
    {
      "commit": "095cd2e2d14e4fe25b66df54861fb66000a25adc",
      "tree": "b16c8e094f998b23b77a68e364e70f45629f13b5",
      "parents": [
        "12a5475205243bc2d069a87d2c7d4982b5f4d11d"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jul 18 18:06:09 2012 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Jul 19 09:06:03 2012 -0700"
      },
      "message": "Fix aapt -G to properly support class attr in fragment.\n\nThe code added attributes android:name and class to a\nKeyedVector under the same key (fragment) so the 2nd\nadd (android:name) removed class with was never checked.\n\nThis replace the value type in the KeyedVector to be\nVector\u003cNamespaceAttributePair\u003e instead of just\nNamespaceAttributePair.\n\nChange-Id: I009b8a8cca878191661c2a63bb14c967d230498d\n"
    },
    {
      "commit": "9275197d35a99c3f187d18d0eda6ead3b8a32603",
      "tree": "ba364f6cf805ce6dac0d3eb8ced5d82d71cd956a",
      "parents": [
        "fb5c3dba4ddac023cfd4cdcabdfdbcf343197c94"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 18 19:22:14 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri May 18 19:23:19 2012 -0700"
      },
      "message": "Add aapt support for generating proguard rules for onClick methods.\n\nAlso fix Activity menu inflater when using the dark on light\ntheme wrapper to still be able to find onClick listeners.\n\nChange-Id: Ie206db26d1df96041bc477804e476b02ad99dc9d\n"
    },
    {
      "commit": "c0f7366a15655c6973ea21029f1997f24c006cca",
      "tree": "ad9302a32cfbfa603ce5b58a6fa263c92953795a",
      "parents": [
        "c9fd9263feedac32e4f5b1f13a3246347efdc25f"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 16 22:17:41 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Mar 17 14:12:57 2012 -0700"
      },
      "message": "aapt: Preprocess images in parallel.\n\nCurrently hardcoded to use up to 4 threads.\n\nThis change substantially reduces the amount of time spent\npreprocessing framework resources to just a few seconds.\n\nChange-Id: I02fdd283fb529a152aeb22ac87f278779fd77983\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": "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": "f51125d8429ffa71c57ba6fbdca9effc72642a9b",
      "tree": "f94891383e3cd48374f02bff435b0a3ca783bd90",
      "parents": [
        "e87d2da0b4e44051edbee4a4339f846eba9d3a36"
      ],
      "author": {
        "name": "Raphael",
        "email": "raphael@google.com",
        "time": "Thu Oct 27 17:01:31 2011 -0700"
      },
      "committer": {
        "name": "Raphael",
        "email": "raphael@google.com",
        "time": "Thu Oct 27 17:11:21 2011 -0700"
      },
      "message": "AAPT fix printf %zd crash on Windows.\n\nThere\u0027s no printf %zd on Mingw/Cygwin so the verbose\nprintf crashes aapt.\n\nSDK bugs: 20395, 20986\n\nChange-Id: I5b8ac36749263205a19f1448b1aaca90d5a2e06d\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": "1797d6086f9acbea582cac6d484e749abafa1868",
      "tree": "4b1af23c311a9e261d3494d9b6b0bcb54550c9a6",
      "parents": [
        "6ccadb04a42703f8d6f51db5ada034ed01a48afa",
        "d98e1be20e1cca5c36c7e0344500d4a5574568aa"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Aug 18 14:51:43 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 18 14:51:43 2011 -0700"
      },
      "message": "am d98e1be2: am f4750724: am 9d829f98: am 21e6e2de: Merge \"Change generated dependency file names\"\n\n* commit \u0027d98e1be20e1cca5c36c7e0344500d4a5574568aa\u0027:\n  Change generated dependency file names\n"
    },
    {
      "commit": "d98e1be20e1cca5c36c7e0344500d4a5574568aa",
      "tree": "9fb8a00956a58e1eb452f7b91e109fa4461f8027",
      "parents": [
        "294539df2c05eb62c417e25b2e1c8a71474b09e6",
        "f4750724cf8db972a052cb388dc9a39fc7aa6dd6"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Aug 18 14:48:49 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 18 14:48:49 2011 -0700"
      },
      "message": "am f4750724: am 9d829f98: am 21e6e2de: Merge \"Change generated dependency file names\"\n\n* commit \u0027f4750724cf8db972a052cb388dc9a39fc7aa6dd6\u0027:\n  Change generated dependency file names\n"
    },
    {
      "commit": "b711f3f7ee0544685ef26a1a4b4755d5a6233dba",
      "tree": "a597541ade9616440906a10db603d377d2211506",
      "parents": [
        "d144748d4767b2ccfb13857e23f78bc944e9531d"
      ],
      "author": {
        "name": "Josiah Gaskin",
        "email": "josiahgaskin@google.com",
        "time": "Mon Aug 15 18:33:44 2011 -0700"
      },
      "committer": {
        "name": "Josiah Gaskin",
        "email": "josiahgaskin@google.com",
        "time": "Tue Aug 16 08:14:51 2011 -0700"
      },
      "message": "Change generated dependency file names\n\nThis changes the name of the generated dependency files to R.java.d\nand \u003cApkName\u003e.ap_.d respectively.\n\nChange-Id: I17e18770fc0d0a5d31c7b37b40ac1949f45ef13a\n"
    },
    {
      "commit": "ac1fe6f8460448d379721677a064868e103a2260",
      "tree": "210b3ac8b0e15d02a24ea5b31b29867dfa4cec66",
      "parents": [
        "ae7c0926499491999fa5964d75fd05a1b5f4480d",
        "84be06e4ce0778fbf0c1ac72f94795ef8433439b"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jul 20 17:49:26 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 20 17:49:26 2011 -0700"
      },
      "message": "am 84be06e4: resolved conflicts for merge of ea9e6d24 to honeycomb-plus-aosp\n\n* commit \u002784be06e4ce0778fbf0c1ac72f94795ef8433439b\u0027:\n  Added Caching for PreProcessed PNGs\n"
    },
    {
      "commit": "84be06e4ce0778fbf0c1ac72f94795ef8433439b",
      "tree": "ea9b35882420896cfba281f17293bce74e564089",
      "parents": [
        "a125c937de06b1cc43368743592f47513eb88b76",
        "ea9e6d24a458c06df6237fddd22b6165b2f92cb5"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jul 20 17:45:11 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jul 20 17:45:11 2011 -0700"
      },
      "message": "resolved conflicts for merge of ea9e6d24 to honeycomb-plus-aosp\n\nChange-Id: I8e047147a4d2c899b6654c03a5f32b04d929e602\n"
    },
    {
      "commit": "e53365f6f145303b8c7a0613189ad415959dd697",
      "tree": "83922948d5c70b79f6b58d05c696291cca3bb291",
      "parents": [
        "0f4e81df9942dbea16f803bb795cae057fb085f5",
        "a125c937de06b1cc43368743592f47513eb88b76"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jul 20 17:18:04 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 20 17:18:04 2011 -0700"
      },
      "message": "am a125c937: resolved conflicts for merge of 2c311be7 to honeycomb-plus-aosp\n\n* commit \u0027a125c937de06b1cc43368743592f47513eb88b76\u0027:\n  Add generation of dependency file for .ap_ package\n"
    },
    {
      "commit": "a125c937de06b1cc43368743592f47513eb88b76",
      "tree": "514f08565d17813860d4cc240162806f3fda9816",
      "parents": [
        "57aebc6109f2059ba335a02bf95928a494cff4ba",
        "2c311be720341e3249887e592bbc1881008b02bd"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jul 20 16:31:25 2011 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Wed Jul 20 16:31:25 2011 -0700"
      },
      "message": "resolved conflicts for merge of 2c311be7 to honeycomb-plus-aosp\n\nChange-Id: I806c7b4ae95f66df621587e52497dd8739a115fe\n"
    },
    {
      "commit": "8a39da80b33691b0c82458c3b7727e13ff71277e",
      "tree": "b6fa94370ecb2dba85d5fdb45c83729cef8708e1",
      "parents": [
        "1e24ccbdd56a45c8bb5f2eba94af5aecd2d02554"
      ],
      "author": {
        "name": "Josiah Gaskin",
        "email": "josiahgaskin@google.com",
        "time": "Mon Jun 06 17:00:35 2011 -0700"
      },
      "committer": {
        "name": "Josiah Gaskin",
        "email": "josiahgaskin@google.com",
        "time": "Wed Jul 20 15:20:26 2011 -0700"
      },
      "message": "Added Caching for PreProcessed PNGs\n\nAdded a cache management system for pre-processed PNG files\nalong with unit tests. The cache system will be used if\nthe --no-crunch flag is passed to AAPT during the package\nphase. The cache can be updated by a call to \u0027aapt crunch\u0027\n(see usage statement). Also put in benchmarking code.\n\nChange-Id: I58271fb2ee2f5f9075fd74d4ff6f15e7afabd05c\n"
    },
    {
      "commit": "c810fffe1ffda8876c083f10b5f2b3b197768809",
      "tree": "c1156134ff4a0ab798c1c0e588dca02c650be9a4",
      "parents": [
        "e242042b81bc88c6231caf4628d0c7364b29abad",
        "9139868b6c5cb29b3665984225dceb0193fec31d"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jul 19 10:23:19 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 19 10:23:19 2011 -0700"
      },
      "message": "am 9139868b: am ba6c98db: am 82943ecf: am d40c93f6: Merge \"Add dependency generation to Aapt for R.java\"\n\n* commit \u00279139868b6c5cb29b3665984225dceb0193fec31d\u0027:\n  Add dependency generation to Aapt for R.java\n"
    },
    {
      "commit": "9139868b6c5cb29b3665984225dceb0193fec31d",
      "tree": "01c3dfab0f56bfcf38d32f2c2054915a6864d10d",
      "parents": [
        "bf31250ba0858a2e72a3906a1f0216846683bc2e",
        "ba6c98db8f21016f81ecac35bb0ea3c433044bb7"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Jul 19 10:18:28 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 19 10:18:28 2011 -0700"
      },
      "message": "am ba6c98db: am 82943ecf: am d40c93f6: Merge \"Add dependency generation to Aapt for R.java\"\n\n* commit \u0027ba6c98db8f21016f81ecac35bb0ea3c433044bb7\u0027:\n  Add dependency generation to Aapt for R.java\n"
    },
    {
      "commit": "03589cc65355220e0a4a0c816189a9fa25cc81fc",
      "tree": "ebe98e64c530708e8709025e8ad051c714eab9a3",
      "parents": [
        "9bf34ca6f85309c65b0ebdf614cb8266401b49ba"
      ],
      "author": {
        "name": "Josiah Gaskin",
        "email": "josiahgaskin@google.com",
        "time": "Mon Jun 27 16:26:02 2011 -0700"
      },
      "committer": {
        "name": "Josiah Gaskin",
        "email": "josiahgaskin@google.com",
        "time": "Mon Jul 18 16:37:55 2011 -0700"
      },
      "message": "Add generation of dependency file for .ap_ package\n\nMake Aapt generate a dependency file in the same directory as the\noutput ap_ file if the --generate-dependencies flag is set.\nThis dependency file can then be read by the ant exec loop task\nto see whether to repackage resources.\n\nChange-Id: I763679414daf76369700aa599c26dcf78d4de099\n"
    },
    {
      "commit": "9bf34ca6f85309c65b0ebdf614cb8266401b49ba",
      "tree": "50708801cb3c58aa23a32bc1a1ad39315e3aeff5",
      "parents": [
        "ce89f1531ed8b96b8b790b3f8b18dd4cf483f7f0"
      ],
      "author": {
        "name": "Josiah Gaskin",
        "email": "josiahgaskin@google.com",
        "time": "Tue Jun 14 13:57:09 2011 -0700"
      },
      "committer": {
        "name": "Josiah Gaskin",
        "email": "josiahgaskin@google.com",
        "time": "Mon Jun 27 16:44:57 2011 -0700"
      },
      "message": "Add dependency generation to Aapt for R.java\n\nMake Aapt generate a dependency file in the location specified\nby RClassDir for R.java if the --generate-dependencies flag is set.\nThis dependency file is then read by the ant exec loop task\nto see whether to recreate R.java.\n\nChange-Id: I7152dac86b6ea0e448ef65e3a95694afe233c789\n"
    },
    {
      "commit": "45ccfa5870517374d06e1eec9f61947d8c00cb0d",
      "tree": "eade784b108e83e2ab5f6076b6ae897ca655b3ef",
      "parents": [
        "df02afe8355e1e7a6f8f02549f41a166c3ee6932"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Mon Jun 20 15:41:08 2011 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Mon Jun 20 15:41:08 2011 -0700"
      },
      "message": "Output Proguard options for also overlay layouts.\n\nChange-Id: I7bfac476247bd7b532510e295cb1a3e61e9af88b\n"
    },
    {
      "commit": "b732b7b5e8192501360edc15fb8c6399d11fb97d",
      "tree": "a2fab9c785f055c9962e565896d5e4a1bdadc769",
      "parents": [
        "1649d91f781445a78ce09ed5500503fd96eb9113",
        "ce57a7f35344e76689d30f45964d1e37b78280cb"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Feb 28 10:10:38 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Feb 28 10:10:38 2011 -0800"
      },
      "message": "am ce57a7f3: am 6504490c: am dff6b8e7: Merge \"Add --non-constant-id to aapt.\"\n\n* commit \u0027ce57a7f35344e76689d30f45964d1e37b78280cb\u0027:\n  GpsLocationProvider: Clean up HAL initialization/cleanup sequence\n  Fixed GSM encoded network initiated position request\n  Ensuring thread-safe usage of DateFormat.\n  Fixing infinite loop for zero duration.\n  Fix for an infinite loop while scrolling lists.\n  WAPPushManager, WAP Push over SMS message handler\n  Add --non-constant-id to aapt.\n"
    },
    {
      "commit": "d06c1afbb920111d6bb77381560faa1fac5f2d69",
      "tree": "edb82445efe4b01dcf4e88f61d71ff649b84baba",
      "parents": [
        "93552de8e305027fb003401e347b9493c64c981f"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Feb 14 16:58:00 2011 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Mon Feb 14 17:06:19 2011 -0800"
      },
      "message": "Add --non-constant-id to aapt.\n\nThis option enbables creating resource constant in the R class\nthat are not actual constant, but simply static fields.\n\nThe goal is to build library projects with these types of\nIDs so that the constant does not get inlined in the library\ncode, since the ID for the library resources only are not\nthe final values.\n\nThe final resource IDs, generated from the main project and\nits library(ies), will have proper constant with the final\nvalues.\n\nThis allows us to generate binary library bundle (a jar file\nand associated resources) that can be distributed. Additionally,\nthis will let us make the library project support in Eclipse\nmuch more robust and a better user experience overall.\n\nChange-Id: Ibe2f08d68493fde658fc3f7606abf7446f312ad2\n"
    },
    {
      "commit": "f31161a0e71c0446283610e9bf7a11e0be12bd5e",
      "tree": "f7c479d8e0a0596d9af96283258432f71e043af1",
      "parents": [
        "70588bf864f961974c93aace7586d3e2773a54a8"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jan 04 21:02:48 2011 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jan 05 14:12:55 2011 -0800"
      },
      "message": "Add new \"animator\" and \"interpolator\" resource directories.\n\nFirst phase, allowing apps to move over to the new names.\n\nChange-Id: Ia16f3e2383e4a6599a0011d0464f0aacb1ce9207\n"
    },
    {
      "commit": "ddb76c4644756b31be948d70aaa8ee541dd94999",
      "tree": "782d260d2da982941148be7c1a0a0780749cdfdc",
      "parents": [
        "8028a951c3aa74990907efb9376d1093d84084af"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 24 12:56:06 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Dec 08 11:21:30 2010 -0800"
      },
      "message": "Change assets to use 64-bit API\n\nThe asset system and supporting libraries were using off_t instead of\noff64_t to access files larger than 2GB (32-bit signed). This change\nreplaces all off_t with off64_t and lseek64.\n\nThere is a new utils/Compat.h added for Mac OS compatibility.\n\nAlso fixed some size-related compiler warnings.\n\nBug: 3205336\nChange-Id: I9097b3cb7a602e811fe52f245939d8975da55e9e\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": "f14fafdb7d107b1303e6c93e54b20d457195dca2",
      "tree": "a112f3032693ee0c9638c777d341bb82a23e7280",
      "parents": [
        "5d77928f328feefe0ba15fd12c5b0b9a54b89519",
        "fa8887848e2877dd96e853dfcd52086f1b66c26b"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Sep 10 15:01:56 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 10 15:01:56 2010 -0700"
      },
      "message": "am fa888784: am 89fef418: Merge \"Avoid pre-processing images when they won\\\u0027t be used\"\n\nMerge commit \u0027fa8887848e2877dd96e853dfcd52086f1b66c26b\u0027\n\n* commit \u0027fa8887848e2877dd96e853dfcd52086f1b66c26b\u0027:\n  Avoid pre-processing images when they won\u0027t be used\n"
    },
    {
      "commit": "fa8887848e2877dd96e853dfcd52086f1b66c26b",
      "tree": "923ad4607189c83780383ae6a69c06d3cfb7380c",
      "parents": [
        "e3dabc4bc4ad977d8b126e644e4328e70bd58b72",
        "89fef4183a3c58aebbbf66e894bbdc1ae9f634e9"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Sep 10 13:03:43 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 10 13:03:43 2010 -0700"
      },
      "message": "am 89fef418: Merge \"Avoid pre-processing images when they won\\\u0027t be used\"\n\nMerge commit \u002789fef4183a3c58aebbbf66e894bbdc1ae9f634e9\u0027 into gingerbread-plus-aosp\n\n* commit \u002789fef4183a3c58aebbbf66e894bbdc1ae9f634e9\u0027:\n  Avoid pre-processing images when they won\u0027t be used\n"
    },
    {
      "commit": "578a57fc6bba6d19e31e91961ef5a9e86b890e4b",
      "tree": "f56287c185424d57a6e94c667518e5edf785ac1b",
      "parents": [
        "bd6abed3c8c7c0215fd937d27f1eda1ee88d11a1"
      ],
      "author": {
        "name": "Anthony Newnam",
        "email": "anthony.newnam@garmin.com",
        "time": "Wed Sep 01 12:06:04 2010 -0500"
      },
      "committer": {
        "name": "Garmin Android technology group",
        "email": "android@garmin.com",
        "time": "Fri Sep 03 15:17:09 2010 -0500"
      },
      "message": "Avoid pre-processing images when they won\u0027t be used\n\nChange-Id: Iffa31228ca95a2e29ccc0aa81bda0fc66922d577\n"
    },
    {
      "commit": "8e9bfab2a3ce35b31350b8de18d024f4da6e3886",
      "tree": "86f46a6d4acb9628de2b1a91806fccf8be9dd26a",
      "parents": [
        "12dbee827353ecdb690d27c3f52e26afc71e0774"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Aug 31 10:45:31 2010 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Aug 31 15:46:59 2010 -0700"
      },
      "message": "Add a --debug-mode option to aapt.\n\nWhen passed (with no needed parameters) to the aapt command line,\naapt will insert debuggable\u003dtrue in the application node of the manifest\nautomatically.\n\nThis is to be used by the SDK tools to make true \"debug\" builds\nthat require no code/file change.\n\nChange-Id: I909759caef499a91d10cc9a0902c6448c87e75ef\n"
    },
    {
      "commit": "d092f380021ca0520cc27b0272cd1a44d801d167",
      "tree": "3a27e164e233afcbd483830925b0f08c9ee5fa4f",
      "parents": [
        "f06a44995142696e5867c50c39be64c03157f5d3",
        "b4649ec720fa959b700a7a03c089bfdc61321d16"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Aug 31 14:35:28 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 31 14:35:28 2010 -0700"
      },
      "message": "am b4649ec7: am 23827557: Merge \"Add a --debug-mode option to aapt.\" into gingerbread\n\nMerge commit \u0027b4649ec720fa959b700a7a03c089bfdc61321d16\u0027\n\n* commit \u0027b4649ec720fa959b700a7a03c089bfdc61321d16\u0027:\n  Add a --debug-mode option to aapt.\n"
    },
    {
      "commit": "6487b099231b1e5d36ae37a921399b028b3b3ad9",
      "tree": "25018182d96a759798431af7230de27202fb5543",
      "parents": [
        "7ec7b9970cc3a6311bf043e228991adf24c43523"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Aug 31 10:45:31 2010 -0700"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Tue Aug 31 11:07:56 2010 -0700"
      },
      "message": "Add a --debug-mode option to aapt.\n\nWhen passed (with no needed parameters) to the aapt command line,\naapt will insert debuggable\u003dtrue in the application node of the manifest\nautomatically.\n\nThis is to be used by the SDK tools to make true \"debug\" builds\nthat require no code/file change.\n\nChange-Id: I6f0a7af7b7d51f26bb0ec012e6f142a6060b8618\n"
    },
    {
      "commit": "8a44bb23c1f12ba58d0cb5732e3e216d48e7ccdb",
      "tree": "e3151310770488e74fe4ea201428a90ee8678787",
      "parents": [
        "ed23e3b87906d367304dbf5bd49ed17448d5d684"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 19 12:56:10 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 20 12:56:42 2010 -0700"
      },
      "message": "Update aapt to find fragment references.\n\nAdd knowledge about \u003cfragment class\u003d\"...\"\u003e for layout files\nand update to reflect the change of the header tag from Header.\n\nChange-Id: I91e2a5f204a8e222367985383c1721030c7954d8\n"
    },
    {
      "commit": "af4798d9c3e32229131fe7d74a61bc81ce4172fd",
      "tree": "fdf7fecb53ffce626040e43b39b23848fb769df7",
      "parents": [
        "a774f5817b5a24f5ccbb15c97fc4d5038310245b",
        "8cfd3c01e4582a587765588c02234527e7808ca0"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Mon Aug 16 15:16:52 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 16 15:16:52 2010 -0700"
      },
      "message": "am 8cfd3c01: am e05184f2: Merge \"Output proguard keep flags for fragment classes.\" into gingerbread\n\nMerge commit \u00278cfd3c01e4582a587765588c02234527e7808ca0\u0027\n\n* commit \u00278cfd3c01e4582a587765588c02234527e7808ca0\u0027:\n  Output proguard keep flags for fragment classes.\n"
    },
    {
      "commit": "561a91824fbfcdae9031fb2cdbb745578a969981",
      "tree": "58ca329e4e7f834396c325019d6254dc70ee7d40",
      "parents": [
        "ae3a1f45951aeb716e1f6b9a99a09838eb55dab4"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Fri Aug 13 13:56:07 2010 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Fri Aug 13 14:06:58 2010 -0700"
      },
      "message": "Output proguard keep flags for fragment classes.\n\nChange-Id: I28c10fbf18b91f8ba3dfc2575cd41215f65f11ec\nBug: 2916847\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": "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": "ed9830999aede5e827b31446f91ad90a37b8bba9",
      "tree": "49c40ace21ad5bd9021a243c8bd8abfdbb785f17",
      "parents": [
        "a0d6b59d875edb54b1c820fd4573552989c3869b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Mar 18 14:14:49 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Mar 18 14:14:52 2010 -0700"
      },
      "message": "Make aapt warning concise\n\nThe previous warning made it seem like it could be using the value\nspecified on the command line, but, in fact, it would ignore the command\nline value if it were already specified in the AndroidManifest.xml\n\nChange-Id: I15e8161e094f17412680d25d3b7b810474eb4a31\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": "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": "83f4c0994fd34f9b35eeb2c14908d9e6c2e15930",
      "tree": "e5932102ec13dae4cdec89244315d7968e70ed33",
      "parents": [
        "687c1330641b614e44c11842b37477666ae63c23"
      ],
      "author": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Thu Mar 04 15:21:59 2010 -0800"
      },
      "committer": {
        "name": "Xavier Ducrohet",
        "email": "xav@android.com",
        "time": "Fri Mar 05 11:11:28 2010 -0800"
      },
      "message": "Fix potential aapt crash when processing overlay.\n\nIf an overlay has a type of resources that\u0027s not defined in\nthe main res pool, then aapt would crash.\n\nThis dynamically create new ResourceTypeSet when needed\nwhen processing the overlays\n\nChange-Id: I67bc3622281bde73cf42f37a0983798d3f658ce2\n"
    },
    {
      "commit": "b0381efaf71e917214cec78ed1c35eb688454e93",
      "tree": "8c9a91dc69a5674319312237eb5374bf8a92eff4",
      "parents": [
        "f6bd0ba6308673a8b6bb9f71dd40a09d11c0d90d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Mar 03 13:36:35 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Mar 03 13:36:35 2010 -0800"
      },
      "message": "Fix issue #2485441: SettingsBackupAgent crashed system server\n\nNeed to take care of fixing up backupAdjust as well as reporting it\nto ProGuard.\n"
    },
    {
      "commit": "abd03658bc4cd925bf89d60f49d0c56351cf08da",
      "tree": "305811d570f2e7fea2e68028dffe8a1fb13ffb02",
      "parents": [
        "d2b41b6e7d23c4d2cb2b0fb58f2bbef94c95b5d1"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 02 14:56:51 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 02 14:56:51 2010 -0800"
      },
      "message": "Fix issue #2482423: Settings is broken due to dead-code stripping\n\nTake care of more custom classes in layouts, and also scan through\npreference XMLs.\n"
    },
    {
      "commit": "ef05e076ced1a32c5c0aaee28403779834adb2ba",
      "tree": "20dcf607adf508481d57610937ceab6ef2c6aee2",
      "parents": [
        "883dbacb12a003f8f46c3faab26b744fdef649a1"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Mar 01 17:43:39 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Mar 01 20:42:14 2010 -0800"
      },
      "message": "Fix issue #2448075: aapt doesn\u0027t fix up activity-alias android:targetActivity links\n\nAnd related:\n\n- The aapt tool now sets a resource configurations sdk level to match any configs\n  that have been set (for example if you specify density your sdk level will be\n  at least 4).\n- New option to modify the targetPackage attribute of instrumentation.\n- Clean up of aapt options help.\n- Fix of UI type values to leave 0 for \"unspecified\".\n- Make the UI mode config APIs public.\n"
    },
    {
      "commit": "7ff20e30c50cf1d47a7eaacd71665a1d2f4ecdc4",
      "tree": "c9af0416cb8e87c61178b63b13d385bcb62af4c5",
      "parents": [
        "74f39d4c172398c96fa3d6dbdec740bc168e60f1"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Feb 24 23:49:59 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Feb 24 23:49:59 2010 -0800"
      },
      "message": "Create own reference for minSdkVersion in aapt\n\nFix bug where applications defining a minSdkVersion were experiencing\ntransient errors from memory corruption in aapt.\n\nChange-Id: I839d5eda7388baac6133e735fa59f9799ca2822d\n"
    },
    {
      "commit": "5a8ec761213d723fc3a6a92250e5e855605046a6",
      "tree": "2b9d6b08297b36efacdf8bdf21c1da8d763e9657",
      "parents": [
        "406b09bbd117446814a05aabc5971fd55c6afa5d"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Feb 24 20:00:03 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Feb 24 20:03:17 2010 -0800"
      },
      "message": "Scan for android namespace in manifest\n\nandroid:minSdkVersion wasn\u0027t being correctly scanned because the\nnamespace was incorrect. This fixes that problem so packages aren\u0027t\ngenerated as UTF-8 when minSdkVersion is less than 7.\n\nChange-Id: I8f45d47ea886915da6a4770f6e111e6085d61bee\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": "2fee0ed6eb99b211efa06f095a41268a2021214a",
      "tree": "bc7ce3df25a1d7ec1f61fb85ef56899dab5eb66b",
      "parents": [
        "7188f946521d64ea21121939d2a4c279f33fe910"
      ],
      "author": {
        "name": "Jeff Hamilton",
        "email": "jham@android.com",
        "time": "Wed Jan 06 15:46:38 2010 -0600"
      },
      "committer": {
        "name": "Jeff Hamilton",
        "email": "jham@android.com",
        "time": "Mon Feb 01 18:47:01 2010 -0600"
      },
      "message": "Add the --rename-manifest-package option to aapt.\n\nIt allows you to force override the manifest\npackage listed in the AndroidManifest.xml when\ncreating an APK file.\n\nChange-Id: I7eac7943c4e56610b65728ae54773a273634fd9d"
    },
    {
      "commit": "15900779058611c1a082724486cb0a49c50ae606",
      "tree": "2200e19624d9ff30ee64f0615b836d95160dba9d",
      "parents": [
        "507354e4ba07e1d8701d747d60414b053eb517b4",
        "6efe03b19e0734361b262f9a0be4d225088d7f9e"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Wed Jan 27 15:53:20 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 27 15:53:20 2010 -0800"
      },
      "message": "am 6efe03b1: am 6f9e2c64: Merge \"Find layout classes in all \"layout-*\" dirs.\" into eclair\n\nMerge commit \u00276efe03b19e0734361b262f9a0be4d225088d7f9e\u0027\n\n* commit \u00276efe03b19e0734361b262f9a0be4d225088d7f9e\u0027:\n  Find layout classes in all \"layout-*\" dirs.\n"
    },
    {
      "commit": "b70efcbbb1ae0672c43da86511daf49d177d8ed8",
      "tree": "271aac9e655c1c0fbf603a16e214c8dbb237ca97",
      "parents": [
        "6d001c0f7a7659d456012c220aed14a891a20a83",
        "3c05f1fbac2ce35483f61dbd5d5bfb6341da6d9c"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Fri Jan 22 09:45:31 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 22 09:45:31 2010 -0800"
      },
      "message": "am 3c05f1fb: am b5fb50a1: Merge \"Add instrumentation as a source tag for proguard keep options.\" into eclair\n\nMerge commit \u00273c05f1fbac2ce35483f61dbd5d5bfb6341da6d9c\u0027\n\n* commit \u00273c05f1fbac2ce35483f61dbd5d5bfb6341da6d9c\u0027:\n  Add instrumentation as a source tag for proguard keep options.\n"
    },
    {
      "commit": "c111296b97d51147f8c9448c7c27b53309ee6f39",
      "tree": "e49323643bb412cc1430df6881f5d2e3ee6cd3c2",
      "parents": [
        "e834722f547d13eaa453464502456892c6225e42"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Wed Jan 20 22:12:46 2010 -0800"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Wed Jan 20 22:12:46 2010 -0800"
      },
      "message": "Find layout classes in all \"layout-*\" dirs.\n\nBefore this CL, the generated keep flags for layout classes are incomplete,\nsuch as layout classes in res/layout-port/ and res/layout-land and so on.\n"
    },
    {
      "commit": "46f4b9827efaceb0ceae49f06130caa2d2b9743e",
      "tree": "45366f6d098210d7222fbd81355661e27591eb2f",
      "parents": [
        "a1d08886ec8549878ad16c19754a3239706fb61b"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Wed Jan 13 14:18:11 2010 -0800"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Wed Jan 13 16:53:07 2010 -0800"
      },
      "message": "Add instrumentation as a source tag for proguard keep options.\n"
    },
    {
      "commit": "ffebd7c2cc267ee0c33378e0c3b3b0ff260ba150",
      "tree": "aa19199bfc924052239a209e8ff694db0ed254cc",
      "parents": [
        "4a4b6e0d4646a0a4bc3cfa76cb37b4c6876dedbf",
        "b4f41119044e5ec7f7b76ed4ac02b5cfbaeb474d"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Jan 12 16:37:31 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 12 16:37:31 2010 -0800"
      },
      "message": "am b4f41119: am a1d08886: Merge \"Only output proguard keep for nonempty attribute name in the AndroidManifest.xml.\" into eclair\n\nMerge commit \u0027b4f41119044e5ec7f7b76ed4ac02b5cfbaeb474d\u0027\n\n* commit \u0027b4f41119044e5ec7f7b76ed4ac02b5cfbaeb474d\u0027:\n  Only output proguard keep for nonempty attribute name in the AndroidManifest.xml.\n"
    },
    {
      "commit": "4199528aab2cbc3ba3c6540670fabb2040c8e081",
      "tree": "903585d3dab0768ef2321d9a22346a1b32c43fd5",
      "parents": [
        "ce63c639e90daafc3382020bb2d9e2b17350f1f0"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Jan 12 16:08:23 2010 -0800"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Jan 12 16:08:23 2010 -0800"
      },
      "message": "Only output proguard keep for nonempty attribute name in the AndroidManifest.xml.\n\nBefore this change, aapt generates proguard keep flags like\n\"-keep class com.android.somepackage.\", which proguard doesn\u0027t recognize.\n"
    },
    {
      "commit": "b5ef7ee1644b099498ddd29c1d051e7ee26ccfd3",
      "tree": "5097c3ed0a1c60a75c93ccac7c43ae4c720f8e68",
      "parents": [
        "05bbeb356286bfb6ddc26ac546cce03334e346dd"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Dec 10 13:52:53 2009 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Dec 10 20:17:33 2009 -0800"
      },
      "message": "Default to UTF8 resources when packaging with aapt\n\nThis change makes it so with API level 7 and above all resources will be\npackaged in UTF-8 format. Any minSdkVersion level that is named will also\nhave resources packaged in UTF-8, because it is assumed that previous\nreleases will only be rebuilt with their proper integer number and only\nfuture releases will temporarily have names.\n\nChange-Id: If5d1ee5e48fbaf31798816b068ac44b14a93121b\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": "832528f92c8d6995318777ead009da20963bcf7a",
      "tree": "1751ed0ae2812c818ec20ea28229665efd66bdf2",
      "parents": [
        "3e59cf7ede6d6c66cbb0b1e1f345cf132972a713"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "robdroid@android.com",
        "time": "Mon Aug 31 14:48:20 2009 -0700"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "robdroid@android.com",
        "time": "Mon Aug 31 14:56:28 2009 -0700"
      },
      "message": "Fix replacement-after-add of resource files in overlay.\n\nAapt was adding/removing elements from a list an continuing to use a stale copy for future indexes.\nThis could cause incorrect subsequent processing.  Add an en resource and modify an es, for example.\nAdding the en would cause the base fileset\u0027s es version to be moved in the list.  Using the old index\nwe\u0027d then attempt to remove the old es version with the wrong index and then add the new es version\ngenerating a \"duplicate file\" error.\n\nbug: 2090015\n"
    },
    {
      "commit": "56d8eeae6f863771d759448d45f7ce75aef73b21",
      "tree": "4eaa45503f60e8a656d5fbc76f47dfcc16c83d68",
      "parents": [
        "1553c82e084ac5763fb393857224145506771b99"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Sun Aug 30 16:54:12 2009 -0700"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Sun Aug 30 16:54:12 2009 -0700"
      },
      "message": "applications are at level 2\n"
    }
  ],
  "next": "1553c82e084ac5763fb393857224145506771b99"
}
