通过命令行创建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操作命令详解及大全