在android2.3.4samgsung 210下编译ramdisk-recovery-uboot.img实现恢复出厂设置

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 恢复出厂设置完成。


你可能感兴趣的:(安卓移植)