如何在设备启动循环中记录logcat输出?

6次阅读
没有评论

问题描述

希望为一台Pipo X8设备记录logcat输出日志,因为该设备在尝试安装Xposed框架时会陷入启动循环。然而,由于没有USB接口,且以太网连接尚未建立至可用状态,便无法触发logcat命令进行实时监控。因此,用户希望通过编写脚本在系统启动早期阶段自动执行并记录到文件中这一方式来解决此问题。

解决方案

请注意以下操作注意设备和软件版本差异及修改前做好备份。

方案1:使用自定义引导广播接收器(BroadcastReceiver)进行日志记录

虽然直接通过 BootBroadcastReceiver 实现可能较晚,但由于用户具备Root权限,可以通过一种更早的方法来实现自动登录。这种方法是在启动早期阶段编写一个守护进程或者服务,在合适的时机触发logcat日志的收集和保存。

步骤

  1. 创建日志记录脚本:在根目录下创建log_cat.sh文件,并在其内添加以下内容:
    sh
    #!/system/bin/sh
    while [ 1 ]
    do
    sleep 5
    logcat -d -f /data/logcat.log > /dev/null 2>&1 &
    done

    这个脚本将每5秒触发一次logcat日志收集,并将其输出(>)重定向至/data/logcat.log文件中(通过2>&1确保标准错误也被捕获),同时通过将输出引向 /dev/null来避免在启动早期的非交互式环境中显示大量无用信息。

  2. 创建守护进程服务:接下来,在system/app目录下的系统进程中添加一个守护进程以持久化运行该脚本。可以通过修改已有的shell文件,比如./init.sh或者创建一个新的服务来实现此功能:
    sh
    #!/system/bin/sh
    mount -o remount,rw /system
    sh /data/log_cat.sh &
    chown root.shell /data/logcat.log
    chmod 644 /data/logcat.log

  3. 重新安装固件:为了使自定义脚本生效,可能需要进行固件重新烧写。首先确保你已将上述文件放置在正确的目录中并调整权限设置后,使用适当的Bootloader工具和快照/镜像来烧写固件。

  4. 验证日志记录功能:重启设备,并尝试安装Xposed框架或任何其他操作引起启动循环;然后通过ADB连接至设备并检查路径 /data/logcat.log 中的日志文件是否按预期记录了相关信息。

方案2:使用root权限直接控制logcat输出

步骤

另一种方法是利用root特权直接操作logcat命令,尽管这可能涉及到在启动链更早期阶段执行一些步骤。由于Pipo X8设备没有USB支持,我们可以通过创建一个简单的脚本并确保它在系统启动期间适时地通过su root获取管理员权限。
1. 编写日志收集脚本:如方案一中的脚本所示。

  1. 确保在启动中调用该脚本:可以将此脚本添加到init.rc或其他合适的system引导阶段文件内,以保证即使设备进入 bootloop 时,这个命令也能尝试执行。

  2. 安装并验证脚本的运行情况:类似方案一中的步骤,进行上述操作后,重启设备并观察结果。如果日志保存正确,则该方法会记录下启动过程的关键信息。

综上所述,通过Root权限和自定义的引导广播接收器相结合的策略能有效解决无USB接入下logcat输出记录的问题,且允许用户更好地维护关键的日志文件以供分析、调试使用。务必确保所有修改都经过充分测试并在适当条件下操作,避免对系统造成意外损害。

正文完