我们可以通过两种方式进入Android的console:
1. 直接执行命令emulator -shell,我的是emulator -avd MyAVD2.3.1_map -scale 0.77 -shell,用这种方式进入console是普通用户$,至少2.3的版本是这样。
2. 在启动emulator后,通过命令adb shell进入,用这种方式进入console是超级用户,至少2.3的版本是这样。当模拟器启动用用上述命令可能会出现如下错误:
derek@derek-ThinkPad-Edge:~$ adb shell
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
error: device offline
没关系再输入一遍adb shell 就可以了,这时候就会出现#提示符了。
之后我们就可以使用一些linux下 常用的命令了,如ls,cat等。然而Android自带的toolbox(位于/system/bin中)也太简略了点,有些命令如 find,Android并不支持或者支持得不好。下面将介绍如何为Android加入busybox工具,通过编译得到一个可以在Android里面运 行的busybox工具,我们就可以使用众多常见的linux命令了,如find,touch等。
步骤如下:
1. 首先去busybox主页 下载最新版本的busybox源代码.
2. 下载交叉编译工具: GNU Toolchain for ARM Processors
下载地址:http://www.codesourcery.com/gnu_toolchains/arm/download.html
其中第一项选择ARM EABI或ARM GNU/Linux,第二项选择IA32 GNU/Linux TAR即可。
最后得到一个arm-2010.09-50-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2文件,我下的是ARM GNU/Linux中的。
将压缩包解压到linux下某个目录, 并设置好环境变量(~/.bashrc), export PATH=/home/derek/Android/crosstools/ARMGNULinux/arm-2010.09/bin/:$PATH,使之能找到前缀为"arm-none-linux-gnueabi-"的交叉编译工具。如果设置好环境变量之后,那么在第三步中的Cross Compler prefex只要填上“arm-none-linux-gnueabi-“即可,当然也可以不用在~/.bashrc中设置环境变量,但在Cross Compler prefex中要填上交叉编译工具的完整路径名和rm-none-linux-gnueabi-前缀。
在编译的时候可能会出错,请确保所用的busybox和交叉编译工具的版本是否匹配,建议都用最新的吧。
3. 进入busybox源码目录.
先执行make menuconfig命令对编译过程进行配置. 过程如下:
Busybox Settings -> Build Options ->
[*] Build BusyBox as a static binary (no shared libs) 这个要选上,因上这样子编译出来的busyBox才是可以独立运行的。
(/home/derek/Android/crosstools/ARMGNULinux/arm-2010.09/bin/arm-none-linux-gnueabi-) Cross Compiler prefex 这是交叉编译器的"路径+前缀",要根据具体的情况来设置。
Busybox Settings -> Installation Options->
[*] Don’t use /usr 这样子编译出来的busybox才不会安装到你主机的/usr目录下。一定要选上。
4 执行make编译源码. 如果编译过程中产生无法找到头文件的错误, 可指定交叉编译器用到的头文件所在路径. 如
$make -I./home/derek/Android/crosstools/ARMGNULinux/arm-2010.09/arm-none-linux-gnueabi/libc/usr/include
5 编译成功后将得到一个名为busybox的可执行文件,可以执行make install,进行安装,这时在busybox的目录下将生成_install目录,里面的所有链接都是链接到_install/bin/busybox。
6 在Android的console下建立目录/data/busybox, 并使用下面的命令将文件busybox复制该目录中:
adb push busybox /data/busybox
7 从Android的console进入/data/busybox目录, 为可执行文件busybox加上可执行属性: chmod +x busybox,我这里没加,因为默认创建完之后就有x权限。
8 这时我们就可以使用busybox工具了, 如果希望在任何目录下都可以直接使用bosybox,则需要将路径/data/busybox export到path环境变量中:
export PATH=$PATH:/data/busybox
9 设置环境变量之后, 在命令行输入busybox, 即可看到其用法, 如:
在当前目录及其子目录中查找名为init.rc的文件可使用以下命令:
$busybox find . -name init.rc
10 安装busybox。
通过执行./busybox --install -s 我们会看到出现一些错误, 原因是因为Android系统的根目录和/sbin目录是只读的. 因此我们无法把一些常用命令安装到/bin目录下, 也不能修改/init.rc文件来设置PATH环境变量.
对于如何执行命令busybox --install -s 的默认安装路径, 这里我还不太清楚, 或许跟Makefile和编译busybox的相关设置有关.
尽管我们不可以在Android里面通过执行busybox --install -s 命令来安装常用命令, 我们却可以通过另外一个方法来把常用命令安装到Android里面.
方法很简单, 可以先在外面的linux系统中执行make install命令把相关的命令提取出来. 然后再通过命令adb push ./_install/bin /data/busybox/bin 把这些常用命令复制进Android系统中. 注意: make install安装命令的所在路径可通过执行make menuconfig进行设置, 默认为./_install目录下面.
这样,我们就不用每次使用busybox提供的一个命令时, 都要在前面加上busybox了.
11 修改/init.rc文件设置环境变量.
请参考帖子: 对Android启动过程的进一步研究
要提醒的是, 修改PATH环境变量的时候, 应该把busybox常用命令的路径"/data/busybox/bin"放在Android的常用命令路径"/system/bin"的前面, 否则, 先查找得到的将不是busybox的命令, 可以这样设置, 每次运行都要重新执行一下。
export PATH /data/busybox/bin:/data/busybox/sbin:/data/busybox/usr/bin:/data/busybox/usr/sbin:/sbin:/system/sbin:/system/bin:/system/xbin
参考网址:
https://gforge.ti.com/gf/project/omapandroid/wiki/?pagename=Installing+Busybox+command+line+tools
http://blog.csdn.net/a345017062/archive/2011/03/15/6250619.aspx
http://hi.baidu.com/btb368/blog/item/25dd4122d60acb5a9922ede4.html
相关推荐
6. **添加环境变量**:为了让Android系统能够识别并使用BusyBox中的命令,需要在环境变量中添加`/data/busybox`路径: ``` adb shell export PATH=$PATH:/data/busybox ``` #### 五、修改`init.rc`文件 为了确保...
重启Android设备后,可以在命令行中输入`busybox`命令,如果能够正常显示BusyBox的帮助信息,则表示BusyBox已经成功集成到Android系统中。 #### 四、使用BusyBox增强Android功能 BusyBox提供了大量的命令行工具,...
标题中的"ANDROID交叉编译后的BUSYBOX-1.19.4"指的是专门为Android系统通过交叉编译技术生成的BusyBox 1.19.4版本。 【交叉编译】 交叉编译是一种在一种平台上生成可在另一种平台运行的代码的编译过程。在这个案例...
This application is an BusyBox installer for Android. BusyBox combines tiny versions of many common UNIX utilities into a single small executable. It provides replacements for most of the utilities ...
在Android系统中,`BusyBox`是一个非常重要的工具集,它包含了数百个常见的Linux命令行工具,如ls、cp、mv等。默认情况下,Android系统可能预装了基础的`BusyBox`,但用户可能会选择替换为更新或功能更丰富的版本,...
adb push busybox /system/
在Android系统中,由于其轻量级的特性,Busybox常常被用于设备的系统维护、调试和自定义ROM的构建。它包含数百个命令,如ls、cat、cp、mv、mkdir等,几乎涵盖了日常操作系统的大部分功能。 Busybox的优势在于: 1. ...
Busybox for Android v1.20.2 Stable built by Linus Yang [Aug 12, 2012 Update] - Update to 1.20.2 stable [Features] - Tested on Android 2.1, 2.3, 4.0 and 4.1. Should be capable with all Android ...
Android busybox 可执行文件支持arm,arm64,x86,x86_64 版本1.34.1,更多版本见下面链接 https://busybox.net/downloads/binaries/ https://github.com/meefik/busybox
在android端使用busybox工具,可将附件的busybox复制到手机的system/xbin/目录下,修改权限之后就可以使用busybox,这样可以使用在android上很多linux命令
Busybox.apk 可以应用于Android开发的工具
7. **集成到Android系统**:如果打算将Busybox作为系统服务运行,还需要将其整合到Android系统的init脚本中,或者制作一个自启动的服务应用。 8. **安全性和权限**:在Android上使用Busybox时,要特别注意权限问题...
android中的busybox工具集。
busybox 1.20.2 for android. steps: adb remount adb push ./busybox-1.20.2-android2 /system/bin/ adb shell busybox ifconfig......
android可用的交叉编译后的busybox。支持70多个linux命令,可以极大扩展android命令集
Busybox 是一个集成了一系列 Linux 常用命令的单一可执行程序,被广泛应用于嵌入式系统和 Android 设备中,以提供基础的系统管理功能。由于它的体积小、功能全,因此被誉为“Linux 工具箱”。在 Android 系统中,...
经过我的真机(HTC G8)测试,这个busybox为最新的ARM V6可用的busybox。记得重命名busybox_1.19.0为busybox. 使用方法:adb push busybox /system/bin
busybox for android,编译器要用arm-eabi-4.4.0.tgz。 海天雄的android系统是没有busybox的。 Android并没有采用glibc作为C库,而是采用了Google自己开发的Bionic Libc,它的官方Toolchain也是基于Bionic Libc而并非...
busybox tool for android
简单地说,BusyBox就好像是个大工具箱,它集成压缩了Linux的许多工具和命令,也包含了 Android 系统的自带的shell。 Android busybox 的一个实用功能:进入adb shell 后编辑一些本地的文件,比如系统的一些xml配置...