Android设备上安装Toybox的最佳实践

5次阅读
没有评论

问题描述

希望在Android 4.1.2设备上安装Toybox,这是一个包含了多种命令行工具的包,适合高级用户使用终端模拟器。由于Android 4.1.2不包含Toybox,因此需要手动安装。用户关心的问题是:
1. Toybox应该安装到系统分区还是数据分区?
2. 当存在Android自带命令与Toybox命令同名时,如何让Toybox版本优先执行?
3. 如何设置环境变量PATH以确保Toybox命令优先执行?

解决方案

方案1:安装到系统分区

注意事项:
– 系统分区上的更改不会因为系统重置而丢失。
– 适用于经常进行系统修改的用户。

步骤:
1. 挂载系统分区为可写模式(如果需要):
shell
adb shell su -c "mount -o rw,remount /system"

  1. 复制toybox二进制文件到/system/xbin目录,并赋予执行权限
    shell
    adb shell su -c "cp /path/to/toybox /system/xbin/"
    adb shell su -c "chmod 755 /system/xbin/toybox"

  2. 创建toybox二进制文件的符号链接
    shell
    adb shell su -c "toybox | sed 's/ /\\n/g' | head -n -1 | tr -d '\\r' | while read line; do ln -sf /system/xbin/toybox /system/xbin/$line; done"

  3. 编辑默认shell的配置文件(如mkshrc)以添加路径:
    shell
    adb shell su -c "echo 'PATH=/system/xbin:$PATH' >> /system/etc/mkshrc"

方案2:安装到数据分区

注意事项:
– 数据分区上的更改会在系统重置时丢失。
– 适用于不需要长期保存更改的用户。

步骤:
1. 创建/data/my_bin目录
shell
adb shell su -c "mkdir /data/my_bin"

  1. 复制toybox二进制文件到/data/my_bin目录,并赋予执行权限
    shell
    adb shell su -c "cp /path/to/toybox /data/my_bin/"
    adb shell su -c "chmod 755 /data/my_bin/toybox"

  2. 创建toybox二进制文件的符号链接
    shell
    adb shell su -c "/data/my_bin/toybox | sed 's/ /\\n/g' | head -n -1 | tr -d '\\r' | while read line; do ln -sf /data/my_bin/toybox /data/my_bin/$line; done"

  3. 编辑默认shell的配置文件(如mkshrc)以添加路径:
    shell
    adb shell su -c "echo 'PATH=/data/my_bin:$PATH' >> /system/etc/mkshrc"

提示

  • 可以创建一个简单的shell脚本来调用Toybox,例如:
    shell
    #!/bin/sh
    /system/xbin/toybox "$@"

    并将其命名为t,这样可以直接使用t命令来调用Toybox的工具。

通过上述步骤,用户可以根据自己的需求选择合适的安装位置,并确保Toybox命令优先执行。

正文完