问题描述
如何在Android设备(ARM 32位)上安装iproute2
包以使用其提供的ss
命令?尝试通过Google源代码页面克隆得到解决但未成功。
解决方案
请注意此解决方案可能因系统及ROM版本差异而有所不同,操作前请备份重要数据。
方案1:使用原有内置工具或第三方库
根据最佳回答,Android设备自带了ip
命令,它是基于修改后的iproute2
包构建的。许多定制化操作系统(ROMs)也预装有ss
可执行文件。若未预装,则可以考虑从源代码编译静态二进制文件或从第三方资源获取。
使用内置工具:
由于Android自带了部分iproute2功能,可以直接利用ip
命令来替代某些操作。
sh
ip -s -o -x addr show | awk '{print $5}'|cut -d: -f1编译与安装:
若需要完整的ss
命令支持,可以从iproute2
源代码中提取并自建静态二进制文件。
a)下载iproute2源码包:
sh
curl -LO https://android.googlesource.com/platform/external/iproute2/+show/main/ip/ip
b)使用C交叉编译器进行预处理(假设你已经将ARM编译环境设置好):
sh
arm-linux-androideabi-gcc -o ip.ip ip.c
c)验证结果并添加到系统PATH下:
- 获取第三方二进制文件:可从网站下载预编译的apk或二进制文件,如:
https://www.androidfilehost.com/?fid=1395089523397956439
方案2:通过ADB调试模式安装第三方工具
如果拥有根权限,可以利用ADB和SSH在设备上安装一些工具或包。
- 准备并设置root环境:
- 确认手机已获取root权限。
安装
Busybox
作为替代工具集(包括ss),可从其官方仓库获取。通过busybox安装ss命令:
使用ADB shell开启调试模式后,安装并利用busybox的ss
工具代替原系统:
sh
adb root && adb remount
adb push busybox /data/local/tmp/
adb shell sh -c 'chmod 755 /data/local/tmp/busybox && /data/local/tmp/busybox --install /data/local/bin'
以上步骤会基于具体情况有所变动,请根据实际情况调整并谨慎执行。对于非root用户,方案1的直接方法较为简单安全。