浏览 11326 次
锁定老帖子 主题:为Android加入busybox工具
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-12-13
最后修改:2010-12-14
1. 直接执行命令emulator -shell; 2. 在启动emulator后,通过命令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-2007q3-51-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2文件 将压缩包解压到linux下某个目录, 并设置好环境变量, 使之能找到前缀为"arm-none-linux-gnueabi-"的交叉编译工具. 3. 进入busybox源码目录. 先执行make menuconfig命令对编译过程进行配置. 过程如下: Busybox Settings -> Build Options -> Busybox Settings -> Installation Options-> 4 执行make编译源码. 如果编译过程中产生无法找到头文件的错误, 可指定交叉编译器用到的头文件所在路径. 如 $make -I./home/jo/tool/arm-2008q3/arm-none-linux-gnueabi/libc/usr/include/ 5 编译成功后将得到一个名为busybox的可执行文件. 6 在Android的console下建立目录/data/busybox, 并使用下面的命令将文件busybox复制该目录中: adb push busybox /data/busybox 7 从Android的console进入/data/busybox目录, 为可执行文件busybox加上可执行属性: chmod +x busybox 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:/sbin:/system/sbin:/system/bin:/system/xbin http://blog.csdn.net/liaoshengjiong/archive/2009/03/04/3957725.aspx 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-12-13
frameworks 目录 (核心框架——java及C++语言)
. |-- base (基本内容) | |-- api (?都是xml文件,定义了java的api?) | |-- awt (AWT库) | |-- build (空的) | |-- camera (摄像头服务程序库) | |-- cmds (重要命令:am、app_proce等) | |-- core (核心库) | |-- data (字体和声音等数据文件) | |-- docs (文档) | |-- graphics (图形相关) | |-- include (头文件) | |-- keystore (和数据签名证书相关) | |-- libs (库) | |-- location (地区库) | |-- media (媒体相关库) | |-- obex (蓝牙传输库) | |-- opengl (2D-3D加速库) | |-- packages (设置、TTS、VPN程序) | |-- sax (XML解析器) | |-- services (各种服务程序) | |-- telephony (电话通讯管理) | |-- test-runner (测试工具相关) | |-- tests (各种测试) | |-- tools (一些叫不上名的工具) | |-- vpn (VPN) | `-- wifi (无线网络) |-- opt (可选部分) | |-- com.google.android (有个framework.jar) | |-- com.google.android.googlelogin (有个client.jar) | `-- emoji (standard message elements) `-- policies (Product policies are operating system directions aimed at specific uses) `-- base |-- mid (MID设备) `-- phone (手机类设备,一般用这个) hardware 目录 (部分厂家开源的硬解适配层HAL代码) |-- broadcom (博通公司) | `-- wlan (无线网卡) |-- libhardware (硬件库) | |-- include (头文件) | `-- modules (Default (and possibly architecture dependents) HAL modules) | |-- gralloc (gralloc显示相关) | `-- overlay (Skeleton for the "overlay" HAL module.) |-- libhardware_legacy (旧的硬件库) | |-- flashlight (背光) | |-- gps (GPS) | |-- include (头文件) | |-- mount (旧的挂载器) | |-- power (电源) | |-- qemu (模拟器) | |-- qemu_tracing (模拟器跟踪) | |-- tests (测试) | |-- uevent (uevent) | |-- vibrator (震动) | `-- wifi (无线) |-- msm7k (高通7k处理器开源抽象层) | |-- boot (启动) | |-- libaudio (声音库) | |-- libaudio-qsd8k (qsd8k的声音相关库) | |-- libcamera (摄像头库) | |-- libcopybit (copybit库) | |-- libgralloc (gralloc库) | |-- libgralloc-qsd8k (qsd8k的gralloc库) | |-- liblights (背光库) | `-- librpc (RPC库) |-- ril (无线电抽象层) | |-- include (头文件) | |-- libril (库) | |-- reference-cdma-sms (cdma短信参考) | |-- reference-ril (ril参考) | `-- rild (ril后台服务程序) `-- ti (ti公司开源HAL) |-- omap3 (omap3处理器) | |-- dspbridge (DSP桥) | |-- libopencorehw (opencore硬件库) | |-- liboverlay (overlay硬件库) | |-- libstagefrighthw (stagefright硬件库) | `-- omx (omx组件) `-- wlan (无线网卡) prebuilt 目录 (x86和arm架构下预编译的一些资源) . |-- android-arm (arm-android相关) | |-- gdbserver (gdb调试器) | `-- kernel (模拟的arm内核) |-- android-x86 (x86-android相关) | `-- kernel (空的) |-- common (通用编译好的代码,应该是java的) |-- darwin-x86 (drawin x86平台) | `-- toolchain (工具链) | |-- arm-eabi-4.2.1 | |-- arm-eabi-4.3.1 | `-- arm-eabi-4.4.0 |-- darwin-x86_64 (drawin x86 64bit平台) |-- linux-x86 (linux x86平台) | `-- toolchain (工具链,我们应该主要用这个) | |-- arm-eabi-4.2.1 | |-- arm-eabi-4.3.1 | |-- arm-eabi-4.4.0 | `-- i686-unknown-linux-gnu-4.2.1 (x86版编译器) |-- linux-x86_64 (linux x86 64bit平台) |-- windows (windows平台) `-- windows-x86_64 (64bit windows平台) system 目录 (底层文件系统库、应用及组件——C语言) . |-- Bluetooth (蓝牙相关) |-- core (系统核心工具盒接口) | |-- adb (adb调试工具) | |-- cpio (cpio工具,创建img) | |-- debuggerd (调试工具) | |-- fastboot (快速启动相关) | |-- include (系统接口头文件) | |-- init (init程序源代码) | |-- libacc (轻量级C编译器) | |-- libctest (libc测试相关) | |-- libcutils (libc工具) | |-- liblog (log库) | |-- libmincrypt (加密库) | |-- libnetutils (网络工具库) | |-- libpixelflinger (图形处理库) | |-- libsysutils (系统工具库) | |-- libzipfile (zip库) | |-- logcat (查看log工具) | |-- logwrapper (log封装工具) | |-- mkbootimg (制作启动boot.img的工具盒脚本) | |-- netcfg (网络配置netcfg源码) | |-- nexus (google最新手机的代码) | |-- rootdir (rootfs,包含一些etc下的脚本和配置) | |-- sh (shell代码) | |-- toolbox (toolbox,类似busybox的工具集) | `-- vold (SD卡管理器) |-- extras (额外工具) | |-- latencytop (a tool for software developers ,identifying system latency happen) | |-- libpagemap (pagemap库) | |-- librank (Java Library Ranking System库) | |-- procmem (pagemap相关) | |-- procrank (Java Library Ranking System相关) | |-- showmap (showmap工具) | |-- showslab (showslab工具) | |-- sound (声音相关) | |-- su (su命令源码) | |-- tests (一些测试工具) | `-- timeinfo (时区相关) `-- wlan (无线相关) `-- ti (ti网卡相关工具及库) packages 目录 . |-- apps (应用程序库) | |-- AlarmClock (闹钟) | |-- Bluetooth (蓝牙) | |-- Browser (浏览器) | |-- Calculator (计算器) | |-- Calendar (日历) | |-- Camera (相机) | |-- CertInstaller (在Android中安装数字签名,被调用) | |-- Contacts (拨号(调用)、联系人、通话记录) | |-- DeskClock (桌面时钟) | |-- Email (Email) | |-- Gallery (相册,和Camera类似,多了列表) | |-- Gallery3D (?3D相册) | |-- GlobalSearch (为google搜索服务,提供底层应用) | |-- GoogleSearch (google搜索) | |-- HTMLViewer (浏览器附属界面,被浏览器应用调用,同时提供存储记录功能) | |-- IM (即时通讯,为手机提供信号发送、接收、通信的服务) | |-- Launcher (登陆启动项,显示图片框架等等图形界面) | |-- Launcher2 (登陆启动项,负责应用的调用) | |-- Mms (?彩信业务) | |-- Music (音乐播放器) | |-- PackageInstaller (安装、卸载程序的响应) | |-- Phone (电话拨号程序) | |-- Provision (预设应用的状态,使能应用) | |-- Settings (开机设定,包括电量、蓝牙、设备信息、界面、wifi等) | |-- SoundRecorder (录音机,可计算存储所需空间和时间) | |-- Stk (接收和发送短信) | |-- Sync (空) -------○1 | |-- Updater (空) | `-- VoiceDialer (语音识别通话) |-- inputmethods (输入法) | |-- LatinIME (拉丁文输入法) | |-- OpenWnn (OpenWnn输入法) | `-- PinyinIME (拼音输入法) |-- providers (提供器,提供应用程序、界面所需的数据) | |-- ApplicationsProvider (应用程序提供器,提供应用程序启动项、更新等) | |-- CalendarProvider (日历提供器) | |-- ContactsProvider (联系人提供器) | |-- DownloadProvider (下载管理提供器) | |-- DrmProvider (创建和更新数据库时调用) | |-- GoogleContactsProvider (联系人提供器的子类,用以同步联系人) | |-- GoogleSubscribedFeedsProvider(设置信息提供器) | |-- ImProvider (空) | |-- ManagementProvider (空) | |-- MediaProvider (媒体提供器,提供存储数据) | |-- TelephonyProvider (彩信提供器) | |-- UserDictionaryProvider (用户字典提供器,提供用户常用字字典) | `-- WebSearchProvider (空) |-- services | |-- EasService (空) | `-- LockAndWipe (空) `-- wallpapers (墙纸) |-- Basic (基本墙纸,系统内置墙纸) |-- LivePicker (选择动态壁纸) |-- MagicSmoke (壁纸特殊效果) `-- MusicVisualization (音乐可视化,图形随音乐而变化) ○1里面有一个隐藏的.git文件夹,内容都是一样的,没有有意义的代码,config看似乎是一个下载程序,因此认为这些文件夹下没有实质东西。 vendor 目录 (厂家定制内容) |-- aosp (android open source project) | `-- products (一些板级规则) |-- htc (HTC公司) | |-- common-open (通用部分) | | `-- akmd (解压img用的工具) | |-- dream-open (G1开放部分) | |-- prebuilt-open (预编译开放部分) | `-- sapphire-open (sapphire这款型号开放内容) |-- pv-open (没东西) |-- qcom (里面基本是空的) `-- sample (google提供的样例) |-- apps (应用) | |-- client (用户) | `-- upgrade (升级) |-- frameworks (框架) | `-- PlatformLibrary (平台库) |-- products (产品) |-- sdk_addon (sdk添加部分) `-- skins (皮肤) `-- WVGAMedDpi (WVGA适用的图片) SDK和OUT目录没有列出 |
|
返回顶楼 | |