项目上安卓系统在升级时,经常有不成功的情况,想看下recovery下的情况,recovery下adb shell又用不了,如是决定把adb shell功能加上,下次OTA出问题时好定位。
安卓8.1系统,在debug模式下,有启动adbd服务,可以运行adb pull, adb reboot 等操作,但不能执行adb shell。修改涉及到二个部分,第一部分不管debug模式还是user模式,都启动adbd服务;第二部分是完善recoery的文件系统,我加了sh和busybox。
- (一)启动adbd服务
打开/bootable/recovery/etc/init.rc ,里面有启动adbd服务,修改成始终打开,我是改成我的SDK版本为条件,其他安卓系统修改下数字27就可以了。
# Always start adbd on userdebug and eng builds
#on property:ro.debuggable=1
on property:ro.build.version.sdk=27
write /sys/class/android_usb/android0/enable 1
start adbd
加了这个后,在正常模式下,adb reboot recovery 应该可以看到下面这个设备
# adb devices
List of devices attached
1bab414a recovery
- (二)完善文件系统
1)打开external/mksh/Android.mk,将sh修改成静态链接的可执行程序,recovery没有完整的文件系统,不能做动态链接;
#LOCAL_SYSTEM_SHARED_LIBRARIES := libc
LOCAL

最低0.47元/天 解锁文章
416

被折叠的 条评论
为什么被折叠?



