首先很惭愧我已经有一年多没有更新博客内容了,之前写过一篇 酷走 Android 行车记录仪研究 的文章,行车记录仪的 ADB 调试已经可以用起来了,不过还存在网络不可用时系统时间不正确的问题,刚好再研究一下行车记录仪的 root 以及通过 GPS 同步记录仪的系统时间。
root 系统
其实酷走这款 Android 行车记录仪系统已经自带了“假” root 权限,只是没有带 su 管理的工具。虽然 SuperSU 很久没更新了,我还是准备安装试试,首先从 SuperSU 官网下载最新 2.82 版本的刷机 zip 包:
http://supersuroot.org/downloads/SuperSU-v2.82-201705271822.zip
解压缩之后,首先使用 adb 命令将系统重新挂载为可读写状态:
~$ adb remount
参考之前折腾刷机的经验,先拷贝刷机 zip 包中的文件:
~$ adb push common/Superuser.apk /sdcard/ ~$ adb push common/install-recovery.sh /sdcard/ ~$ adb push x86/su /sdcard/ ~$ adb push x86/supolicy /sdcard/ ~$ adb push x86/libsupol.so /sdcard/
这个时候可以使用 adb shell
命令登录到行车记录仪,再将文件移动到系统目录:
root@Sf3gr_mrd6_p2_720# mkdir /system/app/SuperSU root@Sf3gr_mrd6_p2_720# mv /sdcard/Superuser.apk /system/app/SuperSU/ root@Sf3gr_mrd6_p2_720# mv /sdcard/install-recovery.sh /system/bin/ root@Sf3gr_mrd6_p2_720# cp /sdcard/su /system/xbin/ root@Sf3gr_mrd6_p2_720# mkdir /system/bin/.ext root@Sf3gr_mrd6_p2_720# cp /sdcard/su /system/bin/.ext/.su root@Sf3gr_mrd6_p2_720# mv /sdcard/su /system/xbin/daemonsu root@Sf3gr_mrd6_p2_720# mv /sdcard/supolicy /system/xbin/ root@Sf3gr_mrd6_p2_720# mv /sdcard/libsupol.so /system/lib/
还需要设置文件权限:
root@Sf3gr_mrd6_p2_720# chmod 0644 /system/app/SuperSU/Superuser.apk root@Sf3gr_mrd6_p2_720# chmod 0755 /system/bin/install-recovery.sh /system/xbin/su /system/bin/.ext/.su /system/xbin/daemonsu /system/xbin/supolicy /system/lib/libsupol.so root@Sf3gr_mrd6_p2_720# chcon u:object_r:system_file:s0 /system/app/SuperSU/Superuser.apk /system/bin/install-recovery.sh /system/xbin/su /system/bin/.ext/.su /system/xbin/daemonsu /system/xbin/supolicy /system/lib/libsupol.so
不过最后运行 SuperSu 安装命令的时候却出错了:
root@Sf3gr_mrd6_p2_720# /system/xbin/su --install error: only position independent executables (PIE) are supported.
看来是想当然了,我拷贝的是非 PIE 格式的 su 程序导致运行不了。那就重新拷贝正确的 su 程序(需要使用 su.pie
地址无关的可执行程序版本),这次就 adb 命令一步到位了:
~$ adb push common/Superuser.apk /system/app/SuperSU/Superuser.apk ~$ adb push common/install-recovery.sh /system/bin/install-recovery.sh ~$ adb push x86/su.pie /system/xbin/su ~$ adb push x86/su.pie /system/bin/.ext/.su ~$ adb push x86/su.pie /system/xbin/daemonsu ~$ adb push x86/supolicy /system/xbin/supolicy ~$ adb push x86/libsupol.so /system/lib/libsupol.so
设置文件权限之后再重新执行 /system/xbin/su --install
命令安装就没有问题了,测试确认 SuperSU App 也可以正常运行了。
GPS 时间同步
为了能修正行车记录仪的系统时间,我在行车记录仪上安装了 Smart Time Sync 这款 App 进行时间同步。Smart Time Sync 支持通过 GPS、NTP 或 HTTP 同步系统时间,不过行车记录仪上都没有装 SIM 卡更没有网络,只能通过 GPS 进行时间同步了。
如果 Android 系统没有 root,Smart Time Sync 只能进行手工同步,因此为了实际使用过程中能实现后台自动时间同步,上面的系统 root 操作还是必须的。
Smart Time Sync 运行效果如下:
App 使用起来也很简单,首先在 Source 源选择 GPS
,然后点 Sync Time
按钮就可以手工同步系统时间了,当然前提是设备必须放在有 GPS 信号的地方。
点击后面的设置图标就可以配置后台自动进行时间同步了,现在我的行车记录仪即使掉电了保存的录像文件时间也是正确的了。