Android 8.0 user版本adb remount后系统卡死问题分析
来源:互联网 发布:围巾怎么系 知乎 编辑:程序博客网 时间:2024/05/17 08:22
先说结论:
执行adbremount重新将system分区以读写方式挂载的时候,需要将相关的信息保存到devinfo分区中。
这个分区在user版本中是被保护起来的,不允许写!(保护动作在LK中)
所以user版本LK,adb remount时会卡死(触发了分区保护机制),
Userdebug不会。
问题现象:
V12BNLite 8.0 user版本替换userdebug版本的boot后,无法向手机push文件。
替换10月份的LK之后,push功能正常。
经本地验证,细化现象如下:
V12BNLite 8.0 user版本替换userdebug版本的boot后,可以向手机的/data/目录push文件。
通过以下命令,向system目录push文件失败:
Adb root
Adb remount
Adb push xxx /system/bin/
此时命令窗口卡住,过一段时间手机UI不响应触摸操作。
本地其他验证动作:
进一步验证,在adbremount之后,手机静置就会出现UI不响应现象。
同时将LK和boot替换为userdebug版本,push文件正常。
下载driveronly基线代码,编译LK和boot进行验证:
在user版本只替换userdebug版本的boot,执行adb remount之后,UI卡死。
在user版本同时替换userdebug版本的LK和boot,执行adb remount之后,UI正常。
初步分析:
应该是android8.0对手机控制更加严格了:LK和boot必须匹配才能正常使用debug功能。
经了解,V12BNLite8.0,11月之前发布的版本为userdebug。
替换10月份的LK之后,LK和boot同为userdebug版本,所以remount功能正常。
进一步验证分析:
由于使用不同版本的LK有着不同的结果,所以从LK的差异分析入手。
经排查,在文件aboot.c中发现如下代码:
Devinfo分区被保护起来了!
而机器的行为又像是非法修改了被保护的分区(之前做防刷机机制时用到过)。
暂时取消对devinfo分区的保护,重新编译验证,user版本的LK也可以remount了。
再查询devinfo保存的信息为lock、unlock等安全相关的信息,
所以可能是remountsystem(只读改为读写)时需要修改devinfo分区内容,从而触发了保护机制。
--- devinfo和system之间的关系,有时间再研究一下。
之前7.1版本没有问题,是因为LK中把分区保护动作屏蔽了。
- Android 8.0 user版本adb remount后系统卡死问题分析
- adb remount的问题
- android adb remount
- adb连接android手机后, adb remount时出现remount failed:operation not permitted时的迂回解决方案
- android adb shell remount failed
- android编译user版本,如何启用user版本的adb
- root 后,adb remount失败的解决方法
- user版本不能使用adb问题
- android user用户版本提高adb权限
- Android 6.0 adb remount后没有写权限,提示Read-only file system
- adb remount
- adb remount
- [FAQ11414]android KK 4.4 版本后,user 版本su 权限严重被限制问题说明
- adb root + adb remount
- adb remount adb shell
- userdebug版本手机adb remount没有权限问题解决
- android user 版本如何默认adb调试为打开
- adb remount 系统提示只读文件系统Read-only file system
- Flask框架知识系列之二
- iOS 线程锁
- ValueError: View function did not return a response(关键词:Web开发/bug)
- 设计模式 ( 十七) 状态模式State(对象行为型)
- 【SQL】数据查询和管理
- Android 8.0 user版本adb remount后系统卡死问题分析
- 解决 AttributeError: 'module' object has no attribute 'convolution'
- HEVC代码学习35:xEncodeCU函数
- php获取微信订阅号的文章图片
- 面向对象的概念
- 编译原理之FIRST集FOLLOW集
- 多个顶点属性使用一个类型的VBO & VAO的使用和操作
- gcc编译选项
- Prism MVVM实例