support "sideload over ADB" mode

Rather than depending on the existence of some place to store a file
that is accessible to users on an an unbootable device (eg, a physical
sdcard, external USB drive, etc.), add support for sideloading
packages sent to the device with adb.

This change adds a "minimal adbd" which supports nothing but receiving
a package over adb (with the "adb sideload" command) and storing it to
a fixed filename in the /tmp ramdisk, from where it can be verified
and sideloaded in the usual way.  This should be leave available even
on locked user-build devices.

The user can select "apply package from ADB" from the recovery menu,
which starts minimal-adb mode (shutting down any real adbd that may be
running).  Once minimal-adb has received a package it exits
(restarting real adbd if appropriate) and then verification and
installation of the received package proceeds.

always initialize usb product, vendor, etc. for adb in recovery

Set these values even on non-debuggable builds, so that the mini-adb
now in recovery can work.
This commit is contained in:
Doug Zongker
2012-01-09 15:16:13 -08:00
parent d538eb77ca
commit e83b7cf8f1
23 changed files with 5713 additions and 16 deletions
+4 -6
View File
@@ -26,8 +26,7 @@ static const char* HEADERS[] = { "Volume up/down to move highlight;",
NULL };
static const char* ITEMS[] = {"reboot system now",
"apply update from external storage",
"apply update from cache",
"apply update from ADB",
"wipe data/factory reset",
"wipe cache partition",
NULL };
@@ -72,10 +71,9 @@ class DefaultDevice : public Device {
BuiltinAction InvokeMenuItem(int menu_position) {
switch (menu_position) {
case 0: return REBOOT;
case 1: return APPLY_EXT;
case 2: return APPLY_CACHE;
case 3: return WIPE_DATA;
case 4: return WIPE_CACHE;
case 1: return APPLY_ADB_SIDELOAD;
case 2: return WIPE_DATA;
case 3: return WIPE_CACHE;
default: return NO_ACTION;
}
}