• 目的需求:在手机关机状态下,若是通电,则自动开机.
  • 使用场景:手机做4G路由器热点使用;备用手机常年通电做转发短信未接来电;做车载导航行车记录仪等;
  • 方法思路:确定手机关机状态下充电时会调用什么脚本命令,然后在脚本命令中添加入重启指令。

步骤预览:

  1. 提取手机boot.img镜像
  2. 解包boot.img镜像
  3. 修改init.rc文本
  4. 打包boot.img
  5. 刷入修改后的boot.img到手机
  6. 完成,测试

实践环境:

1. 提取手机boot.img镜像

  • 1.1. 手机打开USB调试(开发者选项)
  • 1.2. 手机USB连接电脑
  • 1.3. 在CMD窗口cd到adb.exe的路径,输入“adb devices”来检测一下链接状况。
  • 1.4. 输入“adb shell”,回车,再输入“su”回车,这注意看,提示符应该已经从$符号变成了#号。
  • 1.5. 输入命令搜索"find /dev/block/platform/ -name by-name"来找到"by-name"文件夹路径
  • 1.6. 输入命令列出搜索到的文件夹"ls -al /dev/block/platform/soc/c0c4000.sdhci/by-name",找到boot对应文件名称为"mmcblk0p58"
  • 1.7. 开始提取,输入“dd if=/dev/block/mmcblk0p58 of=/sdcard/boot.img”,这里的"mmcblk0p58"就是刚才上面找到的boot对应文件.
  • 1.8. 把提取的"boot.img"文件拷贝到电脑

2. 解包boot.img镜像

  • 2.1. 电脑上把拷贝的boot.img和bootimg.exe放在相同目录下。最好单独建个目录,把这两个文件放进去,因为后续会产生很多文件,以免混乱。
  • 2.2 . CMD到bootimg.exe目录下执行“bootimg --unpack-bootimg” 解包 //路径不能有中文.否则报错

3. 修改init.rc文本

  • 3.1. 解包boot.img后会获得"initrd"文件夹,里面有我们需要修改的"init.rc"文件
  • 3.2. 使用EmEditor修改init.rc文件,在"on charger"这一项目添加"setprop sys.powerctl reboot"
  • 3.3. 修改init.rc完毕,保存.

4. 打包boot.img

  • 4.1. 现在要把修改的文件重新打包成boot.img。还是回到刚才的cmd窗口。输入“bootimg --repack-bootimg”回车。程序会自动把文件打包回去。现在目录下就会变成3个文件,一个程序bootimg.exe,一个原始文件boot-old.img,一个新生成的文件boot-new.img。

5. 刷入修改后的boot.img到手机

  • 5.1. 把boot-new.img拷贝到adb.exe所在的目录,并且重命名为boot.img,在此目录打开命令窗口。
  • 5.2. 把手机进入到fastboot的状态。关机,同时按住音量减和电源键。这时你的手机会进入fastboot的状态,准备开始写入boot.img。
  • 5.3. 在命令窗口输入“fastboot flash boot boot.img”回车,开始刷写boot.img。因为文件很小,几秒钟就提示完成了。
  • 5.4. 输入“fastboot reboot”回车,会重启手机

6. 完成,测试

  • 6.1 操作完以上步骤,就实现了安卓关机状态通电自动开机.
  • 6.2 测试1: 关机,保持usb线供电,数秒后自动开机.
  • 6.3 测试2: 关机.拔掉usb线,然后插入usb线,数秒后自动开机.
  • 完成.

参考资料

  1. 安卓6.0+关机状态下通电自动开机方案
  2. 把你的旧手机改造成车载导航
  3. 车子点火手机自动开机(关机状态下)的方法

VIA.https://www.luoji.men/2067.html

https://www.hostloc.com/thread-767990-1-1.html

最后修改:2020 年 11 月 18 日 01 : 19 PM