`
zhujianjia
  • 浏览: 477569 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

我们可以通过两种方式进入Android的console: 1. 直接执行命令emulator -shell; 2. 在启动emulator后,通过命令a

 
阅读更多

我们可以通过两种方式进入Android的console: 

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 -> 

    

  • Build BusyBox as a static binary (no shared libs) 这个要选上,因上这样子编译出来的busyBox才是可以独立运行的。
  •      (/home/jo/tool/arm-2008q3/bin/arm-none-linux-gnueabi-) Cross Compiler prefex 这是交叉编译器的"路径+前缀",要根据具体的情况来设置。 
         Busybox Settings -> Installation Options->

        
  • Don’t use /usr        这样子编译出来的busybox才不会安装到你主机的/usr目录下。一定要选上。

  • 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 

     

    分享到:
    评论

    相关推荐

      TEAM.R2R.Roland.Cloud.Emulator.v1.1.0-R2R.rar_R2R Team_cloud_r2r

      TEAM.R2R.Roland.Cloud.Emulator.v1.1.0-R2R

      android adb shell 命令大全

      一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录: adb shell logcat -b radio 28、获取设备的ID和序列号: adb get-product adb get-serialno 29、访问...

      SDK文件下缺少emulator-2

      SDK文件下缺少emulator-1 还要下载 SDK文件下缺少emulator-2 教程 路径https://blog.csdn.net/zhw0596/article/details/80593160 11:43 Emulator: [5984]:ERROR:android/android-emu/android/qt/qt_setup.cpp:28:Qt...

      Android-Terminal-Emulator.zip

      利用命令访问android系统底层linux shell 这软件是google play市场中的推荐软件,排名很靠前,值得技术人员一用. --------------------- Access your Android's built-in Linux command line shell Android Terminal ...

      tpm-emulator-0.7.5.tar.gz

      Tpm_emulator模拟tpm芯片,相当于一个虚拟的芯片,配合Trousers协议栈使用,本人已在虚拟机CentOs7x下测试可以使用。

      adb基本命令.txt

      adb基本命令使用等1.显示系统中全部Android平台: android list target 2. 显示系统中全部AVD(模拟器): android list avd 3. 创建AVD(模拟器): android create avd --name 名称 --target 平台编号 ...

      屏蔽警告:WARNING: EmulatorService.cpp:448: Cannot find certfile: D:\Android\AVD\.android\emulator-grpc.

      如何屏蔽警告:EmulatorService.cpp:448:找不到证书文件:D:\Android\AVD.android\emulator-grpc.cer安全性将被禁用。??? 我一直想解决我的模拟器的一个问题: Emulator: emulator: WARNING: EmulatorService....

      Python库 | gcp_storage_emulator-2021.6.2-py3-none-any.whl

      资源分类:Python库 所属语言:Python 资源全名:gcp_storage_emulator-2021.6.2-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

      TEAM.R2R.Roland.Cloud.Emulator.v1.1.0-R2R

      TEAM.R2R.Roland.Cloud.Emulator.v1.1.0 SUPPLiER : TEAM R2R | DATE : 2017.11.23 CRACKER : TEAM R2R | NUMBER : R2R-6464 PACKAGER : TEAM R2R | TYPE : EMULATOR

      Mali_OpenGL_ES_Emulator-v3.0.1.g72cc2-Windows-64bit.zip

      模拟器喵″

      Android Emulator Online-1.8.1.zip

      名称:Android Emulator Online ---------------------------------------- 版本:1.8.1 作者:bowmasters.hack 分类:生产工具 ---------------------------------------- 概述:最好的Android模拟器在线。 免费...

      android-a programmer's guide

      1 What Is Android? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Brief History of Embedded Device Programming . . . . . . . . . . . . . . . . . . . . ...

      Android Emulator - Pixel_2_API_29_5554 2021-04-12 18-17-16.mp4

      Android Emulator - Pixel_2_API_29_5554 2021-04-12 18-17-16.mp4

      android-emulator-m1-preview

      Android Emulator M1预览 这是M1上一些基本的Android仿真功能的预览。 仍然存在许多问题,但是应用程序是在基本级别上运行的。 即将通过更多修复程序进行更新。 发行标签与此提交相对应: : 已知的问题 Webview在...

      Android-Terminal-Emulator-源码.rar

      Android-Terminal-Emulator-源码.rar

      android-emulator-webrtc

      android-emulator-webrtc 它包含一组React组件,可用于从浏览器与android模拟器进行交互。 它旨在与连接到正在运行的仿真器的一起使用。 有关如何运行可通过网络访问的仿真器的示例,请参见脚本。 npm install --...

      SDK文件下缺少emulator-1

      11:43 Emulator: [5984]:ERROR:android/android-emu/android/qt/qt_setup.cpp:28:Qt library not found at D:\AndroidSDK\emulator\lib64\qt\lib 11:43 Emulator: Could not launch 'D:\AndroidSDK\emulator/qemu/...

      新版Android开发教程.rar

      ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    Global site tag (gtag.js) - Google Analytics