Android 开机启动模式源码分析

在机器关机情况下,长按Power键启动机器,如果这时机器低电,会提示低电,机器不会正常启动:

而代码如下:

如果不是低电,正常情况是可以启动的。

在关机情况下,插入USB,机器会自然启动,这个时候kernel已经启动了,但是Android系统还没有启动,不过已经进入了关机充电界面了,具体流程看下面代码流程:

看到process_kernel_cmdline函数了,就是解析cmdllie参数,这是一种kernel往系统传递参数的一种方式,继续往下走:

再看import_kernel_nv函数:

看到androidboot名字了吧,具体文件在proc/cmdline,这里的是正常启动,所以值是emmc:

解析出来后,马上调用函数property_set设置,供后面get使用。

再回到init.c的main函数:

这里是判断is_charger是否是usb插入启动模式,如果是就进入充电界面,而charger是在这里启动的:


进入了event_loop函数,是个相对死循环函数:

再看看handle_input_state函数:

看到参数了么:KEY_POWER,对Power键的处理,再进去看看:

终于明白了,在充电的时候,如果长按Power键2秒钟,就会从新启动Android系统,他会记录好启动参数,要不然重启是又会来到充电界面,而是要去到解锁界面完成启动了;再看看android_reboot函数吧:

reboot具体参数就不分析了,有兴趣自己研究!

这里的充电界面资源和代码如下:

看到这里,至少在开机的时候,面对两个现象【开机低电提示和插USB开机充电】应该有很清楚的认识了吧!

觉得本文对您有用,麻烦点赞、关注、收藏,您的肯定是我创作的无限动力,谢谢!!!

相关推荐
COSMOS_*2 小时前
2025最新版 Android Studio安装及组件配置(SDK、JDK、Gradle)
android·ide·jdk·gitee·android studio
jian110582 小时前
android studio Profiler性能优化,查看内存泄漏
android·性能优化·android studio
建群新人小猿4 小时前
陀螺匠企业助手——组织框架图
android·java·大数据·开发语言·容器
TheNextByte15 小时前
如何将文件从Android无线传输到 iPad
android·ios·ipad
赫萝的红苹果5 小时前
实验探究并验证MySQL innoDB中的各种锁机制及作用范围
android·数据库·mysql
叶落无痕526 小时前
Android Studio 2024.3.1 连接夜神模拟器
android·ide·android studio
玲子的猫6 小时前
安卓原生开发实现图片双指放大预览功能
android
2501_915106327 小时前
如何在iPad上高效管理本地文件的完整指南
android·ios·小程序·uni-app·iphone·webview·ipad
似霰7 小时前
AIDL Hal 开发笔记5----实现AIDL HAL
android·framework·hal
2501_915106328 小时前
iOS 成品包加固,在只有 IPA 的情况下,能做那些操作
android·ios·小程序·https·uni-app·iphone·webview