)]}'
{
  "log": [
    {
      "commit": "1c686f2ce6cbfa3fdb598f452aa31d38f3eb2320",
      "tree": "231683457601efdf2050ebc9ae863b99c3f056ed",
      "parents": [
        "c1f9e7c4875e791e108c79382508aab8d171f25f"
      ],
      "author": {
        "name": "Roozbeh Pournader",
        "email": "roozbeh@google.com",
        "time": "Fri Dec 18 14:22:14 2015 -0800"
      },
      "committer": {
        "name": "Roozbeh Pournader",
        "email": "roozbeh@google.com",
        "time": "Mon Jan 04 13:53:54 2016 -0800"
      },
      "message": "Avoid matching system locales in locale negotiation\n\nAlso:\n1. Add AssetManager method for finding non-system locales: This is\nused in per-app locale negotiation. (Normally,\nAssetManager#getLocales() returns both system and non-system\nlocales.)\n\n2. Match pseudolocales correctly in locale negotiation.\n\nBug: 25800576\nBug: 26236938\nChange-Id: I116caf3a91c290deb4ad68b291c65b7035b18dd4\n"
    },
    {
      "commit": "a6d7e3fb9c9233b9ae46b702d17433854c43d6a0",
      "tree": "3b1a5c2f45dd4e56ac320d28edb61525702fb599",
      "parents": [
        "81d74743107b372424fb8f7439357bdd608f8caf"
      ],
      "author": {
        "name": "Tao Bai",
        "email": "michaelbai@google.com",
        "time": "Tue Sep 01 18:49:54 2015 -0700"
      },
      "committer": {
        "name": "Tao Bai",
        "email": "michaelbai@google.com",
        "time": "Tue Sep 08 18:48:42 2015 -0700"
      },
      "message": "Load app resource as shared library.\n\n- Added aapt command line flag --app-as-shared-lib to build app resources\n  that could be loaded as shared lib at runtime.\n- Added new method AssetManager.addAssetPathAsSharedLibrary() to load an\n  app resource as shared library.\n\nBug 22487604\n\nChange-Id: Ib9b33c35f9c2b7129f3ba205de03d4564623ea39\n"
    },
    {
      "commit": "cb7b63d928cd562ea66d10d816056b984f50193a",
      "tree": "0078c4cd3321ca9d533432f7092da58d2a6fa2f0",
      "parents": [
        "96198ebae8deab14b434645f628213db492abdbc"
      ],
      "author": {
        "name": "Mårten Kongstad",
        "email": "marten.kongstad@sonymobile.com",
        "time": "Fri Nov 07 10:57:15 2014 +0100"
      },
      "committer": {
        "name": "Zoran Jovanovic",
        "email": "zoran.jovanovic@sonymobile.com",
        "time": "Fri Nov 07 16:08:22 2014 +0100"
      },
      "message": "RRO: prevent duplicate system overlays\n\nSystem overlays, ie overlays with targetPackage\u003d\"android\", were loaded\ntwice, which caused all sorts of issues. Ensure they are only loaded\nonce, which will be during Zygote initialization.\n\nBug: 17765434\nChange-Id: Ia5064045c77f713c58fb78adc3942f6af1abdc93\n"
    },
    {
      "commit": "7df3625d5bb28d11cce9ac23429f5e3c6ebac030",
      "tree": "432f9013a91bede42c82486575b37507cd66718d",
      "parents": [
        "999d394adee533c55fce38bd632ffd4f1af91362"
      ],
      "author": {
        "name": "Martin Kosiba",
        "email": "mkosiba@google.com",
        "time": "Thu Jan 16 16:25:56 2014 +0000"
      },
      "committer": {
        "name": "Marcin Kosiba",
        "email": "mkosiba@google.com",
        "time": "Thu Jul 17 18:10:02 2014 +0100"
      },
      "message": "Allow for appending of resources to an AssetManager.\n\nBUG: 11505352\nChange-Id: Ifa290580a6dc63c2f471d0bbf5f066db14aed4d7\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": "1cbea39fe1740d7d1c3e4aa0e4771a99a56c79ef",
      "tree": "609e7c7ad6a58d44191de97af33a11d9a5e1c78d",
      "parents": [
        "7594767e55e011101ed9341f01d40730fdbd4cc7",
        "dd3d95f182a634acdcc1b1e8e4954234d048eb54"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Feb 12 14:05:30 2014 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Feb 12 14:08:06 2014 -0800"
      },
      "message": "resolved conflicts for merge of dd3d95f1 to klp-volantis-dev\n\nChange-Id: I96c0f0da852a0b3cf8aef9158678d38aa30f456f\n"
    },
    {
      "commit": "d9e385b111ebf811beb0f29178a2fbd4d667509f",
      "tree": "99be89e7fadb00b002536146ee76ac5d415c5a3d",
      "parents": [
        "4e795ebe1783623a28a988f77b4f0f11d54e73be"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 11 13:56:21 2014 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@google.com",
        "time": "Tue Feb 11 22:47:42 2014 +0000"
      },
      "message": "Fix build.\n\nAt least part of what is broken.  Other stuff still seems to be.\n\nChange-Id: I367dc0377bd5b4e59d9d9b68f3506bf1d64aa591\n(cherry picked from commit 32bb5fae353b5bb6275e75952e89c514c7369cee)"
    },
    {
      "commit": "48d22323ce39f9aab003dce74456889b6414af55",
      "tree": "510aa964078d251874e2c0e7c8556f237b5710c4",
      "parents": [
        "65a05fd56dbc9fd9c2511a97f49c445a748fb3c5"
      ],
      "author": {
        "name": "Mårten Kongstad",
        "email": "marten.kongstad@sonymobile.com",
        "time": "Fri Jan 31 14:43:27 2014 +0100"
      },
      "committer": {
        "name": "Zoran Jovanovic",
        "email": "zoran.jovanovic@sonymobile.com",
        "time": "Mon Feb 03 11:20:30 2014 +0100"
      },
      "message": "Runtime resource overlay, iteration 2\n\nSupport any number of overlay packages. Support any target package.\n\nUPDATED PACKAGE MATCHING\n------------------------\nIn Runtime resource overlay, iteration 1, only a single overlay package\nwas considered. Package matching was based on file paths:\n/vendor/overlay/system/framework-res.apk corresponded to\n/system/framework-res.apk. Introduce a more flexible matching scheme\nwhere any package is an overlay package if its manifest includes\n\n    \u003coverlay targetPackage\u003d\"com.target.package\"/\u003e\n\nFor security reasons, an overlay package must fulfill certain criteria\nto take effect: see below.\n\nTHE IDMAP TOOL AND IDMAP FILES\n------------------------------\nIdmap files are created by the \u0027idmap\u0027 binary; idmap files must be\npresent when loading packages. For the Android system, Zygote calls\n\u0027idmap\u0027 as part of the resource pre-loading. For application packages,\n\u0027idmap\u0027 is invoked via \u0027installd\u0027 during package installation (similar\nto \u0027dexopt\u0027).\n\nUPDATED FLOW\n------------\nThe following is an outline of the start-up sequences for the Android\nsystem and Android apps. Steps marked with \u0027+\u0027 are introduced by this\ncommit.\n\nZygote initialization\n   Initial AssetManager object created\n+    idmap --scan creates idmaps for overlays targeting \u0027android\u0027, \\\n           stores list of overlays in /data/resource-cache/overlays.list\n   AssetManager caches framework-res.apk\n+  AssetManager caches overlay packages listed in overlays.list\n\nAndroid boot\n   New AssetManager\u0027s ResTable acquired\n     AssetManager re-uses cached framework-res.apk\n+    AssetManager re-uses cached \u0027android\u0027 overlays (if any)\n\nApp boot\n   ActivityThread prepares AssetManager to load app.apk\n+  ActivityThread prepares AssetManager to load app overlays (if any)\n   New AssetManager\u0027s ResTable acquired as per Android boot\n\nSECURITY\n--------\nOverlay packages are required to be pre-loaded (in /vendor/overlay).\nThese packages are trusted by definition. A future iteration of runtime\nresource overlay may add support for downloaded overlays, which would\nlikely require target and overlay signatures match for the overlay to\nbe trusted.\n\nLOOKUP PRIORITY\n---------------\nDuring resource lookup, packages are sequentially queried to provide a\nbest match, given the constraints of the current configuration. If any\npackage provide a better match than what has been found so far, it\nreplaces the previous match. The target package is always queried last.\n\nWhen loading a package with more than one overlay, the order in which\nthe overlays are added become significant if several packages overlay\nthe same resource.\n\nHad downloaded overlays been supported, the install time could have been\nused to determine the load order. Regardless, for pre-installed\noverlays, the install time is randomly determined by the order in which\nthe Package Manager locates the packages during initial boot. To support\na well-defined order, pre-installed overlay packages are expected to\ndefine an additional \u0027priority\u0027 attribute in their \u003coverlay\u003e tags:\n\n    \u003coverlay targetPackage\u003d\"com.target.package\" priority\u003d\"1234\"/\u003e\n\nPre-installed overlays are loaded in order of their priority attributes,\nsorted in ascending order.\n\nAssigning the same priority to several overlays targeting the same base\npackage leads to undefined behaviour. It is the responsibility of the\nvendor to avoid this.\n\nThe following example shows the ResTable and PackageGroups after loading\nan application and two overlays. The resource lookup framework will\nquery the packages in the order C, B, A.\n\n        +------+------+-     -+------+------+\n        | 0x01 |      |  ...  |      | 0x7f |\n        +------+------+-     -+------+------+\n            |                           |\n        \"android\"                Target package A\n                                        |\n                       Pre-installed overlay B (priority 1)\n                                        |\n                       Pre-installed overlay C (priority 2)\n\nChange-Id: If49c963149369b1957f7d2303b3dd27f669ed24e\n"
    },
    {
      "commit": "65a05fd56dbc9fd9c2511a97f49c445a748fb3c5",
      "tree": "f832a1d344dc2102ebbf247a46dcd2839761161a",
      "parents": [
        "c064a1b5d9a68bb5513e6ed64a067ab822e98764"
      ],
      "author": {
        "name": "Mårten Kongstad",
        "email": "marten.kongstad@sonymobile.com",
        "time": "Fri Jan 31 14:01:52 2014 +0100"
      },
      "committer": {
        "name": "Zoran Jovanovic",
        "email": "zoran.jovanovic@sonymobile.com",
        "time": "Mon Feb 03 09:47:16 2014 +0100"
      },
      "message": "New command line tool \u0027idmap\u0027\n\nIntroduce a new tool \u0027idmap\u0027 to handle generation and verification of\nidmap files. The tool is modelled on \u0027dexopt\u0027, and is intended to be\nused similarly, notably by \u0027installd\u0027.\nSee cmds/idmap/idmap.cpp for further documentation on \u0027idmap\u0027.\n\nNote: this commit is interdependent on a commit in project build/ to add\n\u0027idmap\u0027 to PRODUCT_PACKAGES.\n\nNote: the changes to androidfw are only stubs. The actual implementation\nwill be provided in Runtime resource overlay, iteration 2.\n\nChange-Id: I7131b74ece1e46c8a9c0a31d103e686aa07da2bb\n"
    },
    {
      "commit": "745d4efc8369d255341d810790132660e33d3b61",
      "tree": "f28ae30721d932409fd8189ac6ef5c0289d106c2",
      "parents": [
        "9fc157a4767f54d1cff53dc9489638b67aec2da3"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Jan 27 11:17:22 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Jan 27 11:20:24 2014 +0000"
      },
      "message": "AssetManager cookies should be int32_t and not void*.\n\nCookies are really indices into vectors and arrays, so\nthey don\u0027t need to be void*. We choose int32_t instead\nof size_t to allow their width to be well specified.\n\n(cherry picked from commit ebfdd0f467e39c3af8d92cade78263935340acb7)\n(cherry picked from commit a7fa2e592e2e579e5acdb903dba83fc074ebc215)\n(cherry picked from commit a9d5701b034ed2d9771b3f0943e1add00741d7cd)\n\nChange-Id: I2aed3db568b6fdc487bf99e2c5dd123206736fda\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": "a982dc05d7ca919c07f50e446549ef9dceadf6bd",
      "tree": "e9b0e1564069bf39447db97b966a01c6dda66609",
      "parents": [
        "54c546223cd550d2995ec6d956a8e7963311a0a6"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 22 18:43:07 2012 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 22 18:43:07 2012 -0700"
      },
      "message": "frameworks/base: move Zip* from libandroidfw to libutils\n\nZipUtils is needed by build/tools, move it from libandroidfw\n(frameworks/base) to libutils (frameworks/native).\n\nChange-Id: I2b4b7adcdf68eb25ee7cba5dd3b69eadf0523af3\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": "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": "08d5b8fad8d46ccb64db2fdcb4d66972ec87bf48",
      "tree": "7e2e67603ec8a2ca164548301b65a2b733df76a0",
      "parents": [
        "091c5238a00ca51dc69b8b09459e6ac88e1eb077"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 04 11:12:40 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 11 00:29:59 2010 -0700"
      },
      "message": "More native work.\n\nImplement save/restore of state, and add native APIs for\nconfiguration information.\n\nChange-Id: I2a3ddc2ba605db58d7c8b2b31b9215fb323f90b5\n"
    },
    {
      "commit": "6cce32b6adbb3a9725fc730ba0e0068a74657e60",
      "tree": "659b099eb08109f3e4e51e184d929f392928e722",
      "parents": [
        "d6343c26b8580f61a257a3045bfa124049201116"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jul 12 18:21:36 2010 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jul 15 14:28:21 2010 -0700"
      },
      "message": "Add native C APIs for working with the Asset Manager\n\nChange-Id: I493b142c4b35e5cc1a1e85283bb5dfb306a6d261\n"
    },
    {
      "commit": "78c405178c57bb45e40f1e2839d6a18d91f7f02c",
      "tree": "6e7137f628b8fff1f72c59e5e42f3f4878e0bb39",
      "parents": [
        "ef1f21b34f5624adb7436d3da927660ed16c97c7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jul 06 11:07:40 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jul 06 11:12:37 2009 -0700"
      },
      "message": "Don\u0027t re-parse the framework resources all the time.\n\nA small optimization to the resource code, to not re-parse the framework\nresources every time we build a new AssetManager.  Instead, you can now\nconstruct a ResTable from a previously created one...  of course, like the\nexisting code for using the data in-place, you can\u0027t delete the original\nResTable until you have deleted the one that has been constructed from it.\n"
    },
    {
      "commit": "bb9ea30ea9e390e69602935571795d2c80dc7b91",
      "tree": "49aa4e0e04f5c3d906149eff4ef6c1b93f3aa9c6",
      "parents": [
        "ce2372de58ad018623748f63e61ffc70c9eb8895"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 18 15:22:00 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 18 15:22:00 2009 -0700"
      },
      "message": "Update aapt badging for native code, configs, density, etc.\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": "54b6cfa9a9e5b861a9930af873580d6dc20f773c",
      "tree": "35051494d2af230dce54d6b31c6af8fc24091316",
      "parents": [],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
