本节书摘来自华章出版社《深入理解Android》一书中的第1章,第1.2节,作者孟德国 王耀龙 周金利 黎欢,更多章节内容可以访问云栖社区“华章计算机”公众号查看
1.2 Android常用工具使用及相关技巧说明
Android SDK本身包含很多帮助开发人员设计、开发、测试和发布 Android 应用的工具,本节将讨论最常用的工具。
开发利器adt-bundle,是封装Eclipse和adt的集成开发工具,编写、调试Android程序的Java代码,并集成DDMS。
SDK Manager,该工具包含很多重要的功能,包括管理不同的 Android SDK 版本(构建目标)。Android 的版本众多,并且API有些兼容性问题。另外,该工具还用于管理 Android 虚拟设备配置(AVD),用来配置模拟器,如图1-1所示。
adb(Android Debug Bridge)是Android提供的一个通用的调试工具。借助这个工具,我们可以管理设备或手机模拟器的状态,快速更新设备或手机模拟器中的代码,如应用或Android系统升级,在设备上运行shell命令,管理设备或手机模拟器上的预定端口,在设备或手机模拟器上复制或粘贴文件等。
DDMS的全称是Dalvik Debug Monitor Service,它提供多种调试分析手段,如测试设备截屏、logcat输出、模拟电话呼叫、SMS、生成虚拟地理坐标、查看特定进程的线程以及堆信息等。如图1-2所示。
Android的模拟器,可以模拟不同的设备,用来运行程序,查看运行结果,测试 Android 应用的运行。如图1-3所示。
logcat是Android中的一个命令行工具,可以用于得到程序的log信息。Android日志系统提供了记录和查看系统调试信息的功能。日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过 logcat 命令来查看和使用。
Hierarchy Viewer是随Android SDK发布的工具,位置在tools文件夹下,名为hierarchyviewer.bat,如图1-4所示。它是Android自带的非常有用而且使用简单的工具,可以帮助我们更好地检视和设计用户界面(UI),绝对是UI检视的利器。 具体来说主要功能有两个:
獯涌墒踊慕嵌戎惫鄣鼗竦肬I布局设计结构和各种属性的信息,帮助我们优化布局设计;
饨岷蟙ebug,观察特定的UI对象进行invalidate和requestLayout等操作的过程。
九宫格绘画工具(draw9patch.bat),如图1-5所示,可以很容易地通过一个所见即所得(WYS|WYG)的编辑器来创建一个九宫格NinePatch图。
Monkey Test Tools 包括 Monkey exerciser tool 和 monkeyrunner工具,主要用于程序的自动化测试。
ProGuard 是一个免费的 Java类文件的压缩、优化、混淆器。它删除没有用的类、字段、方法与属性,使字节码最大程度地优化,使用简短且无意义的名字来重命名类、字段和方法。Eclipse已经把Proguard集成在一起了。
1.2.1 启动Android模拟器
进入Android源码主目录,设置相关环境变量,启动模拟器:
source build/envsetup.sh
lunch full-eng
emulator
emulator程序在out/host/linux-x86/bin/,它会查找ANDROID_PRODUCT_OUT变量,然后在该目录下加载模拟器系统文件,共4个:
system.img:系统分区文件;
ramdisk.img:ramdisk分区,用于引导系统;
userdata.img:用户数据分区;
kernel-qemu:模拟器内核。
1.2.2 Android调试工具adb的使用方法
adb(Android Debug Bridge)是Android提供的一个通用的调试工具。借助这个工具,我们可以管理设备或手机模拟器的状态。adb常用功能如下:
在设备上运行shell命令;
查看logcat日志;
安装卸载程序;
在设备和PC端互相推送文件;
快速重启。
下面依据功能分类介绍adb各种参数的作用。
- 设备连接管理
查看已连接设备,命令:adb devices;
通过IP连接设备,命令:adb connect ip:port;
复位链接,命令:adb kill-server。
Windows系统需要为Android设备安装驱动后,才可以与之通信。与之对应,Ubuntu系统,需要添加Android设备对应到udev rule,系统才可以与设备交互。Windows系统有时会提示“ADB server didn't ACK failed to start daemon ”连接不上,这很可能是因为有其他程序占用了adb的服务端口,需要找到占用5327端口的程序,在任务管理器关闭它。
- 安装软件
- install :这个命令将指定的apk文件安装到设备上;
adb install -r :如果加-r参数会覆盖原来安装的软件并保留数据。
apk文件名不要使用中文且不要有空格号。
- 卸载软件
- uninstall <包名>;
adb uninstall -k <包名>。
如果加 -k 参数,卸载软件但是保留配置和缓存文件。
- 进入设备或模拟器的shell
- shell:adb shell命令会将当前终端映射为设备或模拟器的输入和输出终端,在该终端下可以运行设备或模拟器支持的各种shell命令。如果仅仅想在设备或模拟器上执行某一条shell命令,可以采用以下方式:
adb shell [command]:例如,adb shell ls列出当前目录下的内容。
- 文件互传
从电脑上发送文件到设备:adb push <本地路径> <远程路径>,用push命令可以把本机电脑上的文件或者文件夹复制到设备(手机);
从设备上下载文件到电脑:adb pull <远程路径> <本地路径>,用pull命令可以把设备(手机)上的文件或者文件夹复制到本机电脑。
- 挂载system读写
- remount:执行该命令需root权限,常用于系统目录操作,或修改系统目录读写权限。
- 重新启动设备
- reboot:重新启动;
adb reboot recovery:重新启动到recovery;
adb reboot bootloader:重新启动到bootloader。
下面给出笔者常用的,比较实用的几个脚本。
(1) 软件安装脚本
Rem 脚本存放位置:桌面
Rem 使用方法:手机连接电脑,直接拖动apk文件到脚本上即可安装
Rem 注意:apk文件名不得为中文且建议不要带有空格
@echo off
title install
color 0A
echo 正准备安装
echo "%~f1"
cd "%~dp0"
cd ..
adb wait-for-device
adb install -r "%~f1"
pause
(2)软件卸载脚本
Rem 脚本存放位置:用户工作目录
Rem 使用方法:
Rem 手机连接电脑,打开CMD,输入uninstall打开;
Rem 输入1或者2,选择系统软件或者普通软件;
@echo off
title uninstall
color 0A
:start
cls
echo 请输入要卸载的软件类型
echo 1. system
echo 2. data
SET /P menuna=请选择后回车:
IF %menuna%==1 set apktype=system
IF %menuna%==2 set apktype=data
:uninstall
cls
echo %apktype%/app文件列表
echo
-----------------------------------------------------------------------
adb shell ls %apktype%/app
echo
-----------------------------------------------------------------------
echo 软件包名在AndroidManifest.xml中:package="packageName"
echo 如果看到这种文件名com.wd.AndroidDaemon-1.apk
echo 可以直接右键选择标记复制包名com.wd.AndroidDaemon
set /P INPUT=请输入软件包名(输入back返回主页exit退出): %=%
if %INPUT%==exit exit
if %INPUT%==back goto start
adb uninstall %INPUT%
pause
goto uninstall
(3)重新启动
Rem 脚本存放位置:用户工作目录
Rem 使用方法:
Rem 手机连接电脑,打开CMD,输入reboot打开;
Rem 输入1、2或者3,选择重新启动方式。
@echo off
title reboot
color 0A
cls
echo 请输入要卸载的软件类型
echo 1. 重新启动
echo 2. 重新启动到recovery
echo 3. 重新启动到bootloader
SET /P menuna=请选择后回车:
IF %menuna%==1 adb reboot
IF %menuna%==2 adb reboot recovery
IF %menuna%==3 adb reboot bootloader
echo 正在重新启动,请等待...
pause