V1.0
有关adb相关内容知识在本wiki内部不做说明了,具体内容可以参考 click here
根据任务一步步推进,对其按时间和要点进行划分如下:
重新启动adb程序方式
根据之前在A10以及freescale上的经验,系统恢复后adb无法使用,但是重新启动adb服务就可以使adb可以使用
因此在任务之初尝试使用这个方式解决问题
涉及到的技术
adb服务控制
adb服务在设备端名称为adbd ,adb的启动定义在init.rc文件中,具体内容如下:
service adbd /sbin/adbd
class core socket adbd stream 660 system system disabled seclabel u:r:adbd:s0
为了完成adb重启操作,可以采用的方式有两种:
1.在init.rc中添加restar的属性对应的指令序列
on property:service.adb.root=1
write /sys/class/android_usb/android0/enable 0 restart adbd write /sys/class/android_usb/android0/enable 1
在需要使用的时候使用下面命令就可以 setprop service.adb.root 1
2.也可以使用setprop指令直接操作adb服务,具体指令如下
关闭adb服务使用 setprop ctl.stop adbd
打开adb服务使用 setprop ctl.start adbd
添加服务程序
休眠恢复之后由于adb和串口都无法使用,需要系统内部自动的去重新启动adb,为此需要添加一个服务程序,该程序能够在系统
恢复后重新启动adb。这里采用的基本思路是在init.rc中添加一个开机启动服务,该服务sleep一段时间之后执行重启adb操 作。
在该服务sleep的过程中执行休眠操作,这样,在系统恢复后该程序继续执行便会重新启动adb。
在init.rc中添加服务的方式如下:
service XXXXX /system/bin/YYYYYYY
class main oneshot
XXXXX 为想要的服务名称 YYYYYYY为可执行程序或者脚本的名称
实验结果
通过在系统恢复后重新启动adb的方式,无法使adb正常使用
adb程序相关调试分析
重新启动adb的方式无法使adb在恢复后的系统中正常使用,因此调试adb程序设备端和PC端,
查看是否是adb程序的通信问题。
涉及到的技术
PC端adb
PC端adb即运行在PC机上的adb程序,对程序流程进行分析,发现adb程序运行的log输出到/tmp/下
logfile的名称为adb.log ,因此在PC端启动adb之后,可以通过跟踪adb.log 文件的方式跟踪adb程序
的运行状况 :
tail -f /tmp/adb