samgsung 210的恢复出厂设置功能实现
1.修改android2.3.4/device/samsung/smdkv210/recovery/recovery_ui.c
char* MENU_HEADERS[] = { "Volume up/down to move highlight;",- //"menu button to select.",
+ "Home button to select.",
"",
NULL };
修改recovery模式下UI显示的字符选择 ,用Home代替MENU键。
int device_handle_key(int key_code, int visible) {
if (visible) {
switch (key_code) {
case 42:
case KEY_DOWN:
case KEY_VOLUMEDOWN:
return HIGHLIGHT_DOWN;
case 58:
case KEY_UP:
case KEY_VOLUMEUP:
return HIGHLIGHT_UP;
- // case 50: //屏蔽ENTER键值
+ case 11: //添加HOME键键值
- // case KEY_ENTER: //屏蔽ENTER
+ case KEY_HOME: //添加HOME键
return SELECT_ITEM;
}
}
return NO_ACTION;
}
修改按键:机器没有实现ENTER功能键,故将其修改为HOME功能键。
---------------------------------------------------------------------------------------------------------------------
2.修改android2.3.4/bootable/recovery/recovery.c
//去掉这一段的注释
- //ui_print("\n-- Wiping data...\n");
- //device_wipe_data();
- //erase_volume("/data");
- //erase_volume("/cache");
- //ui_print("Data wipe complete.\n");
+ ui_print("\n-- Wiping data...\n");
+ device_wipe_data();
+ erase_volume("/data");
+ erase_volume("/cache");
+ ui_print("Data wipe complete.\n");
上面修改的代码位于:
static int
wipe_data(int confirm){
}函数内,
在恢复出厂设置时,会到该结构体内执行
device_wipe_data();
erase_volume("/data");
erase_volume("/cache");
所以将注释去掉
If(status!=INSTALL_SUCCESS) ui_set_background(BACKGROUND_ICON_ERROR);
if (status != INSTALL_SUCCESS || ui_text_visible())
{
-#if 0
+//modify for recovery
int i = devices_file_load();
- if(i == 1)
+ /* if(i == 1)
{
ui_print("\n-- Wiping data...\n");
erase_volume("/data");
erase_volume("/cache");
ui_print("Data wipe complete.\n");
- }
- else if(i == 2)
+ }*/
+ /* else*/ if(i == 2)
{
erase_volume("/cache");
}
- else
+/* else
{
prompt_and_wait();
}
-#endif
+*/
prompt_and_wait();
}
修改上面这段代码实现恢复出厂设置选项"wipe data/factory reset"选项的操作
3.修改android2.3.4/device/samsung/smdkv210/BoardConfig.mk
#switch the options when compile recovery images
# TARGET_NO_KERNEL := true
TARGET_NO_KERNEL := false
上面这个修改是编译recoveryimage的条件
是参考android2.3.4/build/core/Makefile中的
# -----------------------------------------------------------------
# Recovery image
# If neither TARGET_NO_KERNEL nor TARGET_NO_RECOVERY are true
ifeq (,$(filter true, $(TARGET_NO_KERNEL) $(TARGET_NO_RECOVERY) $(BUILD_TINY_ANDROID)))
这一段来进行修改的
修改完后到android2.3.4目录下开始编译源码
source ./build/envsetup.sh
lunch full_smdkv210-userdebug
make recoveryimage
编译后在 android2.3.4/out/target/product/smdkv210/会生成
recovery.img
ramdisk-recovery-uboot.img
烧写ramdisk-recovery-uboot.img
进入fastboot模式
键盘输入
fastboot flash recovery ramdisk-recovery-uboot.img
ramdisk-recovery-uboot.img烧写完成后,android 恢复出厂设置完成。