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

android OTA 升级优化之二: recovery调试方法改进

2014-03-28 11:31 706 查看

1、 google default debug方法:

log存放在cache目录:/cache/recovery/last_log

recovery操作完成后,系统重启后才能从该目录使用adb pull 拉出log来。

这种defaut debug方法的问题=======》

研发debug不方便

用户ota升级后,经常出问题,但不容易取出log

2、debug改进方法一:启动adb

recovery启动时将adb启动起来,这样研发可以通过adb shell 实时在线调试 

相关code如下: 、init.c解析启动模式,将adb相关代码编译到recovery image,recovery init.rc启动adb server

bootable/bootloader/lk/app/aboot/aboot.c   //lk中添加recovery启动模式,通过cmdline传递给init  =======>//qcom平台,mtk不需要这么做

build/core/Makefile

system/core/adb/Android.mk 
  //build adbd to /sbin/

system/core/sh/Android.mk 
     //build sh to /sbin/

system/core/toolbox/Android.mk 
 //build toolbox to /sbin/

system/core/init/init.c 
 //qcom平台:init.c解析cmdline获取启动模式,mtk平台:直接通过get_boot_mode()获取启动模式,

============>最后设置属性:ro.boot.bootupmode为recovery

/*

   mtk as follow:

    mt_boot_mode = get_boot_mode();

    if(mt_boot_mode == MT_RECOVERY_BOOT)

        property_set("ro.boot.bootupmode", "recovery");   // for adb service.c */

system/core/adb/services.c

根据property: ro.boot.bootupmode是normal 还是recovery 启动 "/system/bin/sh" 或 "/bin/sh"

bootable/recovery/etc/init.rc   //  启动/sbin/adbd

3、debug改进方法二:保存log到sdcard

  为方便获取adb log,recovery可以将内置sdcard mount起来,recovery操作完成退出前,将/tmp/recovery.log 保存到内置sdcard 。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: