天天看點

Android模拟器下添加busybox(圖文)

1 什麼是busybox?

     BusyBox 是一個內建了一百多個最常用linux指令和工具的軟體。BusyBox 包含了一些簡單的工具,例如ls、 cat 和 echo等等,還包含了一些更大、更複雜的工具,例如 grep、find、mount 以及 telnet。有些人将 BusyBox 稱為 Linux 工具裡的瑞士軍刀。簡單的說BusyBox就好像是個大工具箱,它內建壓縮了 Linux 的許多工具和指令。也包含了 Android 系統的自帶的shell.其官網是: http://www.busybox.net/

   為什麼要在Android中加入busybox?

   用過adb shell的人應該知道,在預設情況下,adb shell下是不能用clear,grep, find,vi等指令的,甚至連Tab鍊自動補全功能都不能用,對于已經習慣了使用這些指令的碼農們來說,這是件比較悲摧的事情。幸運地是,我們有了busybox!

2 下載下傳busybox

打開下載下傳界面:http://www.busybox.net/downloads/binaries/ ,如下圖:

Android模拟器下添加busybox(圖文)

選擇最新的版本: 1.19.0, 然後進入下一個界面:

Android模拟器下添加busybox(圖文)

選擇适合你的裝置的版本進行下載下傳,這裡我們為Android子產品器下載下傳busybox-armv6l.

下載下傳下來後,将其重命名為busybox:

[plain]  view plain copy

  1. $mv busybox-armv6l busybox  
  2. $chmod 755 busybox  

3 放入模拟器

首先用adb shell進入模拟器,在/data目錄下建立一個busybox的目錄,然後将busybox放入此目錄下.

[plain]  view plain copy

  1. $adb shell  
  2. #cd /data  
  3. #mkdir busybox  
  4. #exit  
  5. $adb shell push busybox /data/busybox  

如下圖:

Android模拟器下添加busybox(圖文)

4 安裝并運作busybox所提供的工具

重新adb shell連接配接上模拟器,進入到/data/busybox目錄下,然後輸入

[plain]  view plain copy

  1. #./busybox clear  

試試是不是就可以生效了呢?呵呵

可是這樣還是不是很好使用,因為每次使用 busybox指令時都得在指令行前面加上./busybox字首,這個很麻煩,是以,我們先将bosybox提供的這些指令安裝到模拟器下,就可以省去這些麻煩了。

安裝:

在/data/busybox目前目錄下,輸入:

[plain]  view plain copy

  1. #./busybox --install ./  

--install 後面的./表示安裝到目前目錄,之是以要安裝到目前目錄,是因為預設安裝到/system/bin目錄下或/system/xbin目錄下是不能成功的,因為沒有足夠的權限.

然後在目前目錄下再次輸入:

[plain]  view plain copy

  1. #./clear  

可以看到clear指令生效了,比之前已前進了一步了.不過還是不是很好,是以運作 busybox所提供的指令必須進入到/data/busy目錄或在指令中輸入./data/busybox/clear,諸如這些的指令,還是比較麻煩,是以,接下來需要修改一個PATH的值:

[plain]  view plain copy

  1. # export PATH=/data/busybox:$PATH  

然後試着在任何目錄下運作clear,可以看到已經OK了。恭喜你,終于安裝busybox成功了!

不過,還是有些東西不是很友善,至少還存在以下三個不足之處:

[plain]  view plain copy

  1. 1 Tab 鍵的自動補全功能還是不行.  
  2. 2 #号前沒有顯示目前路徑,這使我們經常不知目前已經進入到目錄的哪一層了.  
  3. 3 退出adb shell後再次進入,得重新設定PATH值才能恢複友善使用busybox工具.  

至于前面這個問題,其實busybox下有一個ash的shell,直接運作它:

[plain]  view plain copy

  1. #ash  

然後我們就可以試試,看看是不是tab鍵自動補全功能還顯示目前路徑的功能已經有了呢.OK,前面兩個問題已經解決,下次我去使用bosybox的時候,首先先運作ash就可以了.這樣運作之後,原本沒有任何顔色的顯示也會變成豐富多彩起來,如下圖所示:

Android模拟器下添加busybox(圖文)

還剩下最後一個問題.最後一個問題的解決方法,在adb shell後,Android模拟器根目錄下有一個init.rc檔案.如上圖,用vi打開(vi也是busybox提供的工具),在最後一行加入如下指令:

[plain]  view plain copy

  1. # export PATH=/data/busybox:$PATH  

然後儲存,系統提示目前檔案為隻讀檔案,不能儲存.看來沒有寫的權限,需要擷取足夠權限後再來修改此檔案,然後儲存才能解決此第三個問題.

隻可惜此檔案為隻讀權限,我試了安裝z4root軟體擷取root權限,修改default.prop等諸多方法,都沒能儲存修改init.rc的内容。。。估計在adb 下是不能修改它的。可以嘗試adb remount

我知道的另一種方法就是在源碼下的out目錄下修改 init.rc檔案,然後重新生成鏡像檔案,再重新啟動模拟器,但是這種方法相當于重新刷機。有一定的局限。