通过命令行创建Android模拟器以及利用adb命令与其进行交互。
1.前言
由于接下来的命令都是基于Android SDK工具包中的工具(如adb等),所以在使用前需要将sdk的安装路径下的platform-tools和tools文件夹的路径添加到系统的环境变量中,或者就在使用命令时加上对应的路径信息(如下图所示)。


2.使用命令行创建使用Android虚拟设备(AVD)


- 删除AVD(模拟器):
android delete avd --name 名称 - 创建SDCard:
mksdcard 1024M ~/名称.img - AVD(模拟器)所在位置:
Linux(~/.android/avd) - AVD(模拟器)所在位置:
Windows(C:\Documents and Settings\Administrator\.android\avd) - 显示系统中全部AVD(模拟器):
android list avd - 启动模拟器:
emulator -avd 名称
3.使用adb与AVD交互
一些与浏览和使用Android文件系统相关的命令

adb命令
- 显示当前运行的全部模拟器:
adb devices - 对某一模拟器执行命令:
adb -s 模拟器编号 命令 - 安装应用程序:
adb install -r 应用程序.apk - 获取模拟器中的文件:
adb pull <remote> <local> - 向模拟器中写文件:
adb push <local> <remote> - 进入模拟器的shell模式:
adb shell - 启动SDK,文档,实例下载管理器:
android - 缷载apk包:
adb shell——>cd data/app——>rm apk包——>exit——>adb uninstall apk包的主包名 - 查看adb命令帮助信息:
adb help - 在命令行中查看LOG信息:
adb logcat -s 标签名 - 删除系统应用:
adb remount (重新挂载系统分区,使系统分区重新可写)——>adb shell——>cd system/app——>rm *.apk - 获取管理员权限:
adb root - 启动Activity:
adb shell am start -n 包名/包名+类名(-n 类名,-a action,-d date,-m MIME-TYPE,-c category,-e 扩展数据,等) - 发布端口:你可以设置任意的端口号,做为主机向模拟器或设备的请求端口。如:
adb forward tcp:5555 tcp:8000 - 记录无线通讯日志:一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录:
adb shell logcat -b radio
注:adb shell后面跟的命令主要来自:源码\system\core\toolbox目录和源码\frameworks\base\cmds目录。
4.通过adb与Activity管理器交互
前置条件
打开Android模拟器,并且在命令行中输入adb shell获取Android设备上的shell。
相关adb命令
pm list packages,获取Android设备中已安装的activity的列表。am start [包名],运行包名对应的activity。am startservice <package name>/<component name><INTENT>,启动服务。kill < --user UID | current ><package>,使用activity管理器杀掉一个进程。
am start命令的intent参数
命令原型
am start
其中可选参数--user指定app以哪个用户的权限运行,如果activity不支持这个参数,它就将以ADB用户的权限运行。
参数

实例

遇到的问题
在实际使用am start命令时,出现如下图所示情况并导致接连几个activity都启动失败,这应该是因为在没有指定intent参数的情况下,该命令默认会去寻找Intent {act=android.intent.action.MAIN}的activity启动,而有的应用程序中并没有这样的activity,所以导致启动应用程序失败。

5.通过ADB提取app里的资源(设备需要root权限)
- 获取shell:
adb shell - 切换到data/data目录:
cd data/data - 查看目录下文件的详细信息:
ls -al - 一次性查看app的所有资源和元数据:
ls -alR */ - 只显示数据库/文件:
ls -alR */databases/以及ls -alR */files/ - 搜索指定类型的文件(根据扩展名):`ls -al //*.xml……

在PC上查看app中的.db文件

参考资料
《Android安全攻防实战》
adb操作命令详解及大全