Android-ADB-常用命令

一.介绍

adb全称为Android Debug Bridge调试桥, 使PC电脑通过USB或网络/WIFI连接Android手机!
1.PC电脑端的adb程序是adb.exe(Windows系统), 位于Android SDK\platform-tools\adb.exe
2.Android手机端adb程序是adbd

3.adb可直接操作android手机:
	电脑和手机之间传输文件
	安装和卸载手机apk
	进入手机shell(Linux命令行)		
	启动app组件(Activity/Service等等)
	输出日志log
	......
	
4.Android用户分类(id小,权限高)
	root用户   uid 0         gid 0 
	system用户 uid 1000      gid 1000
	shell用户  uid 2000      gid 2000
	app用户    uid 大于10000 gid 大于10000

二.adb命令

0.通过网络/wifi连接手机(必须在同一局域网) 
	adb connect 手机ip

1.查看已连接的Android设备列表及状态
	adb devices
	
2.查看已连接的Android设备状态		
	adb get-state

	设备状态有3钟
	device:设备正常连接
	offline:连接出现异常,设备无响应
	unknown:没有连接设备

3.启动adb服务 adb kill-server
  结束adb服务 adb start-server

4.安装与卸载应用
	adb install -r apk路径 (-r覆盖安装,-s安装在sdcard)
	adb uninstall -k app包名 (-k保留数据和缓存)

5.手机与电脑互传文件
	adb push 电脑文件 手机路径
	adb pull 手机文件 电脑路径

6.重启
	adb reboot 重启
	adb reboot recovery 重启到恢复模式
	adb reboot bootloader 重启到引导模式
	
7.查看应用日志 adb logcat
  查看通信日志 adb logcat -b radio (常用于查看详细的通话状态)

三.adb shell命令(输入adb shell进入Linux命令环境,以下命令省略adb shell)

1.pm命令(Package Manager),源码Pm.java

查看安装的应用包名
	pm list package    列出所有应用包名
	pm list package xx 列出指定应用包名(过滤关键字)
	pm list package -s 列出系统应用包名
	pm list package -3 列出第三方应用
	pm list package -f 列出APK安装路径
	pm list package -i 列出应用安装来源
	pm list instrumentation 列出含有单元测试的应用
	
查看apk安装路径
	pm path app包名
	

权限保护级别:
	normal            - 表示权限是低风险的,不会对系统,用户或其他应用程序造成危害
	dangerous         - 表示权限是高风险的,系统将可能要求用户输入相关信息,才会授予此权限
	signature         - 表示只有当应用程序所用数字签名与声明权限的应用程序所用数字签名相同时,才会授予此权限
	signatureOrSystem - 需要签名或者系统级应用(放置在/system/app目录下)才能赋予权限
	system            - 系统级应用(/system/app目录下)才能赋予权限

查看权限信息	
	pm list permissions
		-g 按组进行列出权限
		-f 打印所有信息
		-s 简短的摘要
		-d 只有危险的权限列表
		-u 有权限的用户看到列表/用户自定义权限
	pm list permission-groups 打印所有已知的权限组
	
	pm grant  <Packagename> <permission>  授予应用权限许可,Android 6.0以上系统
	pm revoke <Packagename> <permission>  撤销应用权限许可,Android 6.0以上系统
	
查看信息dump	
	pm dump app包名      查看指定包的系统状态
	pm dump activity名   查看指定activity的信息
	pm dump meminfo      查看当前内存使用信息
	pm dump procstats    查看系统内存使用与一段时间内存汇总
	pm dump usagestats   查看服务使用状态信息
	pm dump batterystats 查看电池使用状态信息 

安装与卸载应用
	pm install  app包名 (-r覆盖安装, -s安装在sdcard, -d允许降级安装)	
	pm uninstall app包名 (-k保留/data/data/app包名 或/sdcard/Android/data/app包名)

禁用与启用应用或组件
	pm disable app包名 或组件
	pm enable app包名 或组件
	
清除应用数据
	pm clear app包名
		
应用默认安装目录 
	pm set-install-location 2	设置应用安装位置 0(auto) 1(手机内部存储) 2(sdcard)
	pm get-install-location     查看应用默认安装目录
	
系统功能与支持库(support-xx.jar)
	pm list features  打印系统所有功能/硬件相关信息
	pm list libraries 打印当前设备所支持的所有库存

2.am命令,源码Am.java

启动应用组件
	am start -n 包名/Activity名
	am start -n com.android.camera/.Camera 启动相机	
	am start -a android.intent.action.VIEW -d http://lioil.win 启动浏览器打开网页 
	
启动单元测试instrumentation
	am instrument

监控crash与ANR
	am monitor

结束应用
	am force-stop 包名
	
启动服务
	am startservice 服务名

发送广播
	am broadcast -a 广播action

3.input,输入事件,源码Input.java

发送文本内容(不能发送中文,先将键盘设为英文)
	input text helloworld
	
发送按键事件
	input keyevent KEYCODE_HOME 模拟按下Home键
	
发送屏幕触摸事件
	input tap 200 200 点击屏幕上坐标为(200,200)的位置

发送滑动事件
	input swipe 600 200 0 200 从右往左滑动
	
Android版本不低于4.4, 可以模拟长按事件
	adb shell input swipe 200 200 201 201 2000
	在小范围内长时间滑动,最后表现出来就是长按

4.截屏和录屏

截屏
	adb shell screencap -p /sdcard/screen.png 截屏保存至sdcard目录
	adb pull /sdcard/screen.png D:\picture    复制到电脑D:\picture
	
录屏
	adb shell screenrecord sdcard/record.mp4  ctrl+c结束录制,保存至sdcard
	adb pull /sdcard/screen.png D:\video      复制到电脑D:\video

5.其它

查看当前UI界面信息(UI hierchary)
	uiautomator dump	
	不加[file]选项时,默认存放在sdcard
			
查看Android设备分辨率 
	wm size
	
查看Android设备参数
	getprop ro.build.version.sdk  获取系统sdk版本
	getprop | grep version        获取系统版本参数
	
查看CPU信息
	cat /proc/cpuinfo

查看系统信息(CPU/内存/activity/package)
	dumpsys cpuinfo	/meminfo/activity/package	
	dumpsys activity/package

压力测试
	monkey -v -p 包名 点击数		
	adb shell monkey -p com.android.settings 5000 > D:\monkey.log  
	在PC端执行monkey命令,将信息保存至D:\monkey.log		

输入法,源码Ime.java
	ime list -s  列出输入法
	ime set xxx  选择输入法

四.综合应用

屏幕解锁(删除锁屏文件)
	rm /data/system/*.key
	rm /data/system/locksettings.*
	
修改开机动画
	替换 /system/media/bootanimation.zip
	三星系统 需替换 /system/bin/samsungani
	
修改手机字体  
	替换 /system/fonts/xxx.ttf
	
卸载系统应用(需要root权限)
	1.获取apk安装路径
		pm path app包名
	2.移除apk
		rm apk安装路径;
	3)删除残留文件 
		pm uninstall app包名
		rm -r /data/data/app包名

备份应用和数据
	apk安装目录 /data/apk/xxx.apk
	应用数据目录 /data/data/app包名
	文件复制 cp -f -p -P -r

简书: http://www.jianshu.com/p/7c279e77aec7
CSDN博客: http://blog.csdn.net/qq_32115439/article/details/72814275
GitHub博客:http://lioil.win/2017/05/30/adb.html
Coding博客:http://c.lioil.win/2017/05/30/adb.html