Android系统platform-tools包详解

前言

由于最近工作一直很忙,刚好这几天有点空,就想着写点不一样的文章,就想到平时大多不会太多关注sdk下面工具包内工具和用途,我会用三四篇文章来全部介绍一边,下面我会分三部分来讲解:tools、platform-tools、build-tools

platform-tools包介绍

platform-tools保存着一些通用工具,比如adb、和aapt、aidl、dx等文件,Android123提示,这里和platforms目录中tools文件夹有些重复,主要是从android2.3开始这些工具被划分为通用了。

sdk环境配置

首先环境配置sdk包路径,举例mac和window两个情况,mac配置如下: 启动Mac自带的终端Terminal。
  1. 进入当前用户的home目录。
    在命令行输入echo $HOME
  2. 创建.bash_profile文件。
    命令行输入touch .bash_profile
  3. 打开.bash_profile文件。
    命令行输入open -e .bash_profile 此命令行输入完毕后,会自动弹出 .bash_profile 文件的编辑窗口
  4. 在.bash_profile文件中输入 export PATH=/Users/您的用户名/文件路径/platform-tools/:$PATH
    注意:如果需要添加多个路径到PATH下时,需要用“:”(英文的冒号)隔开。因为android和adb这些命令是在不同的文件夹中的,格式是:PATH=${PATH}
    :路径1:路径2、另外,如果指定多个路径,结尾就不用写:$PATH了。例如:
    export PATH=${PATH}:/Users/ShaneChen/Documents/android-sdk-macosx/platform-tools:/Users/ShaneChen/Documents/android-sdk-macosx/tools
  5. 保存文件。
    直接关闭.bash_profile文件,即可自动保存您输入的内容。 
  6. 更新刚配置的环境变量
    在命令行中输入source .bash_profile 
  7. 验证配置是否成功
    输入adb,如果没有出现-bash: adb: command not found;而出现adb的命令参数解释。则表明环境变量配置成功
Window 配置如下:

1、下载Android SDK,点击安装,直接默认路径即可! 下载地址:http://developer.android.com/sdk/index.html

2、默认路径安装后,安装完成,开始配置环境变量。

3、打开计算机属性——高级系统设置——环境变量(如上文)

4、新建一个环境变量,变量名:ANDROID_HOME,变量值:D:\Program Files\android-sdk-windows(以你安装目录为准,确认里面有toolsadd-ons等多个文件夹),点击确认。

5、在用户变量PATH后面加上变量值;%ANDROID_HOME%\platform-tools;点击确认即可。 在系统变量path中添加;D:\Program Files\android-sdk-windows\tools

6Android SDK配置完成,接下来验证配置是否成功。

7、点击运行——输入cmd——回车——输入adb——回车,如果出现一堆英文,如下图所示,即表示配置成功,在输入Android,启动Android SDK Manager

adb命令介绍

Android 调试系统是一个面对客户服务系统,包括三个组成部分:

  • 一个在你用于开发程序的电脑上运行的客户端。你可以通过shell端使用adb命令启动客户端。 其他Android工具比如说ADT插件和DDMS同样可以产生adb客户端.
  • 在你用于发的机器上作为后台进程运行的服务器。该服务器负责管理客户端与运行于模拟器或设备上的adb守护程序(daemon)之间的通信。.
  • 一个以后台进程的形式运行于模拟器或设备上的守护程序(daemon)。.

当你启动一个adb客户端,客户端首先确认是否已有一个adb服务进程在运行。如果没有,则启动服务进程。当服务器运行, adb服务器就会绑定本地的TCP端口5037并监听adb客户端发来的命令,—所有的adb客户端都是用端口 5037与adb服务器对话的.

接着服务器将所有运行中的模拟器或设备实例建立连接。它通过扫描所有5555到5585范围内的奇数端口来定位所有的模拟器或设备。一旦服务器找到 了adb守护程序,它将建立一个到该端口的连接。请注意任何模拟器或设备实例会取得两个连续的端口——一个偶数端口用来相应控制台的连接,和一个奇数端口 用来响应adb连接。比如说:

模拟器1,控制台:端口5554
模拟器1,Adb端口5555
控制台:端口 5556
Adb端口5557...

1.查询模拟器/设备实例

adb devicesList of devices attached emulator-5554  deviceemulator-5556  deviceemulator-5558  device

如果当前没有模拟器/设备运行,adb则返回 no device

2.给特定的模拟器/设备实例发送命令

adb -s emulator-5556 install helloWorld.apk

注意这点,如果没有指定一个目标模拟器/设备实例就执行 -s 这个命令的话,adb会产生一个错误.

3、安装软件

adb install <path_to_apk>

4、转发端口

adb forward tcp:6100 tcp:7100

同样地,可以使用adb来建立命名为抽象的UNIX域套接口,上述过程如下所示:

adb forward tcp:6100 local:logd 

5、从模拟器/设备中拷入或拷出文件

从模拟器或者设备中复制文件或目录,使用(如下命):

adb pull <remote> <local>

将文件或目录复制到模拟器或者设备,使用(如下命令)

adb push <local> <remote>

在这些命令中, <local> 和<remote> 分别指通向自己的发展机(本地)和模拟器/设备实例(远程)上的目标文件/目录的路径

下面是一个例子::

adb push foo.txt /sdcard/foo.txt

dmtracedump命令介绍

 dmtracedump原本的用意是将整个调用过程和时间分析结合,以函数调用图的形式表现出来。
执行./dmtracedump –g test.png test.trace

生成.trace文件

      Android.os.Debug类,其中重要的两个方法Debug.startMethodTracing()和Debug.stopMethodTracing()。这两个方法用来创建.trace文件,将从Debug.startMethodTracing()开始,到Debug.stopMethodTracing()结束,期间所有的调用过程保存在.trace文件中,包括调用的函数名称和执行的时间等信息。
    把下面代码分别在加在调试起始代码的位置,和终止位置。

[java]  view plain  copy
 print ?
  1. Debug.startMethodTracing(“test”);   
  2. Debug.stopMethodTracing();  

其中参数test是要创建的trace文件的名称,test.trace。默认路径是/sdcard/test.trace,也可以自己制定/data/log/test,表示文件在/data/log/test.trace。
    在SDK中执行  :

    ./traceview test.trace

    我们可以得到

      1.程序中每个线程调用方法的启动和停止时间



Fastboot命令介绍

Fastboot是Android快速升级的一种方法,Fastboot的协议fastboot_protocol.txt在源码目录./bootable/bootloader/legacy下可以找到。

Fastboot客户端是作为Android系统编译的一部分,编译后位于./out/host/linux-x86/bin/fastboot目录下。

Fastboot命令实例:sudo fastboot flash kernel path-to-kernel/uImage

烧写rootfs类似:sudo fastboot flash system path-to-system/system.img

升级系统

sudo fastboot flash bootloader u-boot.bin
sudo fastboot flash kernel uImage
sudo fastboot flash system system.img
sudo fastboot flash userdata userdata.img
sudo fastboot flash ramdisk ramdisk-uboot.img
sudo fastboot erase cache

重启系统

sudo fastboot reboot

不烧写flash情况下调试

sudo fastboot boot uImage 或者u-boot.bin

查看版本号

sudo fastboot getver:version

复位到bootloader

sudo fastboot reboot-bootloader

etc1tool命令介绍

etc1tool是一个命令行工具,可以将PNG图像压缩为etc1标准,并且可以进行解压缩。

用法:

etc1tool infile [--help | --encode | --encodeNoHeader | --decode] [--showDifference diff-file] [-o outfile]

选项 描述
infile 要压缩的文件
–help 帮助
–encode 根据png文件创建ETC1文件
–encodeNoHeader 根据png文件创建ETC1数据文件
–decode 根据ETC1文件创建png文件
–showDifference diff-file 原始图像和解码图像比对到diff-file文件中
–o outfile 定义输出文件名

hprof-conv命令介绍

DMS 可以将当前的内存 Dump成一个 hprof格式的文件,MAT 读取这个文件后会给出方便阅读的信息,配合它的查找,对比功能,就可以定位内存泄漏的原因。

·        获取 hprof文件 
点击工具栏上的  按钮,将内存信息保存成文件。 如果是用 MAT Eclipse 插件获取的 Dump文件,则不需要经过转换,Adt会自动进行转换然后打开。

·        转换 hprof文件 
DDMS Dump 出的文件要经过转换才能被 MAT识别,Android SDK提供了这个工具 hprof-conv (位于 sdk/tools下)

·    ./hprof-conv xxx-a.hprof xxx-b.hprof

·        用 MAT打开转换后的 hprof文件 

sqlite3命令介绍

打开数据库

在adb shell模式下执行命令sqlite3 + 数据库名称,例如打开email中的EmailProvider.db数据库:

sqlite3特殊命令

大多数候,sqlite3读入输入行,并把它们传递到SQLite数据库中去运行。但是如果输入行以一个点(“.”)开始,那么这行将被sqlite3程序自己截取并解释。例如输入.help,结果如下 

列表中是sqlite3提供的所有以.开头的命令,它们中的一些命令使用方法如下:

 

mode命令

在列表中可以看出,sqlite3提供了八种mode,你可以通过使用.mode命令来进行切换,默认是list模式:

默认的输出格式是“列表”。在列表模式下,每条查询结果记录被写在一行中并且每列之间以一个字符串分割符隔开。默认的分隔符是一个管道符号(“|”)。

 

在“line"模式下,每一个位于记录中的列在它自己那行显示。每行由列名、一个等号和列数据组成。下一条记录以一个空行隔开。这是一个行模式输出的例子:

在"column"模式下,每条记录在一个单独的行中以数据列对齐的方式显示。列如:

 

.separator命令

你可以用“.separator”命令来改变分界符。例如,为了把分割符改为一个逗号和一个空格,你可以这样做:

 

 

.width命令

你可以用“.width”命令来调整列宽,例如:

上面例子中".width"命令设置第一列宽为12第二列宽为6。其它的列宽不变。你可以指定与你查询结果需要的列数一样多的“.width”参数。如果你指定一列宽为0,那么这个列宽将自动以下面三个数字中的最大值做为列宽:10、表头宽度和最宽的数据列的宽度。这可以让列自动调整宽度。每列的默认设置为自动调整的0值。

 

.header命令

出现在输出开头两行的列标示可以用".header"命令关闭。在上面的例子中,列标示是打开的。可以用下面的方法关闭列标示:

 

 

.table命令

进入数据库后可以用".table"命令查看数据库中有哪些表:

 

.output命令

默认情况下,sqlte3把结果显示到标准输出,你可以用“.output”命令改变它。只须把用.output命令 + 输出结果文件名,然后所有后续查询结果将被写到那个文件中。用“.output stdout”再一次改为标准输出。例如:





















发布了50 篇原创文章 · 获赞 7 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/Apple_hsp/article/details/51459930
今日推荐