Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1066|回复: 0

[默认分类] [Android] 为Android安装BusyBox —— 完整的bash shell

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-7-8 15:24:09 | 显示全部楼层 |阅读模式
    大家是否有过这样的经历,在命令行里输入adb shell,然后使用命令操作你的手机或模拟器,但是那些命令都是常见Linux命令的阉割缩水版,用起来很不爽。是否想过在Android上使用较完整的shell呢?用BusyBox吧。不论使用adb连接设备使用命令行还是在手机上直接用terminal emulator都可以。
    一、什么是BusyBox ?
    BusyBox 是标准 Linux 工具的一个单个可执行实现。BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀.简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令。(摘自百度百科)
    二、在Android上安装BusyBox
    准备:
    0. 先要把手机给Root了,具体教程这里就不提供了,网上有很多。
    1. 下载BusyBox的binary,打开这个地址 http://www.busybox.net/downloads/binaries ,选择最新版本,然后下载对应你的设备架构的版本,这里我下载了busybox-armv6l,下面将以这个文件名为示例。

    2. 需要有一个命令行的环境,在电脑上使用adb或在手机上使用terminal emulator。
    3. 连接手机和电脑,手机的USB Mode设置成None(仅充电),并且开启USB调试模式。
    安装:
    1. 将busybox-armv6l重命名为busybox
    2. 将busybox传入手机的SD卡,可以使用下面的命令或自己想其他办法。
    打开terminal(Linux,Mac)或cmd(Windows)

    1. adb push ~/Desktop/busybox /mnt/sdcard
    复制代码

    其中的~/Desktop请根据自己的情况替换成正确的路径
    3. 输入以下命令,为了在/system目录写入文件

    1. adb shell
    2. su
    3. mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
    复制代码

    使用 ls 检查一下 /system 里是否有 xbin 目录,没有的话输入 mkdir xbin 创建,因为本示例是要把busybox安装到 /system/xbin 。
    4. 复制 busybox 文件到 /system/xbin,并为其分配“可执行”的权限

    1. cp /mnt/sdcard/busybox /system/xbin
    2. chmod 755 busybox
    复制代码

    5. 这时就可以使用 busybox 的命令了,例如以前没有清屏的clear命令,现在只需输入 busybox clear 就可以实现清屏功能,使用完整版的 ls 只需输入 busybox ls 。
    但是每次前面都加上个busybox太麻烦了,所以我们还要继续完成安装。
    在 /system/xbin 下输入

    1. busybox --install .
    复制代码

    如果想安装到别的目录,则把点替换成别的路径。
    至此就安装完成了,比较一下原来的 ls 命令和 busybox 里的 ls 命令。

    常见错误:
    1. 如果安装时出现这样的错误,
    busybox: /bin/zcat: No such file or directory
    busybox: /sbin/zcip: Invalid cross-device link
    说明没有输入安装路径,正确的示例 busybox --install /system/xbin
    2. 如果出现这样的错误,
    cp: /system/xbin/busybox: Read-only file system
    说明没有正确输入上面第三步的mount命令。
    小技巧:
    1. busybox 里有 ash 和 hush 还有 sh 这几种 shell,在命令行输入 ash 或 hush,可以像在 bash 里那样,通过按上下键选择刚才输入的命令。
    2. android系统本身就有ls命令,busybox里也有ls,输入ls时调用的是android的ls,那么想用busybox的ls就要每次都在前面加个busybox吗?不用,使用alias命令可以搞定。

    1. alias ls="busybox ls"
    复制代码

    同样的,cp、mv等二者都有的命令都可以这样搞定。也可以通过修改 /init.rc 来解决。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-24 07:11 , Processed in 0.408990 second(s), 37 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表