recovery调试方法
来源:互联网 发布:淘宝联名信用卡哪个好 编辑:程序博客网 时间:2024/06/14 12:27
转自: http://blog.csdn.net/u011477661/article/details/17116993
有客户反馈不知道如何调试recovery,在这里介绍下recovery的调试方法。
1. 如何在recovery模式使用adb
在recovery模式下,init程序加载的rc文件是bootable/recovery/etc/init.rc。
- service adbd /sbin/adbd recovery
- disabled
- # Always start adbd on userdebug and eng builds
- on property:ro.debuggable=1
- write /sys/class/android_usb/android0/enable 1
- start adbd
虽然adb shell不能执行,但adb的其他很多命令都是能够使用的。
adb devices
adb push/pull
2. 如何增加log
在recovery的代码中能看到有两种方式添加的打印信息:printf和UI->Print。
printf输出到stdout好理解,UI->Print调用screen_ui的print函数,将信息显示在屏幕上。
- void ScreenRecoveryUI::Print(const char *fmt, ...)
- {
- char buf[256];
- va_list ap;
- va_start(ap, fmt);
- vsnprintf(buf, 256, fmt, ap);
- va_end(ap);
- fputs(buf, stdout);
3. 标准输出信息在哪
- int
- main(int argc, char **argv) {
- // If these fail, there's not really anywhere to complain...
- freopen(TEMPORARY_LOG_FILE, "a", stdout); setbuf(stdout, NULL);
- freopen(TEMPORARY_LOG_FILE, "a", stderr); setbuf(stderr, NULL);
- static const char *LAST_LOG_FILE = "/cache/recovery/last_log";
- static const char *LAST_INSTALL_FILE = "/cache/recovery/last_install";
- static const char *TEMPORARY_LOG_FILE = "/tmp/recovery.log";
再看看recovery结束时做了什么
- static void
- finish_recovery(const char *send_intent) {
- // Copy logs to cache so the system can find out what happened.
- copy_log_file(TEMPORARY_LOG_FILE, LOG_FILE, true);
- copy_log_file(TEMPORARY_LOG_FILE, LAST_LOG_FILE, false);
- copy_log_file(TEMPORARY_INSTALL_FILE, LAST_INSTALL_FILE, false);
- chmod(LOG_FILE, 0600);
- chown(LOG_FILE, 1000, 1000); // system user
- chmod(LAST_LOG_FILE, 0640);
- chmod(LAST_INSTALL_FILE, 0644);
4. 如何查看log
1)如果能使用adb,在recovery模式下就能使用adb pull出log信息
adb pull /tmp/recovery.log .\
2)即使adb服务不能使用,前一次recovery的log也会保存到cache/recovery目录下,在reboot正常进入系统后pull 出来查看。
adb pull /cache/recovery/last_log .\
cache/recovery/last_install保存的是最后一次更新的OTA包
0 0
- recovery调试方法
- recovery调试方法
- android OTA 升级优化之二: recovery调试方法改进
- [RK3288][Android6.0] 调试笔记 --- Recovery执行脚本方法
- ShenduOS Recovery编译调试教程
- ShenduOS Recovery编译调试教程
- ShenduOS Recovery编译调试教程
- 刷Recovery的方法
- 进入Recovery模式方法
- 【recovery】android使用串口打印recovery调试日志
- Recovery 下mi debug方法
- mtk Android如何调试recovery模块
- 调试android recovery下roots.cpp
- mtk recovery源码分析及调试过程
- recovery
- recovery
- Recovery
- 酷派d539进入 recovery方法
- bootsect.S框架基础级分析
- 区间k大数查询
- ubuntu 14.04 (64bit) 安装 CUDA7.5
- spring mvc 返回中文乱码
- NIO 入门
- recovery调试方法
- LeetCode 15---3Sum
- 文章标题
- Android自定义动画框架让View实现Path动画
- mysql 命令下查看表名等简单操作
- 二叉树的下一个结点
- 在Myeclipse中完成代码自动填充,自动提示功能的方法:以及如何在导入和导出配置文件。
- (转)如果你看不懂KMP算法,那就看一看这篇文章
- Mybatis 动态sql