1 什么是busybox?
BusyBox 是一个集成了一百多个最常用linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、 cat 和 echo等等,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令。也包含了 Android 系统的自带的shell。
为什么要在Android中加入busybox?
用过adb shell的人应该知道,在默认情况下,adb shell下是不能用clear,grep, find,vi等指令的,甚至连Tab链自动补全功能都不能用,对于已经习惯了使用这些指令的码农们来说,这是件比较悲摧的事情。幸运地是,我们有了busybox!
2 下载busybox
打开下载界面:http://www.linuxidc.com/Linux/2011-08/40704.htm,选择最新的版本: 1.19.0, 然后进入下一个界面:
选择适合你的设备的版本进行下载,这里我们为Android模块器下载busybox-armv6l.
下载下来后,将其重命名为busybox:
- $mv busybox-armv6l busybox
- $chmod 755 busybox
3 放入模拟器
首先用adb shell进入模拟器,在/data目录下新建一个busybox的目录,然后将busybox放入此目录下.
- $adb shell
- #cd /data
- #mkdir busybox
- #exit
- $adb shell push busybox /data/busybox
4 安装并运行busybox所提供的工具
重新adb shell连接上模拟器,进入到/data/busybox目录下,然后输入
- #./busybox clear
可是这样还是不是很好使用,因为每次使用 busybox命令时都得在命令行前面加上./busybox前缀,这个很麻烦,因此,我们先将bosybox提供的这些命令安装到模拟器下,就可以省去这些麻烦了。
安装:
在/data/busybox当前目录下,输入:
- #./busybox –install ./
然后在当前目录下再次输入:
- #./clear
- # export PATH=/data/busybox:$PATH
不过,还是有些东西不是很方便,至少还存在以下三个不足之处:
- 1 Tab 键的自动补全功能还是不行.
- 2 #号前没有显示当前路径,这使我们经常不知当前已经进入到目录的哪一层了.
- 3 退出adb shell后再次进入,得重新设置PATH值才能恢复方便使用busybox工具.
至于前面这个问题,其实busybox下有一个ash的shell,直接运行它:
- #ash
还剩下最后一个问题.最后一个问题的解决方法,在adb shell后,Android模拟器根目录下有一个init.rc文件.如上图,用vi打开(vi也是busybox提供的工具),在最后一行加入如下指令:
- # export PATH=/data/busybox:$PATH
只可惜此文件为只读权限,我试了安装z4root软件获取root权限,修改default.prop等诸多方法,都没能保存修改init.rc的内容。。。估计在adb 下是不能修改它的,要是有谁知道方法的话,还请告知一下!
我知道的另一种方法就是在源码下的out目录下修改 init.rc文件,然后重新生成镜像文件,再重新启动模拟器,但是这种方法相当于重新刷机。有一定的局限。