您的位置:首页 > 运维架构 > Shell

Adb shell

2017-12-30 16:52 239 查看

1、文件传输

push D:\file.txt /sdcard/
pull /sdcard/file.txt D:\


2、截屏

screencap -p /sdcard/img.jpg

3、input

natrium:/ $ input
Usage: input [<source>] <command> [<arg>...]

The sources are:
keyboard
mouse
joystick
touchnavigation
touchpad
trackball
dpad
stylus
gamepad
touchscreen

The commands and default sources are:
text <string> (Default: touchscreen)
keyevent [--longpress] <key code number or name> ... (Default: keyboard)
tap <x> <y> (Default: touchscreen)
swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
press (Default: trackball)
roll <dx> <dy> (Default: trackball)
tmode <tmode>
natrium:/ $
输入框获取焦点后,input text Hello,输入字符串

滑动,input swipe 100 500 200 500,向右滑

按键,input keyevent 26,电源

以下就是约定的按键键码:

0 -->  "KEYCODE_UNKNOWN"

1 -->  "KEYCODE_MENU"

2 -->  "KEYCODE_SOFT_RIGHT"

3 -->  "KEYCODE_HOME"

4 -->  "KEYCODE_BACK"

5 -->  "KEYCODE_CALL"

6 -->  "KEYCODE_ENDCALL"

7 -->  "KEYCODE_0"

8 -->  "KEYCODE_1"

9 -->  "KEYCODE_2"

10 -->  "KEYCODE_3"

11 -->  "KEYCODE_4"

12 -->  "KEYCODE_5"

13 -->  "KEYCODE_6"

14 -->  "KEYCODE_7"

15 -->  "KEYCODE_8"

16 -->  "KEYCODE_9"

17 -->  "KEYCODE_STAR"

18 -->  "KEYCODE_POUND"

19 -->  "KEYCODE_DPAD_UP"

20 -->  "KEYCODE_DPAD_DOWN"

21 -->  "KEYCODE_DPAD_LEFT"

22 -->  "KEYCODE_DPAD_RIGHT"

23 -->  "KEYCODE_DPAD_CENTER"

24 -->  "KEYCODE_VOLUME_UP"

25 -->  "KEYCODE_VOLUME_DOWN"

26 -->  "KEYCODE_POWER"

27 -->  "KEYCODE_CAMERA"

28 -->  "KEYCODE_CLEAR"

29 -->  "KEYCODE_A"

30 -->  "KEYCODE_B"

31 -->  "KEYCODE_C"

32 -->  "KEYCODE_D"

33 -->  "KEYCODE_E"

34 -->  "KEYCODE_F"

35 -->  "KEYCODE_G"

36 -->  "KEYCODE_H"

37 -->  "KEYCODE_I"

38 -->  "KEYCODE_J"

39 -->  "KEYCODE_K"

40 -->  "KEYCODE_L"

41 -->  "KEYCODE_M"

42 -->  "KEYCODE_N"

43 -->  "KEYCODE_O"

44 -->  "KEYCODE_P"

45 -->  "KEYCODE_Q"

46 -->  "KEYCODE_R"

47 -->  "KEYCODE_S"

48 -->  "KEYCODE_T"

49 -->  "KEYCODE_U"

50 -->  "KEYCODE_V"

51 -->  "KEYCODE_W"

52 -->  "KEYCODE_X"

53 -->  "KEYCODE_Y"

54 -->  "KEYCODE_Z"

55 -->  "KEYCODE_COMMA"

56 -->  "KEYCODE_PERIOD"

57 -->  "KEYCODE_ALT_LEFT"

58 -->  "KEYCODE_ALT_RIGHT"

59 -->  "KEYCODE_SHIFT_LEFT"

60 -->  "KEYCODE_SHIFT_RIGHT"

61 -->  "KEYCODE_TAB"

62 -->  "KEYCODE_SPACE"

63 -->  "KEYCODE_SYM"

64 -->  "KEYCODE_EXPLORER"

65 -->  "KEYCODE_ENVELOPE"

66 -->  "KEYCODE_ENTER"

67 -->  "KEYCODE_DEL"

68 -->  "KEYCODE_GRAVE"

69 -->  "KEYCODE_MINUS"

70 -->  "KEYCODE_EQUALS"

71 -->  "KEYCODE_LEFT_BRACKET"

72 -->  "KEYCODE_RIGHT_BRACKET"

73 -->  "KEYCODE_BACKSLASH"

74 -->  "KEYCODE_SEMICOLON"

75 -->  "KEYCODE_APOSTROPHE"

76 -->  "KEYCODE_SLASH"

77 -->  "KEYCODE_AT"

78 -->  "KEYCODE_NUM"

79 -->  "KEYCODE_HEADSETHOOK"

80 -->  "KEYCODE_FOCUS"

81 -->  "KEYCODE_PLUS"

82 -->  "KEYCODE_MENU"

83 -->  "KEYCODE_NOTIFICATION"

84 -->  "KEYCODE_SEARCH"

85 -->  "TAG_LAST_KEYCODE"

转:

adb是什么?:adb的全称为Android
Debug Bridge,就是起到调试桥的作用。通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具。adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会daemon相关的网络端口,所以当我们运行Eclipse时adb进程就会自动运行。
 
    adb有什么用?:借助adb工具,我们可以管理设备或手机模拟器的状态。还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等等。其实简而言说,adb就是连接Android手机与PC端的桥梁,可以让用户在电脑上对手机进行全面的操作!
常用命令:
1.显示当前运行的全部模拟器: 
  adb devices
2.启动ADB 
  adb start-server
3.停止ADB   adb
kill-server
4.安装应用程序: 
    adb install -r [apk文件]
-l #锁定该程序-r #重新安装该程序,保存数据-s #安装在SD卡内,而不是设备内部存储
例:adb install --r D:\mm.apk
5.卸载应用程序: 
    adb uninstall [packagename]
例:adb uninstall com.tencent.mm
-k #不删除程序运行所产生的数据和缓存目录(如软件的数据库文件)
例:adb uninstall -k com.tencent.mm
6. 讲手机设备中的文件copy到本地计算机: 
   
adb
pull 设备目录 本地目录例:adb pull /sdcard/mm.txt D:\(讲内存卡根目录的txt文件copy到D盘根目录)
7.将本地计算机的文件copy到手机设备中 
 
adb push 本地目录 手机设备目录例:adb
push D:\mm.txt /sdcard
8.查看adb命令帮助信息: 
    adb help
9.截屏例:adb
shell screencap -p 截图文件路径
10.查看指定包名应用的数据库储存信息(包括储存的SQL语句)
例:adb shell dumpsys dbinfo[packagename]
11.查看指定的进程或则进程id的内存信息  
adb shell dumpsys meminfo[packagename/pid]可以查看进程当前的内存情况
例:adb shell dumpsys meminfo com.tencent.mm
12.查看指定包名应用的详细信息(相当于AndroidMainfest.xml中内容)
adb shell dumpsys [packagename]例:adb
shell dumpsys com.tencent.mm
13.查看当前应用的activity信息adb
shell dumpsys activity top查看bug报告: 

adb bugreport 
14.列出手机装的所有apk包名
adb shell pm list packages
系统应用:adb shell pm list packages -s
第三方应用:adb shell pm list packages -3
使用grep过滤 :adb shell pm list packages | grep qq
15.清除应用缓存信息:
adb shell pm clear [packagename]
16.通过adb启动应用程序页面
adb shell am start -n[包名+activity名]
例:adb shell am start -n com.tencent.mm/.ui.SplashAcitvity
强制停止应用有些时候应用卡死了,需要强制停止,则执行以下命令:adb
shell am force-stop <packagename>// 如:adb shell am force-stop cn.androidstar.demo
17、记录无线通讯日志: 
  
一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录: 

    adb shell 

    logcat -b radio
18、获取设备的ID和序列号: 
   adb get-product 

     adb get-serialno
19、访问数据库SQLite3 
  adb shell 

     sqlite3#cd system/sd/data //进入系统内指定文件夹 

#ls //列表显示当前文件夹内容 

#rm -r xxx //删除名字为xxx的文件夹及其里面的所有文件 

#rm xxx //删除文件xxx 

#rmdir xxx //删除xxx的文件夹
20.导出设备信息
adb get-serialno > 序列号.txt
adb shell cat /sys/class/net/wlan0/address > MAC地址.txt
adb shell getprop ro.product.model > 设备型号.txt
adb shell getprop ro.build.version.release> 系统版本.txt
adb shell pm list packages -s > 系统应用的所有包名.txt
adb shell pm list packages -3 > 第三方应用包名.txt
adb shell wm size > 屏幕分辨率.txt
adb shell wm density > 屏幕密度.txt
adb shell cat /proc/cpuinfo > CPU信息.txt
adb shell pm list permissions -f > 权限.txt
adb shell pm list users -f > 用户.txt
21.重启adb
reboot
还有2个非常有用的命令:
1.备份adb
backup 
[-f <file>] [-apk|-noapk][-shared|-noshared] [-all] [-system|nosystem] [<packages...>]
例:adb
backup -f mm.ab -noapk -noshared -nosystemcom.tencent.mm你可以使用的最基本的命令是很简单的
adb backup -all
它将使用默认方式备份应用和设备的数据(不包含apk)到当前目录下并保存为文件backup.ab

※这个命令有可能不对每个设置都有效,如果你出现像这种 "adb: cannot open file ./backup.ab"的错误,使用 adb backup -all -fC:\backup.ab来代替,其中路径C:\可根据喜好替换
对各个参数的解释:

-f <file>
用这个来选择备份文件存储在哪里,例如-f /backup/mybackup.ab将会使文件存储在根磁盘(Windows的C盘等等)下一个名为backup的文件夹里,并且备份文件名为mybackup.ab

-apk|-noapk
这个决定是否在备份里包含apk或者仅仅只备份应用数据,个人推荐使用-apk以免有的应用在应用市场找不到,如果不使用则默认的是-noapk

-shared|-noshared
这个参数用于决定是否备份设备共享的SD card内容,默认是-noshare,主要包括内部存储中的音乐、图片和视频,因此为保险起见,建议加上-share

-all
这个参数是一种简单地表达“所有应用”的说法,package参数可以选择备份单独的应用,如果你不是备份某个应用,使用-all备份整个系统

-system|-nosystem
这个参数决定-all标签是否包含系统应用,默认的是-system,根据情况可选择是否用-nosystem

<packages...>
如果你知道应用安装包的名称(例如com.google.android.apps.plus),就可以使用该参数备份特定应用。

3.当决定如何执行备份后,输入你喜欢的命令,在华为G700上测试,使用命令

adb backup -apk -all
2.使用run-as在非root情况获取沙盒数据(前提是开启debuggable模式)
1. 
 shell@android:/data $ run-as com.your.package 
2. 
 run-as com.your.package 
3. 
 shell@android:/data/data/com.your.package $ cd /data/data/com.your.package  
4.  cd
/data/data/com.your.package 
5.  shell@android:/data/data/com.your.package
$ ls  
6. 
 ls  
7. 
 cache  
8.  databases 
9. lib  
10. shared_prefs  
11. shell@android:/data/data/com.your.package
$ cd databases  
12. cd
databases  
13. shell@android:/data/data/com.your.package/databases
$ ls  
14. yourpackagename.db  
15. $
cat preferences.db > /mnt/sdcard/yourpackagename.db    
将你要访问的package目录下的db文件拷贝到sdcard中,这样就可以正常访问了! 对文件进行增删
法1:adb
shell "run-aspackage.name
chmod 666 /data/data/package.name/databases/file"
adb
pull /data/data/package.name/databases/file .
adb
shell "run-aspackage.name
chmod 600 /data/data/package.name/databases/file"
adb
exec-out run-as package.name cat databases/file > file 
法2:>
adb shellshell
$ run-as com.example.packageshell
$ chmod 666 databases/fileshell
$ exit                                             
'run-as'shell
$ cp /data/data/package.name/databases/file /sdcard/shell
$ run-as com.example.packageshell
$ chmod600 databases/file>
adb pull /sdcard/file .
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  adb