)]}'
{
  "log": [
    {
      "commit": "979e40e9ba02b74226d9833b2f8156aa89a39053",
      "tree": "7d525caa993ae0d4b61bf27acdd2f70d384ff72c",
      "parents": [
        "311fc0b399f01a79169ae69aea05556043a7d7df"
      ],
      "author": {
        "name": "Alexandra Gherghina",
        "email": "alexgherghina@google.com",
        "time": "Thu Sep 25 18:23:13 2014 +0100"
      },
      "committer": {
        "name": "Alexandra Gherghina",
        "email": "alexgherghina@google.com",
        "time": "Mon Sep 29 12:35:03 2014 +0000"
      },
      "message": "Adds the ability to start a user in background\n\nBug: 15900074\nChange-Id: I03b278f8e7a4618ea56a5f1935cfba34beb45981\n"
    },
    {
      "commit": "083b84cf8880bb7f0d2c2dc1b45c7d610656dbd1",
      "tree": "2c83dce383d221eeb4bba0069b2d047424c7a350",
      "parents": [
        "471157821f7b0933c55081ef4625c78f8e798de7"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Mon Sep 22 10:51:09 2014 -0700"
      },
      "committer": {
        "name": "Vineeta Srivastava",
        "email": "vsrivastava@google.com",
        "time": "Thu Sep 25 23:37:12 2014 +0000"
      },
      "message": "bootanimation: allow animation to specify background color\n\nSome OEMs want to have a bootanimation (or parts of it) displayed on a\ncolor other than black. They currently just use full-screen frames for\nthat, which wastes lots of memory and bandwidth. This change allows\neach part of the animation to specify a background color that will be\napplied outside of the frame images; if unspecified the background\nwill be black as it is now.\n\nBug: 16635599\nChange-Id: Ibf008fc75c5aad891c86ba9e4ec0879b7a61b8bd\n"
    },
    {
      "commit": "03fce072cac092923e10a6b5f09fcde333375f9e",
      "tree": "128bdd32a0001add7f2804af68231fedcae4dc3e",
      "parents": [
        "23b113592a5f461ec66026cbf8bce253cb8d3a46"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Wed Sep 24 09:46:57 2014 -0700"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Wed Sep 24 14:35:32 2014 -0700"
      },
      "message": "Allow null queues to be set in MediaSession\n\nAlso add some test code for it to OneMedia.\n\nbug:17593962\nChange-Id: I074e2bb0329d9a97f623e4309bb7dada157b8324\n"
    },
    {
      "commit": "c5bf65aa96bf8b919db9f65dc7419e17c6232e94",
      "tree": "465020b1209a11d4e5fad163a22d9a422a965356",
      "parents": [
        "bd8dfd52e26b2807625168fea811a77fa1827e3e",
        "c48bca50fa64765d3019b0bf82511e030cabcc7a"
      ],
      "author": {
        "name": "Esteban Talavera",
        "email": "etalavera@google.com",
        "time": "Thu Sep 18 18:15:47 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 18 18:15:49 2014 +0000"
      },
      "message": "Merge \"Make dpm command output more test friendly\" into lmp-dev"
    },
    {
      "commit": "c48bca50fa64765d3019b0bf82511e030cabcc7a",
      "tree": "68dd43bbf101e6beb9d743088ebaca45eebdb41b",
      "parents": [
        "41de9bb6fda113f7cfb8b7b8d64d07d3809f8f20"
      ],
      "author": {
        "name": "Esteban Talavera",
        "email": "etalavera@google.com",
        "time": "Thu Sep 18 18:32:45 2014 +0100"
      },
      "committer": {
        "name": "Esteban Talavera",
        "email": "etalavera@google.com",
        "time": "Thu Sep 18 18:32:45 2014 +0100"
      },
      "message": "Make dpm command output more test friendly\n\nAdded \u0027Success\u0027 at the beginning of the command output every time\nit didn\u0027t fail, so that we can easily check the output in tests.\nThe command is brand new, only used by us on CTS tests, so this\nshouldn\u0027t break anybody.\n\nBug: 17312478\nChange-Id: Ie67bf5b2f44e658e7009e5bd87f8cb81be515584\n"
    },
    {
      "commit": "88924b62fc63ecaf6410f1a1d76e9c54cab0ebef",
      "tree": "2bc38690c8dc11c7ac19ad3240f2fb54ec0ea6ba",
      "parents": [
        "0d2d9637ed4f46062d508cfa7da0e9776fc444f8",
        "6cfbb718905210d146fbe8fb18c8e124f24845ec"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Sep 17 23:07:16 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 17 23:07:17 2014 +0000"
      },
      "message": "Merge \"Fix issue #17536024: The am start\u0027s wait option doesn\u0027t...\" into lmp-dev"
    },
    {
      "commit": "6cfbb718905210d146fbe8fb18c8e124f24845ec",
      "tree": "4d7d4045ad5db8a4501fd2a480d63d55e4778d65",
      "parents": [
        "6b5db58f10365b28fe956caabbf1e2948458781b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Sep 17 12:47:35 2014 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Sep 17 12:47:35 2014 -0700"
      },
      "message": "Fix issue #17536024: The am start\u0027s wait option doesn\u0027t...\n\n...give time in some cases\n\nThis switch to multiple stacks broke the check to determine if it\nshould actually wait for a new activity to be shown.  The new check\nnow also requires that the top activity be resumed, which means\nwe may get some false positives where we decide to wait and shouldn\u0027t,\nbut that is better than consistently not deciding to wait in some\ncases when we should.  (And we will always finish waiting then next\ntime something becomes visible).\n\nAlso add another time, which is how long it took from the startActivity\ncall to return with the result.  And fix when we decide to report that\nwe are done so that, in the case where we are bringing an existing\nactivity to the foreground, we don\u0027t wait until its animation is complete.\n\nChange-Id: Id38ca0070f04e7bf8c73e131fb055808553a0e2f\n"
    },
    {
      "commit": "41de9bb6fda113f7cfb8b7b8d64d07d3809f8f20",
      "tree": "5076956deff1cfc717e3d205c71f3b93f90a7a02",
      "parents": [
        "41f766394d07d09113d2e64a6917d069d41026c6"
      ],
      "author": {
        "name": "Esteban Talavera",
        "email": "etalavera@google.com",
        "time": "Mon Sep 15 19:05:48 2014 +0100"
      },
      "committer": {
        "name": "Esteban Talavera",
        "email": "etalavera@google.com",
        "time": "Tue Sep 16 10:24:58 2014 +0100"
      },
      "message": "Add \u0027adb dpm\u0027 subcommand to set profile owner\n\nRequired for GTS tests. Needed to relax the restriction that\nonly root user can run \u0027pm create-user\u0027 as GTS tests can\u0027t\nget root permissions.\n\nBug: 17312478\nChange-Id: I1841286ddf51756c73018c087a5f29afeb5b9f15\n"
    },
    {
      "commit": "8246e815acf316ad7ab7f76bfd1f1d279c3c37be",
      "tree": "fc7f7abbdd9eba991877ea05dbd93e1c70000083",
      "parents": [
        "6b19a00d705429269b197f53fd0fa87e29ba823c",
        "5ab6e0bac2de1688f2f4bb0de2c9964a9b15a4e6"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Sep 15 22:55:52 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Sep 15 22:55:53 2014 +0000"
      },
      "message": "Merge \"Whoops, wait around for pm result.\" into lmp-dev"
    },
    {
      "commit": "5ab6e0bac2de1688f2f4bb0de2c9964a9b15a4e6",
      "tree": "15a737bd1087c0d69f53cf1927c45557916a0bd5",
      "parents": [
        "de74231f245c90e5861ec84a9880b5b4ec247480"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Sep 15 14:50:41 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Sep 15 14:50:41 2014 -0700"
      },
      "message": "Whoops, wait around for pm result.\n\npoll() returns immediately; we want to take() to wait for the result\nto actually arrive.\n\nBug: 17510699\nChange-Id: I87669e79e9941480fed33e4cc8a38de793d59e90\n"
    },
    {
      "commit": "9c17388cff98fba9679ce6457ac5003a660c6013",
      "tree": "4908c6381906e7298eb2a6297e7a2ba09b8570ef",
      "parents": [
        "81e0c8491f22c64300182c652ac2add96888dd2e"
      ],
      "author": {
        "name": "Esteban Talavera",
        "email": "etalavera@google.com",
        "time": "Fri Sep 12 15:48:55 2014 +0100"
      },
      "committer": {
        "name": "Esteban Talavera",
        "email": "etalavera@google.com",
        "time": "Mon Sep 15 11:42:34 2014 +0100"
      },
      "message": "Set device admin on dpm set-device-owner command\n\nBug: 17312478\nChange-Id: I4ef730a97d603352eda77f04a2b00fa97c2be662\n"
    },
    {
      "commit": "71ac935526d29097891664af40c54c96d6de02e6",
      "tree": "6218b042374d49b423b46633845f51e6888600a9",
      "parents": [
        "a409cdba60a3237f6822acfa570e0f66bb67eb34",
        "e980804df16c968c14a56b8853886bf5f049f46e"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Sep 12 18:16:51 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 12 18:16:52 2014 +0000"
      },
      "message": "Merge \"Bring install and install-multiple into parity.\" into lmp-dev"
    },
    {
      "commit": "d09fbafa9242e67450c2f85807a159152d4761c8",
      "tree": "7d22060f5861a49fb5e5f60835920b59e50446cd",
      "parents": [
        "11f72c0d975cc9f3b9b800639c38c15e89e9be66",
        "b5ef162129ced7e9636052af6b7f08d677a01f13"
      ],
      "author": {
        "name": "Esteban Talavera",
        "email": "etalavera@google.com",
        "time": "Fri Sep 12 10:35:42 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 12 10:35:44 2014 +0000"
      },
      "message": "Merge \"Add new adb dpm (\u003d DevicePolicyManager) command\" into lmp-dev"
    },
    {
      "commit": "b5ef162129ced7e9636052af6b7f08d677a01f13",
      "tree": "f099a30cd7116e41a64ef8b94827813bb94a2b9a",
      "parents": [
        "c96e3927657558f0d01626c252cf480624749120"
      ],
      "author": {
        "name": "Esteban Talavera",
        "email": "etalavera@google.com",
        "time": "Mon Sep 08 17:49:01 2014 +0100"
      },
      "committer": {
        "name": "Esteban Talavera",
        "email": "etalavera@google.com",
        "time": "Fri Sep 12 11:33:59 2014 +0100"
      },
      "message": "Add new adb dpm (\u003d DevicePolicyManager) command\n\nAdds new adb command to execute DevicePolicyManager tasks. First subcommand\nallows us to set a device owner on a provisioned device (provided no accounts\nare associated with the device). This is required as GTS tests run on provisioned\ndevices. We plan to add more subcomands required for new GTS tests, such as the\nability to create a managed profile.\n\nBug: 17312478, 17316711\nChange-Id: I2613178ea82a6c6268e7f8012e74c4a852fea0d4\n"
    },
    {
      "commit": "e980804df16c968c14a56b8853886bf5f049f46e",
      "tree": "7b86eadba1751dd5d3c23f33770f9acdfc8ca1d5",
      "parents": [
        "d6adcef917aac893fd82e7628781145693d6187f"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Sep 11 21:15:37 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Sep 11 21:24:00 2014 -0700"
      },
      "message": "Bring install and install-multiple into parity.\n\nThis ensures that both are using (almost) identical logic when\ndeciding what installs to proceed with.  Installs from \"pm\" for all\nusers now run as OWNER, and rely solely on INSTALL_ALL_USERS to\nexpress intent.  This keeps install session notifications simple.\n\nSince installer UID can vary from installer package name, start\npersisting the UID.  Also parse some missing flags for install\nsessions.\n\nBug: 17469392\nChange-Id: I6d89b1a787aa2024cc4bebf6b9c29317c358e147\n"
    },
    {
      "commit": "c46cd62b5c808101a204be6a5db2bf63701c8944",
      "tree": "d3deacb467cfcab1b2800ba9591ab9d7cd2db3e8",
      "parents": [
        "c946e9ab465fd363dc996efbffcf58f354266aaa",
        "00c0cd4a24bd0f040055f9e786e2df1fa3b7d2d3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 11 22:28:41 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 11 22:28:43 2014 +0000"
      },
      "message": "Merge \"Clean entire arg block when setting process name.\" into lmp-dev"
    },
    {
      "commit": "00c0cd4a24bd0f040055f9e786e2df1fa3b7d2d3",
      "tree": "87654f391f5e9dca11fd5e84901545890d3d5b16",
      "parents": [
        "98ff7bce66f03da14e39fa7e532a7202bde7dce6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 10 16:48:46 2014 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 11 14:19:52 2014 -0700"
      },
      "message": "Clean entire arg block when setting process name.\n\nWhen Android processes fork from Zygote, we rewrite the command line\nwith a new name, eg. \"system_server\".  When we do this, we should\nfill the entire block with zeros to remove corrupted argument\ninformation that may otherwise remain in the /proc/\u003cpid\u003e/cmdline buffer\nand be seen in tools and stack dumps.\n\nFixed an issue where VM options could be overwritten after setting\nthe nice name if the name was too long.\n\nBug: 17474152\nChange-Id: Ie6cf9ed7752a04300a340e26cd6812bb35c59e1b\n"
    },
    {
      "commit": "f58e532e015ef31d879ee51aeeb251349784717c",
      "tree": "8a1ab40c5c14943b12da70c5c70bbde48fc65bd1",
      "parents": [
        "c96e3927657558f0d01626c252cf480624749120",
        "8cd28b57ed732656d002d97879e15c5695b54fff"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Sep 11 16:46:33 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 11 16:46:34 2014 +0000"
      },
      "message": "Merge \"Apply cross-user restrictions to Shell\" into lmp-dev"
    },
    {
      "commit": "8cd28b57ed732656d002d97879e15c5695b54fff",
      "tree": "33f02a0e243e5c3d8889862c26af5accc0e4e98b",
      "parents": [
        "da6e6c888f81d3bd19ff1f3cf9b081b7f9b2a013"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sun Jun 08 17:54:27 2014 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed Sep 10 17:15:06 2014 -0700"
      },
      "message": "Apply cross-user restrictions to Shell\n\nEven though Shell user is allowed to perform cross-user actions,\nlock that path down if the target user has restrictions imposed by\nthe profile owner device admin that prevents access via adb.\n\nIf the profile owner has imposed DISALLOW_DEBUGGING_FEATURES, don\u0027t\nallow the shell user to make the following types of calls:\nstart activities, make service calls, access content providers,\nsend broadcasts, block/unblock packages, clear user data, etc.\n\nBug: 15086577\nChange-Id: I9669fc165953076f786ed51cbc17d20d6fa995c3\n"
    },
    {
      "commit": "65e76d1200395a9c67893378ddb64c47ede400b4",
      "tree": "198c2f2a9163870d75453753ccadbca2dc34c7c2",
      "parents": [
        "05c4f7ad765e2178e6e28676fd3438d2aaa38894"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Sep 09 17:28:03 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Sep 10 15:02:59 2014 -0700"
      },
      "message": "Output recent configs in am get-config command\n\nChange-Id: Ic516e73d2e72ac0dc3136f7226cedd851fe22b85\n"
    },
    {
      "commit": "dda003ffa84f986bfaba4344124eafa533f5039d",
      "tree": "649b390602e2efe8abad283fcdd04f285cfaff40",
      "parents": [
        "551056ec0fd274f4696c2cf1ec9c62298f7f7226"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Aug 28 18:06:51 2014 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Aug 29 10:28:38 2014 -0700"
      },
      "message": "Clean up apks installed for a removed user\n\nWhen a user is removed, enumerate through all installed packages\nto see if any of them are not installed for any user. Delete the\npackage if no user has it \"installed\".\n\nAdded a pm option to install an apk for a specific user.\n\nFixed a crash in UserManagerService when executing the above\ncleanup - dying users generate a null UserInfo.\n\nBug: 15426024\nChange-Id: I571decde1ae1c257d0da6db153b896aad6d6bcb4\n"
    },
    {
      "commit": "55471dcd0f843e79d8665c63165720eca6a9c980",
      "tree": "8c0c3defbd934c122861a5895d80ec7f5cd1f59e",
      "parents": [
        "371bee50f9b2e2f293bb1e1e11872ef1bd69d155"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Aug 27 15:39:17 2014 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Aug 28 17:02:37 2014 -0700"
      },
      "message": "Change /dalvik-cache to be owned by root.\n\nBug: 16875245\n\n(cherry picked from commit 79bf4007f559e194205f632b23d2bfb6f8d1e7ba)\n\nChange-Id: I29a70215a2207bc4e0db02ab751d32a68edf4b66\n"
    },
    {
      "commit": "1b012d302b56b4adf950035136d1d191a1936d5a",
      "tree": "4b6fc0a3e89f7a2251680e7e13f7211a8dff7ba2",
      "parents": [
        "987eb9734445bd92f6925b596b9b0ece90ad70b8"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Aug 20 10:35:34 2014 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Aug 26 15:54:25 2014 -0700"
      },
      "message": "Add sample profiling option to am.\n\nAlso bundles all profiling options into a class.\n\nBug: 17040932\nChange-Id: I85d675ee1494bdc7308caffdf94145d27c996e9d\n"
    },
    {
      "commit": "941a8ba1a6043cf84a7bf622e44a0b4f7abd0178",
      "tree": "c783987f68caaa4cc827b3c720f269bcc9d34667",
      "parents": [
        "7653a30ea0232ab8323ec51ddcba8d8054ca8a2f"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Aug 20 16:26:32 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Aug 22 16:25:04 2014 -0700"
      },
      "message": "Installing splits into ASECs!\n\nSessions can now zero-copy data directly into pre-allocated ASEC\ncontainers.  Then at commit time, we compute the total size of the\nfinal app, including any inherited APKs and unpacked libraries, and\nresize the container in one step.\n\nThis supports both brand new ASEC installs and inheriting from\nexisting ASEC installs.  To keep things simple, it currently requires\ncopying any inherited ASEC contents, but this could be optimized in\nthe future.\n\nExpose new vold resize command, and allow read-write mounting of ASEC\ncontainers.  Move native library extraction into the installer flow,\nsince it needs to happen before ASEC is sealed.  Move multiArch flag\ninto NativeLibraryHelper, instead of making everyone pass it\naround.  Migrate size calculation to shared location.\n\nSeparate \"other\" package name in public API, provide a path to a\nstorage device when relevant, and add more docs.\n\nBug: 16514385\nChange-Id: I06c6ce588d312ee7e64cce02733895d640b88456\n"
    },
    {
      "commit": "b5cf61be7c82392a6f34f53d97c8382d9a0f0b3a",
      "tree": "a84b0ccffe67fc2e5a671ca2142269e15802c9b0",
      "parents": [
        "d504ab14d264e340fac9422b84b5f3c677d87c5f"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Aug 18 16:10:28 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Aug 19 11:27:19 2014 -0700"
      },
      "message": "Add Shell command to set AppOps permissions\n\nChange-Id: I6446543b27f0d2d2e69590a2807e713c6d5ccbbc\n"
    },
    {
      "commit": "3e3b251f46f6ec46a41d42eb7c36a6268096c70d",
      "tree": "0e331663d4f7ce20312e9a451c35a23f05011d4b",
      "parents": [
        "78fc9220d4f99332370c1294dd865703db2f2ae0",
        "a0907436c01fd8c545a6b5c7b28bc3bc9db59270"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Aug 15 23:05:33 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 15 18:56:10 2014 +0000"
      },
      "message": "Merge \"PackageInstaller API refactoring.\" into lmp-dev"
    },
    {
      "commit": "a0907436c01fd8c545a6b5c7b28bc3bc9db59270",
      "tree": "6c2dd0946fd4483de652551aa272086d7bb0b3a4",
      "parents": [
        "82d6d337b389ef088879a5e527d44c75c41c5b44"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Aug 15 10:23:11 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Aug 15 15:57:02 2014 -0700"
      },
      "message": "PackageInstaller API refactoring.\n\nSwitch to using IntentSender for results to give installers easier\nlifecycle management.  Move param and info objects to inner classes.\n\nBug: 17008440\nChange-Id: I944cfc580325ccc07acf22e0c681a5542d6abc43\n"
    },
    {
      "commit": "78c64cdbd82a4d8feb7faf43109b86ab87252dd1",
      "tree": "501c72368cab17c769900fec88798f3aeb80e1c4",
      "parents": [
        "1d2a1c917f46b6854e91f9867a20abb76ecb794d"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Thu Aug 14 18:42:09 2014 -0700"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Thu Aug 14 18:42:54 2014 -0700"
      },
      "message": "Fix crash in legacy apps that register without a looper\n\nSome legacy apps registered their media button receiver in a thread\nwithout a looper. If this happens we need to use the main looper to\nprevent a crash.\n\nbug: 16306226\nChange-Id: Idf472e649393e2a7ce2a3e1cbb3476003ab17f34\n"
    },
    {
      "commit": "b05ea7bb2866035105707e22a977b010ef5062b2",
      "tree": "7a9e3b7ff8fba755ab66dbdfaa8191506627d337",
      "parents": [
        "e7ba237ce425824e2065f0d65cdc419e15974dc5",
        "24762bffc3358762666079cd802040a316b3260d"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Thu Aug 14 17:03:19 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 14 16:10:21 2014 +0000"
      },
      "message": "Merge \"Add an onSessionDestroyed callback to MediaController.Callback\" into lmp-dev"
    },
    {
      "commit": "24762bffc3358762666079cd802040a316b3260d",
      "tree": "5035aae100709592b619f8c73eb24450af6c6180",
      "parents": [
        "b3cca876c2e11b865cb4f83abe2c48a60b95af5b"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Wed Aug 13 15:00:21 2014 -0700"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Wed Aug 13 15:00:21 2014 -0700"
      },
      "message": "Add an onSessionDestroyed callback to MediaController.Callback\n\nCallbacks on the controller need to know when the session ceases\nto exist.\n\nbug:17009030\nChange-Id: I0f1c1cfc51f7dd2203955287cc269667d3765ee4\n"
    },
    {
      "commit": "4903f64ba2478849e6c401f42f5a77c1d4f9f7df",
      "tree": "ace15042e8025593f37f0f87444d60120e623c22",
      "parents": [
        "dd0b7d083fd7a176c8cba151469d34ec69803a70"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Aug 11 13:33:45 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Aug 13 12:41:19 2014 +0100"
      },
      "message": "Persist the cpuAbiOverride setting.\n\nIf an app is installed with an ABI override (adb install -r --abi)\nwe should remember this so that we don\u0027t revert to the scan derived\nABI on the next reboot.\n\nbug: 16476618\n\nChange-Id: I6085bc0099eb613dd9d3b07113c7c13859780697\n"
    },
    {
      "commit": "fbd0e9fa37fc17ccd25e4c1f16195bbd27de3c4c",
      "tree": "fb67a6cbd7f3b39bd82f22f1763a83c776fb08d6",
      "parents": [
        "905857f1b8708b1a7cf60a5e6b934b75ac6aea77"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Aug 06 16:34:34 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@google.com",
        "time": "Thu Aug 07 00:23:54 2014 +0000"
      },
      "message": "Surface user action events when un/installing.\n\nThis will be used shortly to connect up with permissions\nconfirmation UI.\n\nBug: 16515814\nChange-Id: If28cecc28549900d960ac107a1fba0b10ce5bd7b\n"
    },
    {
      "commit": "75847b98f39e521a57042c50e69be9e142788d32",
      "tree": "b86d2a0657fc34724ac0a48a378833d51855263b",
      "parents": [
        "b0d767dcf17dd393646b8fc3e8c9f46dfe12e230"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Tue Jul 29 13:10:17 2014 -0700"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Tue Aug 05 14:30:27 2014 -0700"
      },
      "message": "Add display metadata and change strings to CharSequences\n\nThis adds some fields for display purposes to MediaMetadata and also\nmakes the default for all text CharSequence instead of String. Also\nadds a hidden method for getting a Description for the metadata.\n\nbug: 11708293\nChange-Id: I0ed58d9ac3aeff41325c4ccf5fed0539bbf03b4d\n"
    },
    {
      "commit": "976e8bd2017d0263216c62111454438cc0f130e3",
      "tree": "5cf592fb85841f9e41d3bf6b43422641c3609ab2",
      "parents": [
        "c79eabcd3c6306bb2ec75f9584b79e661f265127"
      ],
      "author": {
        "name": "Svetoslav",
        "email": "svetoslavganov@google.com",
        "time": "Wed Jul 16 15:12:03 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Aug 05 20:57:20 2014 +0000"
      },
      "message": "Allow adding widgets from user profiles.\n\nThe goal of this change is to enable support for appwidget from\nuser profiles to the user main profile. A user profile is a user\nwhich is associated as a child of the main user profile. For example,\na user may have a personal (parent) and corporate (child) profile.\nThe device policy should be able to control whether adding a widget\nfrom a child profile and given packages is allowed. This change\nassumes that all packages from managed profiles are white listed.\nAnother change will add the device policy changes.\n\nChange-Id: I267260b55d74c48b112a29979a9f59eef7a8194e\n"
    },
    {
      "commit": "1cb2d0d4bba387665128c62c342e59103ea4be26",
      "tree": "2659fda22f585adf01574c24f1f23dbb3caccef2",
      "parents": [
        "874bcd82c223ce58c9d76edcf619b3988c672307"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Jul 30 16:45:01 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Jul 31 15:17:03 2014 -0700"
      },
      "message": "Persist install sessions, more lifecycle.\n\nTo resume install sessions across device boots, persist session\ndetails and read at boot.  Drop sessions older than 3 days, since\nthey\u0027re probably buggy installers.\n\nAdd session callback lifecycle around open/close to give home apps\ndetails about active installs.  Also give them a well-known intent\nto show session details.\n\nExtend Session to list staged APKs and open them read-only, giving\ninstallers a mechanism to verify delivered bits, for example using\nMessageDigest, before committing.\n\nSwitch to generating random session IDs instead of sequential.\n\nDefensively resize app icons if too large.  Reject runaway\ninstallers when they have too many active sessions.\n\nBug: 16514389\nChange-Id: I66c2266cb82fc72b1eb980a615566773f4290498\n"
    },
    {
      "commit": "031149cd5f22bd858142633c7a763450f42793f7",
      "tree": "2a405fc0c7cae702e5d85eeb3979d560f6caca99",
      "parents": [
        "aa4e23bbb36994708ba72c5f4c83255025d99e07"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Fri Jul 25 16:00:52 2014 -0700"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Mon Jul 28 11:02:15 2014 -0700"
      },
      "message": "Add context to MediaController constructor\n\nThis also adds a convenience method to MediaSession to allow getting\na controller instead of having to create and cache your own.\n\nbug:16561220\nChange-Id: I87f551a7474e71f1cf2f07e0e541c3a4515cd977\n"
    },
    {
      "commit": "aa4e23bbb36994708ba72c5f4c83255025d99e07",
      "tree": "ba6776a3c108a1a31351c212abfb1ba800f34a15",
      "parents": [
        "b214efbb9170a9f6a4991684a63ca59680074cc7"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Thu Jul 24 18:35:11 2014 -0700"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Fri Jul 25 16:22:59 2014 -0700"
      },
      "message": "Add getPackageName to MediaController\n\nThis removes the MediaSessionInfo class and adds a method on the\ncontroller to get the package name. This also converts code that\ndepended on the session\u0027s UUID to use the token for comparison or\nthe Tag in the case of test code that needs a string identifier.\n\nChange-Id: Icb8dc76c70e23e897da8fd07651c524b96372bf9\n"
    },
    {
      "commit": "20e0c50f601e5930a246d4556118423a49c12ca1",
      "tree": "02e5ab04fff88af15912830344c8ddff9774f25f",
      "parents": [
        "a753f4c6cb8558795e673df1896532cd148781e2"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Jul 25 14:09:37 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@google.com",
        "time": "Fri Jul 25 21:11:47 2014 +0000"
      },
      "message": "Offer force-dex-opt when running as root.\n\nRecently we removed the PackageManager inotify triggers, meaning the\nonly supported ways of installing apps were:\n\n-- adb install -r Foo.apk\n-- adb shell stop \u0026\u0026 adb sync \u0026\u0026 adb shell start\n\nIterating on most system apps (like Settings) can use the first\napproach, but it doesn\u0027t work for \"persistent\" processes like\nSystemUI.  (ActivityManager is very particular about how it deals\nwith persistent apps, and it always sticks with the first\nApplicationInfo found at boot.)\n\nSo to enable rapid iteration on persistent apps, we now offer the\none missing piece of forcing a dexopt with a new pm force-dex-opt\ncommand only available to -eng or -userdebug builds.  Typical use\nfor iterating on persistent apps now looks like this:\n\n$ mmm frameworks/base/packages/SystemUI/ \u0026\u0026 adb sync \u0026\u0026\n    adb shell pm force-dex-opt com.android.systemui \u0026\u0026\n    adb shell kill `pid systemui`\n\nYay!\n\nChange-Id: I0ae2467f1d7cda56c70ba20953cd25fa8ee766ff\n"
    },
    {
      "commit": "16c8e3f49497b6046972ae650772f65768366be8",
      "tree": "56ad5dc58ab923e35029d25430d30bc77b218994",
      "parents": [
        "186655285fb5deafc4d56ca8efad2d115dfd6af3"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Jul 24 17:08:17 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Jul 25 11:59:48 2014 -0700"
      },
      "message": "PackageInstaller changes based on feedback.\n\nMostly cosmetic changes from API council feedback.\n\nBug: 16543552\nChange-Id: Ic926829b3f77c31f50a899c59b779353daf00d59\n"
    },
    {
      "commit": "b9583c9d93bd1d2c9d506dffae87a5ca2b7f7307",
      "tree": "42d7b26e9fcc1df8db992f4428d675a91f092c83",
      "parents": [
        "ccf9fca47149d102293668c2e81febc175e0329e"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jul 24 17:03:22 2014 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Fri Jul 25 00:30:07 2014 +0000"
      },
      "message": "Turn on debugging override of idle time\n\n\u0027adb shell am idle-maintenance\u0027 has traditionally been used to force\nthe system to consider itself to be in an \"idle\" state.  Unfortunately\nthe new Job Manager hadn\u0027t yet been aware of this.  Rectify the situation.\n\nAlso fixes a bug in debug logging that would cause a system server\ncrash under certain race circumstances.\n\nChange-Id: I8a29bd7757924f8e464865235c344233fc03d8c3\n"
    },
    {
      "commit": "be19c3a91a11508bd12e3355f3b1d9adf7f53194",
      "tree": "905c591f5289e2342a8290bbc6cc1d96e5acf0db",
      "parents": [
        "52ff21d841ad5b39b6def0c286a737fd4b74b2e2"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Mon Jul 21 23:46:05 2014 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Jul 23 02:25:25 2014 +0000"
      },
      "message": "Adding shell commands for grant/revoke of bind app widget permisison.\n\nTesting the app widget APIs requires binding of widgets which is guarded\nby a system signature permission or white listing. Since CTS tests can\nnot be signed with the platform certificate, they should be able to\ntemporariliy white list their package. This command adds the ability to\ngrant and revoke the provilege to bind app widgets to a given package.\n\nChange-Id: I6de1bbf27ac684ec47e61157f19ec6d29e2db979\n"
    },
    {
      "commit": "e5bcff624fb58b6f95be8ddff7f5b6b3bf5d19c7",
      "tree": "0a758d1029f2b8aed41a089330c7fa79564a6a32",
      "parents": [
        "c2ae1a6b455d97c4e89e2bf7b113435dd63bb36f"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sat Jul 19 15:44:09 2014 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Mon Jul 21 22:18:40 2014 +0000"
      },
      "message": "Rename setApplicationBlocked to setApplicationHidden\n\nThis corrects the expected behavior of the app state. Hidden apps\ncan be installed by the store to be brought out of hidden state.\n\nBug: 16191518\nChange-Id: Id128ce971ceee99ba1dea14ba07ce03bd8d77335\n"
    },
    {
      "commit": "9a445771f57dd15b06db0dbefd66c368d84eec2d",
      "tree": "d418591835aec7c22724e49e0a8681efea5fc39c",
      "parents": [
        "4990e4f0e3d493036e99e1f5fb893635a9b66eb1"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Jul 16 11:32:08 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Jul 16 13:38:09 2014 -0700"
      },
      "message": "Install sessions only inherit APK files.\n\nAlso track historical install sessions for debugging purposes.  Hide\nsignature verification API for now.  Clear code cache only after\nkilling the app being upgraded.\n\nBug: 14975160\nChange-Id: I52fc7f11d2506f792236d8a365c8cfed21b46c30\n"
    },
    {
      "commit": "8b4bffcac996b4083e720310a09d315ca1c4a000",
      "tree": "56726422a371d15b204756f80bce5e487d1ed318",
      "parents": [
        "54892c8b813eb2de3c5c6bcd08c90b8dd0abbec8"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Thu Jul 10 13:48:01 2014 -0700"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Wed Jul 16 12:03:45 2014 -0700"
      },
      "message": "Make MediaSession and MediaController constructors public\n\nThis makes the MediaSession/Controller constructors public and registers\nwith the system behind the scenes.\n\nThis also adds a bit about needing to call setActive(true) to start receiving\ncommands in MediaSession\u0027s docs.\n\nChange-Id: If882d229b54c36bf0831aca0255052dda667a2bc\n"
    },
    {
      "commit": "69ea974f1712c83a9ad194187237edf1169f9064",
      "tree": "c8d768527b58502da7b575b86ffa1b343044c9e2",
      "parents": [
        "969167dc05a6485a32d160895871cff46fd81884",
        "6c833e07a05c48ca60ee4d72421bf8b1e78dc710"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Jul 15 06:16:37 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 15 00:41:06 2014 +0000"
      },
      "message": "Merge \"Public API for PackageInstaller!\" into lmp-dev"
    },
    {
      "commit": "6c833e07a05c48ca60ee4d72421bf8b1e78dc710",
      "tree": "f16f3c2a12dea6fd5131d82d007fd75cd61fb915",
      "parents": [
        "5c6a8e322227354acbded5c49f44c0b289021bf5"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Jul 14 22:44:30 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Jul 14 23:06:52 2014 -0700"
      },
      "message": "Public API for PackageInstaller!\n\nFlesh out documentation and finalize first cut of API.  Also surface\ninstallLocation and splitNames through PackageInfo.\n\nBug: 14975160, 15348430\nChange-Id: Ic27696d20ed06e508aa3526218e9cb20835af6a0\n"
    },
    {
      "commit": "ad11eb52fe62b6696df2194cb9e176f7d799e844",
      "tree": "440f9699b759d4b14b20a9280234d352faf2b0ce",
      "parents": [
        "5c6a8e322227354acbded5c49f44c0b289021bf5"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sun Jul 13 17:33:07 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Jul 14 10:57:04 2014 -0700"
      },
      "message": "Pass install result message; path selection.\n\nOops, forgot to include message argument to invoke the new-style\ncallback.  Also use more robust way of generating cluster APK\ndirectory names, and add more logging details on rename failure.\n\nChange-Id: Ifa8abdd1db58b73e13b9a8077ec126cf20a0d90e\n"
    },
    {
      "commit": "01a500ed1c6ae3fff66678144ae637aa8cad0ecc",
      "tree": "579571453290b6824da22fa9748286bfc3acb727",
      "parents": [
        "9fb7b07c6cbdd1c6f394bfc456ccc034619b6727"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 10 22:50:50 2014 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 14 04:06:44 2014 -0700"
      },
      "message": "Delete first draft of media routing APIs.\n\nThe new APIs will not be as tightly integrated into MediaSession.\n\nChange-Id: I5cfd37d9d8d0c5d46c55edb5cf0772a8f1ef13ab\n"
    },
    {
      "commit": "a10311434778ea1be1621c2251c0c8c2966f337b",
      "tree": "3496202e354ae761d7c750e105c610f67f82542d",
      "parents": [
        "e0b0bef75b66f0a87039c8f58c17b1596a2baebe"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sat Jul 12 18:09:46 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sat Jul 12 21:12:25 2014 -0700"
      },
      "message": "Package installation listener events.\n\nFlesh out implementation of install session observers.  Carve out 20%\nof published install progress for final system operations such as\ndexopt, etc.\n\nAdd dumpsys output for active install sessions.  Create explicit\nfsync() instead of overriding meaning of flush().  Hack to throw\nIOExceptions over Binder calls.\n\nBug: 14975160, 15348430\nChange-Id: I874457e40c45d2661bc0a526df9285ffea4bb77c\n"
    },
    {
      "commit": "bb580670350b76fa2fcc5ee873f99b7970759cbf",
      "tree": "b4e22eeaaf299d9c5b2272a292fe9117e94bc0b3",
      "parents": [
        "4901d62f1629ef5b9fb4c821e5fafbbfde4b8a47"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Jul 10 12:10:25 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Jul 11 16:54:49 2014 -0700"
      },
      "message": "Progress toward installer public API: callbacks.\n\nInstead of surfacing all the existing cryptic error codes, we\u0027re\ngoing to classify them into broad categories when surfacing through\npublic API.  This change introduces InstallResultCallback and\nUninstallResultCallback, and wires them up to existing AIDL\ninterfaces.\n\nAlso start defining general SessionObserver for apps interested\nin general progress details, such as Launcher apps.  Details about\nactive sessions are returned through new InstallSessionInfo objects.\n\nBug: 14975160\nChange-Id: I068e2b0c30135f6340f59ae0fff93c321047f8f9\n"
    },
    {
      "commit": "ec55ef0934b8e0d1bb705434947de817f7be57f1",
      "tree": "4855af37aa2c312bc2a645f5d94c463a2859d516",
      "parents": [
        "2cfc8482267707a671cbe4275ea8927c1aef991a"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Jul 08 11:28:00 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Jul 09 16:55:56 2014 -0700"
      },
      "message": "Extend pm to support sessions and split APKs.\n\nSeparate commands to create an install session, stream files into the\nstaging area, and then commit the install.  Streaming can accept data\nfrom stdin across adb, avoiding extra copy from push.\n\nExtend FileBridge to support blocking close().  Always destroy\nsession regardless of result.\n\nBug: 14975160\nChange-Id: Ic3f462e7d1901079b785e210228950cdfa676466\n"
    },
    {
      "commit": "513a074de68a4772a9900e90f38e74ff92c15e7c",
      "tree": "410c98a83b684a34063903496863247c303cb5cb",
      "parents": [
        "8d479b0c2ddb150182bcf510876a240cb869661b"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Jul 08 17:10:32 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Jul 08 17:41:29 2014 -0700"
      },
      "message": "Clean up IPackageManager install surface area.\n\nAlso more removal of encryption support.\n\nChange-Id: If525dc5a8422134515f225a8ac4731e968069468\n"
    },
    {
      "commit": "42a1d08df7d417fd4e67eabc91ff05ee77fd9995",
      "tree": "7bfa7e66b153087c56b19c6dd8b340e0ea2ddb42",
      "parents": [
        "95f621a1a4a0891075f1f9daf8e0323aab488793"
      ],
      "author": {
        "name": "Mike Reed",
        "email": "reed@google.com",
        "time": "Mon Jul 07 18:06:18 2014 -0400"
      },
      "committer": {
        "name": "Mike Reed",
        "email": "reed@google.com",
        "time": "Mon Jul 07 18:11:24 2014 -0400"
      },
      "message": "SkBitmap::Config is deprecated, use SkColorType\n\nChange-Id: Ida181d2aac760072cf2d01409edac37699dea216\n"
    },
    {
      "commit": "ab225b301b8b13a141053a33d5dd5eeccfc69887",
      "tree": "e79e890866f6002fb9656ade335cc6bd4b31d812",
      "parents": [
        "7218e9c6beaa066237c6b2aac6d10dd7dc84e0a2"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Jun 24 16:28:48 2014 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Jun 24 16:52:09 2014 -0700"
      },
      "message": "Add \u0027fullbackup\u0027 to bmgr\u0027s usage statement\n\nAlso make it handle the list of packages to be backed up as a single\nmultiple-app argument to fullTransportBackup() rather than N calls\neach backing up one app.\n\nChange-Id: I9fe4d5caca54fafef70ffe9af4c26e3941dc5d26\n"
    },
    {
      "commit": "b933055cf3f7f8ea89bfd3bc9c37a3891ff7310a",
      "tree": "7d68b96a6fd02ca6ece664d5c53ee9778ef49d17",
      "parents": [
        "9285d1bf9c57e5f1da8f8d8ef7a6a38b2f0e4ec3"
      ],
      "author": {
        "name": "Mike Reed",
        "email": "reed@google.com",
        "time": "Mon Jun 16 17:31:48 2014 -0400"
      },
      "committer": {
        "name": "Mike Reed",
        "email": "reed@google.com",
        "time": "Fri Jun 20 10:28:37 2014 -0400"
      },
      "message": "stop using (deprecated) SkBitmap::Config\n\nChange-Id: Ic75b5fc6996578e9d95bd3a220439ec1541d7c3b\n"
    },
    {
      "commit": "d3c8642dae9a1f6db60e2f8e5c7b32cd1b3169df",
      "tree": "8bad91681f0c47e401482db95f630ed6edf4d139",
      "parents": [
        "150bfcd73d53cd824b4ab20161a3d87710ce259b"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Mon Jun 16 14:00:48 2014 -0700"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Thu Jun 19 10:37:00 2014 -0700"
      },
      "message": "Remove some more old code and fix Media command\n\nRemoves some more hidden apis from AudioService/Manager. This also\nfixes up Media.java to support commands for the new service to help\nwith debugging. Also fixes a couple bugs that were found while fixing\nup Media.\n\nChange-Id: I68e4aa80a4de430b98236aafc883664b9432c62b\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": "8a4c9721a9e09d20c63381c13fa29bd9f7cbc3e3",
      "tree": "b2564620026c0ca6081de864b20ac1d5e6827135",
      "parents": [
        "564054146e7286b0d046591c0bd3195b0e4a6cf3"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Jun 16 13:48:42 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Jun 17 14:38:44 2014 -0700"
      },
      "message": "Plumb split APKs into public API.\n\nIntroduces new ApplicationInfo fields to surface zero or more split\nAPKs for an application.  Splice these APKs into both the class\nloader and resource system.  Cleaner building of these paths.\n\nRun dexopt() on all split APKs found after a parse, and populate\ninto ApplicationInfo.\n\nChange-Id: I4a376bf4492d84ea95aafa866e106ea43a43e492\n"
    },
    {
      "commit": "afc00e1c81a2ae00dc01bb980bc617f382441102",
      "tree": "116ff9d9668e3209f3950264f2c66b1474d10852",
      "parents": [
        "e54a764cfd83825096edd55dd22cc7b3a6af45da"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jun 17 10:44:05 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Tue Jun 17 20:27:39 2014 +0000"
      },
      "message": "Change am get-config command to use ABI string array\n\nThere is a list of supported ABIs in android.os.Build which\nis ordered by preference. This is a more flexible list to use\ninstead of 2 fixed ABIs.\n\nChange-Id: I6aa3b39b5ffa888ed83a870b937e18328dd6de39\n"
    },
    {
      "commit": "2c749d242759ea36c0229ea933f22b6363337b19",
      "tree": "26f9c01de17f8fca123212e2946e4093d8b9f819",
      "parents": [
        "b69fc08303af782539d09d1775e6f63d4ccad3a1"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Wed Jun 04 13:00:29 2014 -0700"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jun 16 23:01:19 2014 +0000"
      },
      "message": "New command to get device config\n\nChange-Id: I7172a3a150fd83e2382ca3e4e4a0188758189f14\n"
    },
    {
      "commit": "9ff53a7100b1a40f5d2df3eb19a2f3f2fff39a46",
      "tree": "162c23a51e116f9506e7d6801236dd2e2c8f3788",
      "parents": [
        "ad60891a6ecaf2a5815677b33e96afe7f49ee113"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Tue Jun 03 17:20:07 2014 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Sun Jun 15 17:35:33 2014 -0700"
      },
      "message": "Implement full data backup through transport\n\nCurrently no timed/scheduled full-data backup operations are\nperformed by the OS, but the plumbing is now in place and can\nbe tested using \u0027adb shell bmgr fullbackup pkg [pkg2 pkg3 ...]\u0027.\n\nThe LocalTransport test transport implementation has been augmented\nto support the new full-data backup API as well.\n\nIn addition, \u0027adb backup\u0027 now takes the -compress/-nocompress\ncommand line options to control whether the resulting archive is\ncompressed before leaving the device.  Previously the archive was\nalways compressed.  (The default is still to compress, as it will\nusually reduce the archive size considerably.)\n\nInternally, the core implementation of gathering the full backup\ndata stream from the target application has been refactored into\nan \"engine\" component that is shared by both \u0027adb backup\u0027 and the\ntransport-oriented full backup task.  The archive file header\ngeneration, encryption, and compression logic are now factored out\nof the engine itself instead of being hardwired into the data\nhandling.\n\nBug 15329632\n\nChange-Id: I4a044faa4070d684ef457bd3e11771198cdf557c\n"
    },
    {
      "commit": "439688cf3940571fde9063a02e5f539857b66142",
      "tree": "c79b66dbdc0ececb24b6f10f6f1483edf90db1a3",
      "parents": [
        "104e14531ca2212117540d8b6abc06ab67564ebc",
        "6de057816f2feb8e0ecbd2e9ccf73ad53e4dc7ed"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 12 00:03:55 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 12 00:03:55 2014 +0000"
      },
      "message": "am 6d758619: Merge \"Implement control of auto power save mode.\" into lmp-preview-dev\n\n* commit \u00276d758619d90a0dda7f1136dcd44d0ac02cdada7e\u0027:\n  Implement control of auto power save mode.\n"
    },
    {
      "commit": "14272302a8b635bd8e9267c1411d0a7ef11bff45",
      "tree": "7d77f5ef5ca90889f4afed32bdf27e668b1afac6",
      "parents": [
        "95981dc8ad08002bab932cefcb6b07c6944491f5"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 10 23:13:02 2014 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 11 10:34:26 2014 -0700"
      },
      "message": "Implement control of auto power save mode.\n\nFollow the setting for auto power save mode in both\nbattery service and battery UI.  Default level is 15 when\nsetting is not set; otherwise it is whatever the setting\ngives, with 0 meaning auto battery save is off.\n\nChange how we define the \"turn off warn\" level to be\nan adjustment from the warn level, so we can have a good\nvalue for whatever auto setting is set.\n\nFix power manager to never go in to power save mode when\nplugged in, even if the user has manually turned it on.\n\nAdd new delete option to settings command, because I needed\nit for testing.\n\nChange-Id: I512b691df84399d50b8e751fd50732c6093ebe85\n"
    },
    {
      "commit": "dad8f819a710510be28e9fdeee84f9b5b2ddacbf",
      "tree": "34d947b5c4459e017b3e14bb3f43d8f0e7b02b53",
      "parents": [
        "e4d7fc02ab0c333f5cd898928f97e7bce812dfa0",
        "116bdbd823b607d860b039ec334a1f985eed7a7f"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jun 03 12:01:53 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 03 12:01:53 2014 +0000"
      },
      "message": "Merge \"Add an --abi argument to \"pm install\"\""
    },
    {
      "commit": "116bdbd823b607d860b039ec334a1f985eed7a7f",
      "tree": "948d436a288ed6e2edc62988df6394e736e92b82",
      "parents": [
        "8627cef5382035dac8f3e68823b239724cc39708"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 29 11:51:59 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jun 03 11:35:49 2014 +0100"
      },
      "message": "Add an --abi argument to \"pm install\"\n\nThis allows callers to force an install to a particular\nABI. This is intended only for testing (and CTS) and is\nnot meant for usage by the installer package.\n\nbug: 14453227\n\n(cherry picked from commit 6431d11cd420536aaa9d93ae510a3151ccc4df1d)\n\nChange-Id: I85d4f8785deea02a6a4d3cb0b05e6ef8bf64826b\n"
    },
    {
      "commit": "d8e9050e22265ba49ff2d8b48f01162e09a4324c",
      "tree": "037fcc1b1aba728eed1b1e5fdb7c09c97bb5c807",
      "parents": [
        "559321abbfd2e66763accc172f3596e4cf7f9172",
        "a312c03fd830c489ffc81fad0812826b093b73ee"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Jun 02 17:44:47 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 02 17:44:47 2014 +0000"
      },
      "message": "Merge \"Read data from stdin/stdout to follow adb change.\""
    },
    {
      "commit": "dfed4bc99f9f3d48ee7bf9e8ea051a8d5bc4f299",
      "tree": "166fb21faaced287ba8dfb8adc9324a8df436a33",
      "parents": [
        "8c29df5afcde5e1dd27c3ca21cfdec2af47205d1",
        "f7871c31469c6245c1b232a15104704f7481103c"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri May 30 11:51:03 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 30 11:51:03 2014 +0000"
      },
      "message": "am f7871c31: am b9b31f4b: am bd4d3203: Merge \"Support an ABI flag for instrumentation.\"\n\n* commit \u0027f7871c31469c6245c1b232a15104704f7481103c\u0027:\n  Support an ABI flag for instrumentation.\n"
    },
    {
      "commit": "f7871c31469c6245c1b232a15104704f7481103c",
      "tree": "cf332f40710fa1359c80c63c93532438a80991bf",
      "parents": [
        "92ab0b91cdcb83c3cb101386d01f04c7d7dfd404",
        "b9b31f4b8eda123e7b544d1a0fa886576064adca"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri May 30 10:49:00 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 30 10:49:00 2014 +0000"
      },
      "message": "am b9b31f4b: am bd4d3203: Merge \"Support an ABI flag for instrumentation.\"\n\n* commit \u0027b9b31f4b8eda123e7b544d1a0fa886576064adca\u0027:\n  Support an ABI flag for instrumentation.\n"
    },
    {
      "commit": "b9b31f4b8eda123e7b544d1a0fa886576064adca",
      "tree": "f08261f8c8c2458969df0c840a4789d5eb06463d",
      "parents": [
        "52b4146273ea29f6d1ed89e4de79f2d7ff0d71dc",
        "bd4d320344833ce67dad3a4e10a61d0502a81d0e"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri May 30 10:41:24 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 30 10:41:24 2014 +0000"
      },
      "message": "am bd4d3203: Merge \"Support an ABI flag for instrumentation.\"\n\n* commit \u0027bd4d320344833ce67dad3a4e10a61d0502a81d0e\u0027:\n  Support an ABI flag for instrumentation.\n"
    },
    {
      "commit": "a312c03fd830c489ffc81fad0812826b093b73ee",
      "tree": "7562a82de9ab19ffa0f1f5a2f9c9b83f91b81257",
      "parents": [
        "05ad48206a082057e17723d32493c153faa6881e"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu May 29 18:03:22 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu May 29 18:03:22 2014 -0700"
      },
      "message": "Read data from stdin/stdout to follow adb change.\n\nChange-Id: I29ee5e05a538c6836f18b9cc9331c74f41936b29\n"
    },
    {
      "commit": "00f535845bebe4fba1de77ebd0119c7c23197a4f",
      "tree": "b951e26901f724289d97299103b4445ef3e8f1c3",
      "parents": [
        "a46d3e11587567fc3caa1a32112267bae4a68864",
        "9890e341bf9d565309cd7db5e6c4194c66c0a1d8"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Wed May 28 18:31:38 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 28 18:31:38 2014 +0000"
      },
      "message": "Merge \"SurfaceFlinger: Add sourceCrop to screenshot\""
    },
    {
      "commit": "1bdbd4be02aec4fd164ba41c164735639b9c7e15",
      "tree": "419c917e1813053a43af5af700563bb021bbcffb",
      "parents": [
        "27692098d7afb77237a98d25da2e6cdfe0a85883"
      ],
      "author": {
        "name": "Kenny Guy",
        "email": "kennyguy@google.com",
        "time": "Wed May 14 19:53:22 2014 +0100"
      },
      "committer": {
        "name": "Kenny Guy",
        "email": "kennyguy@google.com",
        "time": "Fri May 23 18:37:34 2014 +0100"
      },
      "message": "Add ability to uninstall per user to adb shell pm.\n\nDefault is still uninstall for all users, but if --user\nis passed in it will just uninstall for that user.\nFor system apps if --user is supplied it will uninstall\nrather than revert to the current system version.\n\nChange-Id: If1be0f78f01391f7ac6b53150dfeeccd0c002899\n"
    },
    {
      "commit": "9890e341bf9d565309cd7db5e6c4194c66c0a1d8",
      "tree": "f885b4dcc80f68147440940388f386f69312a03c",
      "parents": [
        "c33fb2b5c014f37ce36dbc12eff1e969562f7d50"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Thu May 22 16:12:54 2014 -0700"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Fri May 23 09:19:02 2014 -0700"
      },
      "message": "SurfaceFlinger: Add sourceCrop to screenshot\n\nAdds a sourceCrop Rect parameter to screenshot commands, which allows\nclients to capture only a portion of the screen instead of the whole\nscreen.\n\nBug: 15137922\nChange-Id: I629447573cd34ffb96334cde7ba02490b9ea06d8\n"
    },
    {
      "commit": "8dcfefd652fa2c5612b3acbc4bf842d2dfb1cf21",
      "tree": "012fc44dd25c9ab1005d993df0db0b77711fa7fc",
      "parents": [
        "402120a2236b294dff9a51461cb22400a6ef67f6"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 15 18:12:59 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri May 16 10:30:00 2014 +0100"
      },
      "message": "Support an ABI flag for instrumentation.\n\nAllows us to choose what ABI a process uses when\nlaunching it with \"adb shell am instrument\", for eg.\n\nadb shell am instrument --abi arm64-v8a component/runner\n\nNote that we only perform very basic validation of the\nABI. In general, there is no guarantee that the app will\nlaunch with the instruction set we choose, for eg. if it\nhas native libraries that are for a different ABI.\n\nbug: 14453227\n\nChange-Id: Ifb7e89b53675080dc87941091ee5ac360f218d7f\n"
    },
    {
      "commit": "72a194e6d5d8427ee9816364781b180afffc5393",
      "tree": "6c9ea3a505e79fec7400654915fa04ad36a07326",
      "parents": [
        "1e74c37f8e1acb595f407e0f65744bb6b00c9314",
        "1810927a9b8f6d2597d18c0e77389b4a6fcb5118"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 15 10:34:43 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 15 10:34:43 2014 +0000"
      },
      "message": "am 1810927a: am eabc93db: am c4c08803: Merge \"app_process: change app_process a symlink of primary version\"\n\n* commit \u00271810927a9b8f6d2597d18c0e77389b4a6fcb5118\u0027:\n  app_process: change app_process a symlink of primary version\n"
    },
    {
      "commit": "1810927a9b8f6d2597d18c0e77389b4a6fcb5118",
      "tree": "25d72c50802f56c6405f16172adb2d46e0277ff0",
      "parents": [
        "d850be5d1491d255a64db9bc95334748e455c782",
        "eabc93db1020be4b71f0db7d5b5d3a7991f3c264"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 15 09:45:33 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 15 09:45:33 2014 +0000"
      },
      "message": "am eabc93db: am c4c08803: Merge \"app_process: change app_process a symlink of primary version\"\n\n* commit \u0027eabc93db1020be4b71f0db7d5b5d3a7991f3c264\u0027:\n  app_process: change app_process a symlink of primary version\n"
    },
    {
      "commit": "eabc93db1020be4b71f0db7d5b5d3a7991f3c264",
      "tree": "55afbba6f2ef664c708013aa6233fe580526184b",
      "parents": [
        "c0f18b9d0cce0c140b1274055faabff732f1e27c",
        "c4c08803a8cc090aa27720e97df342231e8433af"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 15 09:41:40 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 15 09:41:40 2014 +0000"
      },
      "message": "am c4c08803: Merge \"app_process: change app_process a symlink of primary version\"\n\n* commit \u0027c4c08803a8cc090aa27720e97df342231e8433af\u0027:\n  app_process: change app_process a symlink of primary version\n"
    },
    {
      "commit": "559484ed6a3ed98980579e35d12543be2835aa35",
      "tree": "85168a027a7d7d333488e69da6337016d82c14e6",
      "parents": [
        "b7d7cbc9c3a9315a5c5ecd85e16f5916c4bc3f3a"
      ],
      "author": {
        "name": "Yongqin Liu",
        "email": "yongqin.liu@linaro.org",
        "time": "Tue May 06 23:30:40 2014 +0800"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed May 14 18:48:42 2014 +0100"
      },
      "message": "app_process: change app_process a symlink of primary version\n\nChange app_process to be a symlink to the primary version\nand have app_process32/app_process64 be the 32-bit/64-bit\nversions respectively.\n\nThis will make it possible to use the primary zygote for\nam/pm commands and other scripts that use app_process and\ndon\u0027t need a specific zygote.\n\nSigned-off-by: Yongqin Liu \u003cyongqin.liu@linaro.org\u003e\nChange-Id: Ibef545994eb95ddc82101c95df613ad1d06345e6\n"
    },
    {
      "commit": "7b81602f3c18df8a4ca0342c514af8f7e394c0d7",
      "tree": "eab3e4610cff0db0745e151cfacc780ae713b306",
      "parents": [
        "4ddebf7f5b85d082c56f6a8aad11bd0c5ca68fde"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Fri Apr 18 15:25:25 2014 -0700"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed May 14 03:56:34 2014 -0700"
      },
      "message": "Enabling internal msg apis\n\nNetworkFactory and NetworkAgent.  First trying with wifi and\ngetting rid of WifiStateTracker.\n\nConflicts:\n\tapi/current.txt\n\tservices/core/java/com/android/server/ConnectivityService.java\n\nChange-Id: I7f0ec13d7d8988b32f3c6dc71f72012f3349fe02\n"
    },
    {
      "commit": "b6c04899e1ed614985d638b55dafe2c20e7b673a",
      "tree": "66efba07adcb948d6a14af641bb1457b8719913d",
      "parents": [
        "fd30a0e7b747eb4b781ef8def3008626f14eddfe",
        "c8a045d451522adab5226b0063f3a15d34542bf7"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 10:43:23 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 01 10:43:23 2014 +0000"
      },
      "message": "am c8a045d4: am 41f40581: Merge \"Fix x86 build in app_process.\"\n\n* commit \u0027c8a045d451522adab5226b0063f3a15d34542bf7\u0027:\n  Fix x86 build in app_process.\n"
    },
    {
      "commit": "fd30a0e7b747eb4b781ef8def3008626f14eddfe",
      "tree": "156b42f9d38003eabb8150c1e3e117d247f5b2b3",
      "parents": [
        "6c2e806200dc1a422aa681bfd78aae1eb8f1d508",
        "ff34f6faaad21f5f72decc0b6a0bbde8dab68e29"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 10:43:19 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 01 10:43:19 2014 +0000"
      },
      "message": "am ff34f6fa: am 27b03e62: Merge \"Create arch specific cache dirs during zygote startup.\"\n\n* commit \u0027ff34f6faaad21f5f72decc0b6a0bbde8dab68e29\u0027:\n  Create arch specific cache dirs during zygote startup.\n"
    },
    {
      "commit": "c8a045d451522adab5226b0063f3a15d34542bf7",
      "tree": "84ea46328305477785a0416373e8f0c219e779b1",
      "parents": [
        "ff34f6faaad21f5f72decc0b6a0bbde8dab68e29",
        "41f40581ee0284660d30be8ef28f6bf721c4ce10"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 10:39:55 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 01 10:39:55 2014 +0000"
      },
      "message": "am 41f40581: Merge \"Fix x86 build in app_process.\"\n\n* commit \u002741f40581ee0284660d30be8ef28f6bf721c4ce10\u0027:\n  Fix x86 build in app_process.\n"
    },
    {
      "commit": "ff34f6faaad21f5f72decc0b6a0bbde8dab68e29",
      "tree": "23008260f943fcbc69eb79ed0e2307f4eeb69f6e",
      "parents": [
        "703442238200c2f1a35b51e7aadc693322feb69d",
        "27b03e6272479ed82762a4a5d6e4be4f26c1ed58"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 10:39:52 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 01 10:39:52 2014 +0000"
      },
      "message": "am 27b03e62: Merge \"Create arch specific cache dirs during zygote startup.\"\n\n* commit \u002727b03e6272479ed82762a4a5d6e4be4f26c1ed58\u0027:\n  Create arch specific cache dirs during zygote startup.\n"
    },
    {
      "commit": "d6183204e438a738b68301aeac452c0be41c8cb3",
      "tree": "76da5e53d9141f3689a49bb91a360d005b4183ff",
      "parents": [
        "973cdeed8eb9aa250b1b3bd5549df0e0dc78457e"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 16:45:07 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 11:27:49 2014 +0100"
      },
      "message": "Fix x86 build in app_process.\n\nLook for __i386__ and not __x86__.\n\n(cherry picked from commit 47d526217b3fd0d17ba751c66d25cfaf1c6ed7cd)\n\nChange-Id: I848ba351c378e59ab6744ca1983ae4463ae75ba4\n"
    },
    {
      "commit": "973cdeed8eb9aa250b1b3bd5549df0e0dc78457e",
      "tree": "dc92e8b3a7cdc7b32f14ddaf0f85298ba9abdb8e",
      "parents": [
        "fbb0ab02bed5c49159acb3dba6848a154e524169"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Apr 25 11:43:22 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 11:26:49 2014 +0100"
      },
      "message": "Create arch specific cache dirs during zygote startup.\n\nThe runtime expects them to exist before it\u0027s launched.\nThe boot image / art files are created during the first\nzygote launch.\n\n(cherry picked from commit da738713e4e2120a324e8ab6fd11aa0e54a3c66e)\n\nChange-Id: I7472aa25c16a1cf95791af2bdf80ed0d73123872\n"
    },
    {
      "commit": "52adfdaafd464348628d9257101f24a67d7c8bbb",
      "tree": "06e21eb893fdcdee82e81a8de2b8adc88a7e8479",
      "parents": [
        "10882ec8d7890c7d5712e6b7f23e007e09bd0062",
        "516130ccb1841afb6ef154c28269d91594925429"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 17:36:10 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 30 17:36:10 2014 +0000"
      },
      "message": "am 516130cc: am dbbf431b: am d0f7f418: Merge \"Freeing frame map\"\n\n* commit \u0027516130ccb1841afb6ef154c28269d91594925429\u0027:\n  Freeing frame map\n"
    },
    {
      "commit": "6eb1b2611cd2db7f2c2063f8be219d4ef19d11d0",
      "tree": "901d755c7c0aa4091b63ed70deb90497b9aee1d2",
      "parents": [
        "ab45d1d6d296f4f61632a472cf7bd8626c8d5a06"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 16:45:07 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 16:45:07 2014 +0100"
      },
      "message": "Fix x86 build in app_process.\n\nLook for __i386__ and not __x86__.\n\nChange-Id: Iffa3709f9d0c96cce17f3183a6f036a78eccc787\n"
    },
    {
      "commit": "516130ccb1841afb6ef154c28269d91594925429",
      "tree": "bac72a0ed5301c698026fc567a19f60c2d92e320",
      "parents": [
        "d21082ca0c116ba737e6e93c2917d0b557cc48fc",
        "dbbf431b289bb7a01b43db3412ecab00abe18362"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 15:37:44 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 30 15:37:44 2014 +0000"
      },
      "message": "am dbbf431b: am d0f7f418: Merge \"Freeing frame map\"\n\n* commit \u0027dbbf431b289bb7a01b43db3412ecab00abe18362\u0027:\n  Freeing frame map\n"
    },
    {
      "commit": "dbbf431b289bb7a01b43db3412ecab00abe18362",
      "tree": "4f5d00c79726901706cd534547d4d4707b2e9e42",
      "parents": [
        "9a76e9ba1adbdf7cc431b1e6fe454cf0c5d900de",
        "d0f7f41828493b0679e908f7bb3ed3b8e838c463"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 15:12:58 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 30 15:12:58 2014 +0000"
      },
      "message": "am d0f7f418: Merge \"Freeing frame map\"\n\n* commit \u0027d0f7f41828493b0679e908f7bb3ed3b8e838c463\u0027:\n  Freeing frame map\n"
    },
    {
      "commit": "0c1eeb3c8ab53954218d3b8f4be08ff21be3e985",
      "tree": "3a59dbad3788ed44780ea728f306e3eb84d915fe",
      "parents": [
        "ade631eed0df228e343f2a00db653058ff588846"
      ],
      "author": {
        "name": "Mykola Kondratenko",
        "email": "mykola.kondratenko@sonymobile.com",
        "time": "Tue Apr 15 09:35:44 2014 +0200"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 10:58:20 2014 +0000"
      },
      "message": "Freeing frame map\n\nFileMap memory is never released until application exit\n\nRelease it now as the texture is already loaded and the memory\nused for the packed resource can be released.\n\nChange-Id: Id08a1e466337b3a0179684eb6a444e18147ee343\n"
    },
    {
      "commit": "dfacf855fd91eb2d40891721ad4b92ed65d0b46d",
      "tree": "0c680d4bb302de68f8816be038daf98efed21d35",
      "parents": [
        "aa2112f671e4f14555e25a6d765ce4bad454a43f",
        "d1e127e141a8080477f3b3becb792f138ca9ab65"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 08:34:56 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 30 08:34:56 2014 +0000"
      },
      "message": "Merge \"Create arch specific cache dirs during zygote startup.\""
    },
    {
      "commit": "d1e127e141a8080477f3b3becb792f138ca9ab65",
      "tree": "53544b6d9b19b84d4f712502a93406f4bf470266",
      "parents": [
        "19db0f036aa889ff05220b630262461e333faa85"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Apr 25 11:43:22 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 30 09:26:05 2014 +0100"
      },
      "message": "Create arch specific cache dirs during zygote startup.\n\nThe runtime expects them to exist before it\u0027s launched.\nThe boot image / art files are created during the first\nzygote launch.\n\nChange-Id: I5ed0ad4854dc7785246344c8f6eaf54e560feb7d\n"
    },
    {
      "commit": "293513a59d36cd96a3e474dde5981380d372d8c9",
      "tree": "4268c9994be194a7f4fccdecd089af58516d0953",
      "parents": [
        "1866e5dc8bb04b58a67e54f66cb4ec22e878667d",
        "0b62467b142b61ee1e449ba958ba37dfd961ef56"
      ],
      "author": {
        "name": "Bill Yi",
        "email": "byi@google.com",
        "time": "Tue Apr 29 16:07:29 2014 -0700"
      },
      "committer": {
        "name": "Bill Yi",
        "email": "byi@google.com",
        "time": "Tue Apr 29 16:07:29 2014 -0700"
      },
      "message": "Merge commit \u00270b62467b142b61ee1e449ba958ba37dfd961ef56\u0027 into HEAD\n"
    },
    {
      "commit": "d37ae7c13d527a0019275fda44ce4eb83fd99bed",
      "tree": "9e81ce188574bf62e4d16e8402b843b10faca1bc",
      "parents": [
        "15c32f2699f03ba2065e663b3beb2c8d328f42ef",
        "ab5834545da906f1a150672ead825c28a2e1f82a"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Apr 29 22:34:54 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 29 22:34:54 2014 +0000"
      },
      "message": "am ab583454: am 1866e5dc: am af40649e: Merge \"Set NO_NEW_PRIVS on zygote init\"\n\n* commit \u0027ab5834545da906f1a150672ead825c28a2e1f82a\u0027:\n  Set NO_NEW_PRIVS on zygote init\n"
    },
    {
      "commit": "ab5834545da906f1a150672ead825c28a2e1f82a",
      "tree": "0fe672f230c99f56a18eece3bd531b5f2036af73",
      "parents": [
        "60037302208be033442cc3f3c50a25c7064ebbd1",
        "1866e5dc8bb04b58a67e54f66cb4ec22e878667d"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Apr 29 22:26:41 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 29 22:26:41 2014 +0000"
      },
      "message": "am 1866e5dc: am af40649e: Merge \"Set NO_NEW_PRIVS on zygote init\"\n\n* commit \u00271866e5dc8bb04b58a67e54f66cb4ec22e878667d\u0027:\n  Set NO_NEW_PRIVS on zygote init\n"
    },
    {
      "commit": "195c73c9b2c5be50ab325099dc2160215ac7562a",
      "tree": "d96f10bd5467d1c3788e9393a6b9f5ee367c0b2c",
      "parents": [
        "5c220cc4e4c0584a9083529b58e30e17ab7d2d9e"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Apr 25 15:01:24 2014 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Apr 29 15:10:58 2014 -0700"
      },
      "message": "Set NO_NEW_PRIVS on zygote init\n\nWhen app_process/zygote starts, make sure PR_SET_NO_NEW_PRIVS is set.\nThis prevents zygote spawned apps from acquiring new privileges\non exec.\n\nIn particular, this allows the CTS test\nandroid.os.cts.SecurityFeaturesTest#testNoNewPrivs() to pass if ART is set\nas the default runtime.\n\nChange-Id: I81139cda999c7b1430242561aad28f566e9b6da0\n"
    },
    {
      "commit": "28f0877073e0ebc59f1eeeb6e0d54b614b9d3fa5",
      "tree": "715d463e05f8f558335a9919e038334d51460a6d",
      "parents": [
        "bdd4491b322bebd96b99da508ec7b0b7d59d97ae"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Apr 16 09:41:58 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Apr 28 08:54:17 2014 -0700"
      },
      "message": "Allow custom wallpaper and boot animation.\n\nAdd new \"ro.config.wallpaper\" and \"ro.config.wallpaper_component\"\nproperties which may be defined outside of the bundled framework\nresources.  Falls back to bundled resources when properties are\nundefined.\n\nAlso look for boot animation under OEM partition.\n\nBug: 13340779\nChange-Id: Ibdc9935dbdaae3319bf63b40573de0503d82ae67\n"
    },
    {
      "commit": "91097de49b0f683b00e26a75dbc0ac6082344137",
      "tree": "82c3185634a71233ce2e81a3645b07b1ba55f412",
      "parents": [
        "23af77a3cd1febc740d885ff03ead09837df269c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Apr 04 18:02:06 2014 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 24 17:48:58 2014 -0700"
      },
      "message": "Initial implementation of new voice interaction API.\n\nThis gives a basic working implementation of a persist\nrunning service that can start a voice interaction when\nit wants, with the target activity(s) able to go through\nthe protocol to interact with it.  It may even work when\nthe screen is off by putting the activity manager in the\ncorrect state to act like the screen is on.\n\nIncludes a sample app that is a voice interation service\nand also has an activity it can launch.\n\nNow that I have this initial implementation, I think I\nwant to rework some aspects of the API.\n\nChange-Id: I7646d0af8fb4ac768c63a18fe3de43f8091f60e9\n"
    },
    {
      "commit": "f4567f0c50e88261dd897a9933b5d885c1406a45",
      "tree": "28c5f203a67d6c696b20ab471e5e911de91c8cbe",
      "parents": [
        "e255d7399f46de4b4e3d94b95b26df3408274394",
        "56cc5ba79bdf75a73281dc73f13169a409d96c28"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 24 15:43:24 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Apr 24 15:43:24 2014 +0000"
      },
      "message": "am 56cc5ba7: am 8d47f23e: am dbb0de21: Merge \"Fix a typo in an assertion.\"\n\n* commit \u002756cc5ba79bdf75a73281dc73f13169a409d96c28\u0027:\n  Fix a typo in an assertion.\n"
    },
    {
      "commit": "56cc5ba79bdf75a73281dc73f13169a409d96c28",
      "tree": "f25ddc190d7b4e268f4235b2e2dba1b9d1b9d3a0",
      "parents": [
        "8f9d92c4ca5233607ca01dac0b3b66fde5539307",
        "8d47f23e43760dcbf051aaeffff668c3c6340276"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 24 09:01:44 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Apr 24 09:01:44 2014 +0000"
      },
      "message": "am 8d47f23e: am dbb0de21: Merge \"Fix a typo in an assertion.\"\n\n* commit \u00278d47f23e43760dcbf051aaeffff668c3c6340276\u0027:\n  Fix a typo in an assertion.\n"
    }
  ],
  "next": "6bd762289b911e8876759ebbfd9e8960ba825844"
}
