您的位置:首页 > 移动开发 > Android开发

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

2013-01-23 11:49 633 查看
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/s[b]amsung/smdkv210/
BoardConfig.mk

#switch the options when compile recovery images

# TARGET_NO_KERNEL := true

 TARGET_NO_KERNEL := false
[/b]
上面这个修改是编译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 恢复出厂设置完成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ANDROID
相关文章推荐