Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4249769
  • 博文数量: 601
  • 博客积分: 15410
  • 博客等级: 上将
  • 技术积分: 6884
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-16 08:11
个人简介

独学而无友,则孤陋而寡闻!

文章分类

全部博文(601)

文章存档

2020年(1)

2018年(4)

2017年(7)

2016年(42)

2015年(25)

2014年(15)

2013年(36)

2012年(46)

2011年(117)

2010年(148)

2009年(82)

2008年(37)

2007年(41)

分类: 嵌入式

2012-04-14 17:11:56

3.6  Android SDK开发工具使用方法

Android SDK开发工具中有几个重要的指令:adb、ddms、emulator与mksdcard、dx tool等,先前我们已经使用了其中的一些指令,本节会再详细介绍这些指令的高级用法与应用。

3.6.1  ADB系统除错与连结工具

在前面几个章节,我们已经多次使用adb指令进行APK组件的安装,虽然adb(Android debug bridge)是Android系统的除错工具,但是从前面章节的放置文件到SD存储卡与安装APK应用程序,应该已经体会到adb是操作Android 系统不可或缺的重要工具。adb是与Android仿真器沟通最重要的桥梁。如果要跟Android底层的Linux操作系统进行沟通,就必须通过 Android SDK tools目录下的adb (android debug bridge) 指令来进行操作。这个adb除了提供程序码除错功能外,最重要的功能是它可以将Eclipse编译好所生成的Android应用程序组件Android Package (apk),直接连接安装到Android仿真器上或者手机装置上,因此程序开发在Eclipse环境中完成后,Android仿真器上就直接会有这个应 用程序的图标icon了。另外adb除错工具也支持命令列模式shell指令,可以输入指令来进行一些除错动作。这些实用的adb指令如下:

  1. $ adb devices                           (显示当前有多少个仿真器正在运行)  
  2. List of devices attached   
  3. emulator-5554  device  
  4. emulator-5556  device  
  5. emulator-5558  device 

运行adb devices会显示有多少个仿真器正在运行,上面的例子指出有5554、5556、5558三个仿真器正在运行,如果没有运行仿真器,则显示 no device。

  1. $ adb -s <serialNumber> <command>       (指定仿真器来操作)  
  2. $ adb -s emulator-5554 install email.apk 

adb -s可以指定仿真器序号,用来选择操纵哪一个仿真器,例如adb -s emulator-5554 install email.apk,指定将email.apk安装在仿真器emulator-5554。

  1. $ adb install apkfile                   (安装APK应用程序组件)  
  2. 例如:adb install email.apk  
  3. $ adb uninstall package                 (移除APK应用程序组件)  
  4. 例如:adb uninstall com.android.email 

adb install与adb uninstall可以用来安装与移除APK 应用程序组件,但是必须注意的是adb install后面是接apk文件名称,然而adb uninstall 后面是域名形式的package名称,例如com.android.email。详细的package名称可以由Android操作系统目录/data /data或者由/data/app来查得。

  1. $ adb shell                         (进入Android系统指令列模式)  
  2. $ ls  
  3. $ dmesg                             (查看Android Linux Kernel运作消息) 

运行adb shell可以进入Android操作系统指令列模式,如此一来就可以直接看到Android系统的目录结构,因为Android是Linux操作系统的 一种,所以Shell指令和Linux系统是相同的,例如ls(显示文件目录)、cd(进入目录)、rm(删除文件)、mv(移动文件)、mkdir(生 成目录)与rmdir(删除目录)等指令。

  1. $ adb push <file/dir> /sdcard               (复制文件到SD存储卡)  
  2. 例如:adb push mp3 /sdcard  
  3. $ adb pull <file/dir> .                 (从Android系统下载文件) 
  4. 例如:adb pull /data/app/com.android.email

adb push可以上载文件到SD存储卡目录/sdcard,因为其他目录有访问权限问题无法写入,所以一般都是将文件放到/sdcard目录下。adb pull则是将文件从Android系统下载到一般计算机上,常用的例子除了从/sdcard下载文件外,也可以从/data/data或/data /app目录将APK文件抽出来,提供已经安装成功的APK应用程序,给其他使用者安装。

  1. $ adb logcat                            (监控仿真器运作记录) 

adb logcat会实时监控Android仿真器运行时所生成的记录,此项功能对于程序开发人员用来除错帮助很大,开发人员可以从记录中得到应用程序运行时发生的错误消息。运行adb logcat后,若要离开监控模式,可以按Ctrl+C。

  1. $ adb bugreport                     (生成adb除错报告) 

开发人员若要进一步得知系统生成的所有错误消息报告,可以运行adb bugreport指令来实现,该指令会将Android系统的dumpsys、dumpstate与logcat信息都显示出来。

  1. $ adb get-state                     (获得adb服务器运作状态) 

adb get-state会显示adb服务器的运作状态为何,共有offline (脱机)、bootloader (开机中)、与device (运作中) 三种状态。

  1. $ adb start-server                      (启动adb服务器)  
  2. $ adb kill-server                       (关掉adb服务器) 

通常启动Android服务器时,就会启动adb服务器了。可以使用adb get-state来查知adb的状态。如果没有启动可以运行adb start-server启动它,若不想进行除错监控,可以运行adb kill-server关掉它。

  1. $ adb forward tcp:6100 tcp:7100         (更改仿真器网络TCP通信端口)  
  2. Android仿真器内定的TCP port为6100,若有需要可以运行adb forward指令改成另外一个通信端口。  
  3. $ adb version                       (显示adb版本) 

您可以运行adb version查看当前使用的Android SDK adb版本。

  1. $ adb help                          (显示adb指令参数) 

adb help会显示所有adb指令的用法,详细的adb指令参数如表3-1所示。

表3-1  adb指令参数表

   

   

参数

adb -d

Android手机用USB连接计算机时,

可通过adb -d对该装置下命令

adb -e

对正在运行的仿真器下指令

adb -s

指定仿真器序号

一般用途

adb devices

显示当前启动的仿真器装置序号

adb help

显示adb指令用法

adb version

显示adb版本

信息处理

adb install

安装APK应用程序组件

adb push

上传文件或目录

adb pull

下载文件或目录

指令列

adb shell

进入Android系统命令列模式

除错

adb logcat

监控仿真器运作记录

adb bugreport

生成adb除错报告

服务器

adb start-server

启动adb服务器

adb kill-server

关闭adb服务器

adb get-state

取得adb服务器运作状态

adb get-serialno

获得仿真器运行序号

网络

adb forward tcp:port

更改仿真器的网络TCP通信端口

阅读(8909) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~