我們可以通過(guò)兩種方式進(jìn)入Android的console:
1. 直接執行命令emulator -shell;
2. 在啟動(dòng)emulator后,通過(guò)命令adb shell進(jìn)入。
之后我們就可以使用一些linux下常用的命令了,如ls,cat等。然而Android自帶的toolbox(位于/system/bin中)也太簡(jiǎn)略了點(diǎn),有些命令如find,Android并不支持或者支持得不好。下面將介紹如何為Android加入busybox工具,通過(guò)編譯得到一個(gè)可以在 Android里面運行的busybox工具,我們就可以使用眾多常見(jiàn)的linux命令了,如find,touch等。
步驟如下:
1. 首先去busybox主頁(yè) 下載最新版本的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即可。
最后得到一個(gè)arm-2007q3-51-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2文件
將壓縮包解壓到linux下某個(gè)目錄, 并設置好環(huán)境變量, 使之能找到前綴為"arm-none-linux-gnueabi-"的交叉編譯工具.
3. 進(jìn)入busybox源碼目錄.
先執行make menuconfig命令對編譯過(guò)程進(jìn)行配置. 過(guò)程如下:
Busybox Settings -> Build Options ->
Build BusyBox as a static binary (no shared libs) 這個(gè)要選上,因上這樣子編譯出來(lái)的busyBox才是可以獨立運行的。 (/home/jo/tool/arm-2008q3/bin/arm-none-linux-gnueabi-) Cross Compiler prefex 這是交叉編譯器的"路徑+前綴",要根據具體的情況來(lái)設置。
Busybox Settings -> Installation Options->
Don’t use /usr 這樣子編譯出來(lái)的busybox才不會(huì )安裝到你主機的/usr目錄下。一定要選上。
4 執行make編譯源碼. 如果編譯過(guò)程中產(chǎn)生無(wú)法找到頭文件的錯誤, 可指定交叉編譯器用到的頭文件所在路徑. 如
$make -I./home/jo/tool/arm-2008q3/arm-none-linux-gnueabi/libc/usr/include/
5 編譯成功后將得到一個(gè)名為busybox的可執行文件.
6 在A(yíng)ndroid的console下建立目錄/data/busybox, 并使用下面的命令將文件busybox復制該目錄中:
adb push busybox /data/busybox
7 從Android的console進(jìn)入/data/busybox目錄, 為可執行文件busybox加上可執行屬性: chmod +x busybox
8 這時(shí)我們就可以使用busybox工具了, 如果希望在任何目錄下都可以直接使用bosybox,則需要將路徑/data/busybox export到path環(huán)境變量中:
export PATH=$PATH:/data/busybox
9 設置環(huán)境變量之后, 在命令行輸入busybox, 即可看到其用法, 如:
在當前目錄及其子目錄中查找名為init.rc的文件可使用以下命令:
$busybox find . -name init.rc
10 安裝busybox。
通過(guò)執行./busybox --install -s 我們會(huì )看到出現一些錯誤,原因是因為Android系統的根目錄和/sbin目錄是只讀的. 因此我們無(wú)法把一些常用命令安裝到/bin目錄下,也不能修改/init.rc文件來(lái)設置PATH環(huán)境變量.
對于如何執行命令busybox --install -s 的默認安裝路徑, 這里我還不太清楚, 或許跟Makefile和編譯busybox的相關(guān)設置有關(guān).
盡管我們不可以在A(yíng)ndroid里面通過(guò)執行busybox --install -s 命令來(lái)安裝常用命令, 我們卻可以通過(guò)另外一個(gè)方法來(lái)把常用命令安裝到Android里面.
方法很簡(jiǎn)單, 可以先在外面的linux系統中執行make install命令把相關(guān)的命令提取出來(lái). 然后再通過(guò)命令adb push./_install/bin /data/busybox/bin 把這些常用命令復制進(jìn)Android系統中. 注意: makeinstall安裝命令的所在路徑可通過(guò)執行make menuconfig進(jìn)行設置, 默認為./_install目錄下面.
這樣,我們就不用每次使用busybox提供的一個(gè)命令時(shí), 都要在前面加上busybox了.
11 修改/init.rc文件設置環(huán)境變量.
請參考帖子: 對Android啟動(dòng)過(guò)程的進(jìn)一步研究
要提醒的是, 修改PATH環(huán)境變量的時(shí)候,應該把busybox常用命令的路徑"/data/busybox/bin"放在A(yíng)ndroid的常用命令路徑"/system/bin"的前面,否則, 先查找得到的將不是busybox的命令, 可以這樣設置:
export PATH /data/busybox/bin:/sbin:/system/sbin:/system/bin:/system/xbin
http://blog.csdn.net/liaoshengjiong/archive/2009/03/04/3957725.aspx
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。