大家是否有过这样的经历,在命令行里输入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)

?
adb push ~/Desktop/busybox /mnt/sdcard

其中的~/Desktop请根据自己的情况替换成正确的路径

3. 输入以下命令,为了在/system目录写入文件

?
adb shell su mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 / system

使用 ls 检查一下 /system 里是否有 xbin 目录,没有的话输入 mkdir xbin 创建,因为本示例是要把busybox安装到 /system/xbin 。

4. 复制 busybox 文件到 /system/xbin,并为其分配“可执行”的权限

?
cp /mnt/sdcard/busybox / system /xbin chmod 755 busybox

5. 这时就可以使用 busybox 的命令了,例如以前没有清屏的clear命令,现在只需输入 busybox clear 就可以实现清屏功能,使用完整版的 ls 只需输入 busybox ls 。

但是每次前面都加上个busybox太麻烦了,所以我们还要继续完成安装。

在 /system/xbin 下输入

?
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命令可以搞定。

?
alias ls= 'busybox ls'

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

分类: Android 绿色通道: 好文要顶 关注我 收藏该文 与我联系 木乃猫
关注 - 1
粉丝 - 19 +加关注 3 0 (请您对文章做出评价) « 博主前一篇: [Android] 为ImageButton添加按下的动画效果 变亮或变暗
» 博主后一篇: [Hackintosh] Mac无法保存输入法的解决方案
posted @ 2011-03-12 16:05 木乃猫 阅读(30767) 评论( 3) 编辑 收藏
发表评论    #1楼 2011-03-15 21:02 | 非暴力土豆   杯具得没有ROOT 支持(0) 反对(0)    #2楼 2011-10-22 05:31 | wangxp   大哥, 没有busybox 能使用cp命令的??? 支持(0) 反对(0)    #3楼 2012-05-29 09:06 | gleepss   --- #2楼 2011-10-22 05:31 | wangxp
--- 大哥, 没有busybox 能使用cp命令的???

cp需要busybox, 可以利用已經push進去的busybox來執行.

照以下方式: (~/Desktop 替換成正確的路徑)
adb push ~/Desktop/busybox-armv6l /data/local/busybox
adb shell "mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system"
adb shell "chmod 755 /data/local/busybox"
adb shell "/data/local/busybox mv /data/local/busybox /system/xbin/."
adb shell "/system/xbin/busybox --install /system/xbin"

更多相关文章

  1. GitHub 标星 2.5K+!教你通过玩游戏的方式学习 VIM!
  2. Python3原生编写月份计算工具
  3. 如何在后台运行Linux命令?
  4. 一款常用的 Squid 日志分析工具
  5. No.11 使用firewall配置的防火墙策略的生效模式
  6. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  7. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  8. 【腾讯开源】Android性能测试工具APT使用指南
  9. android 调用系统相册选取照片或者打开相机拍照获取图片,返回时回

随机推荐

  1. Android(安卓)listview怎么实现滚动分页
  2. native programming on android
  3. xpose框架使用android studio
  4. android获取屏幕的宽高
  5. android、Dom解析xml
  6. Android(安卓)用java语言执行Shell命令
  7. Android中在UI中加入线条
  8. Writing Efficient Android(安卓)Code(转)
  9. Android(安卓)系统自带Activity效果
  10. android通知栏提示