adb命令

时间:2024-03-04 20:45:28

1、查看adb版本  adb version

2、查询pc链接的所有android 设备  adb devices

3、装包  adb install apk   覆盖安装 -r   安装包在android设备中   adb shell pm install apk

4、卸载包  adb uninstall apk   保留配置和缓存文件 -k

如果机器上有多个模拟器或真机,需要使用-s命令行参数指定具体的模拟器或真机。例如,下面的命令分别在模拟器和真机上安装、重新安装和卸载应用程序。

在emulator-5554模拟器上安装ebook.apk
adb -s emulator-5554 install ebook.apk

在真机上安装ebook.apk
adb -s HT9BYL904399 install ebook.apk

 

5、包管理,如何知道一个app包名呢

adb命令查看列出手机装的所有 app 的包名:
adb shell pm list packages

列出系统应用的所有包名:
adb shell pm list packages -s

列出除了系统应用的第三方应用包名:
adb shell pm list packages -3

推测一个包中可能带有的关键字:
adb shell dumpsys activity | findstr mFocusedActivity

清除应用数据与缓存
adb shell pm clear 应用包名

 

6、文件相关

接收电脑文件

语法:adb push local remote
案例:adb push d:/a.txt /sdcard/
把电脑 D 盘下的 a.txt 文件推送到手机 sdcard 目录下

上传文件到电脑

语法:adb pull remote local
案例:adb pull /sdcard/a.txt d:/
上传位于/sdcard/目录下的 a.txt 文件到电脑的 D 盘根目录下

 

7、截屏、录屏

截屏
adb shell screencap /sdcard/a.png
adb shell /system/bin/screencap -p /sdcard/a.png

使用adb进行屏幕录像
adb shell screenrecord /sdcard/a.mp4
通过ctrl+c停止录制,你可以在sdcard目录下查看。妈妈再也不担心我到处找录制视频的软件了。

 

8、shell
进入shell
adb shell

退出shell
exit

 

9、手机信息收集
获取序列号
adb get-serialno

获取 MAC 地址
adb shell cat /sys/class/net/wlan0/address

查看设备型号
adb shell getprop ro.product.model

查看 Android 系统版本
adb shell getprop ro.build.version.release

查看屏幕分辨率
adb shell wm size

查看屏幕密度
adb shell wm density

查看permissions
adb shell pm list permissions

查看系统的危险权限dangerous permissions
adb shell pm list permissions -d -g

 

10、adb服务器杀死和启动
adb kill-server
adb start-server
场景:比如希望移动adb文件夹,或者adb命令得不到想要的内容时

 

11、与进程相关:
列出当前进程
adb shell ps | findstr 包名

杀死某个包的进程
adb shell am force-stop 包名

 

12、与性能相关的一些内容
获取内存:
adb shell dumpsys meminfo 包名

获取cpu:
adb shell dumpsys cpuinfo | findstr 包名

adb shell top -n 1 | findstr 包名

获取流畅度相关:
adb shell dumpsys gfxinfo 包名

 

13、app的启动停止
如果想在模拟器或真机上运行已安装的应用程序,除了直接在模拟器或真机上操作外,还可以使用如下的命令直接运行程序。
activity的获取方式见14条。
在emulator-5554模拟器上运行ebook.apk
adb -s emulator-5554 shell am start -n net.blogjava.mobile.ebook/net.blogjava.mobile.ebook.Main

在真机上运行ebook.apk
adb -s HT9BYL904399 shell am start -n net.blogjava.mobile.ebook/net.blogjava.mobile.ebook.Main

其中Main是ebook.apk的主Activity。相当于Windows应用程序的主窗体或Web应用程序的主页面。am是shell命令。

 

14、与Activity操作等相关
1.查看当前显示的activity
adb shell dumpsys activity | findstr “mFocusedActivity”
结果:
mFocusedActivity: ActivityRecord{93a4f9 u0 com.youdao.note/.activity2.MainActivity t36}
注意:我们只需要这一部分:com.youdao.note/.activity2.MainActivity即包名+activity

2.找到当前手机内的top Activity:
adb shell dumpsys activity top | findstr ACTIVITY

3.启动某一个Activity:
adb shell am start activity路径
adb shell am start com.youdao.note/.activity2.MainActivity

 

15、查看8080端口是哪个应用占用
netstat -ano|findstr “8080”

 

16、备份

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将会使文件存储在根磁盘(WindowsC盘等等)下一个名为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 $ chmod 600 databases/file> adb pull /sdcard/file .

更新一些反编译常用命令:
1.查看当前进程的内存的加载情况啊:
cat /proc/7654/maps 查看当前进程内存的映射情况
2.查看当前应用使用的端口号信息:
cat /proc/[pid]/net/tcp
3.查看进程的状态信息:
cat /proc/[pid]/status可以通过该命令获取到当前进程的包名,PID,PPID等等重要信息(比较实用的命令)
4.查看一个dex文件的详细信息
dexdump [dex文件路径]
5.使用aapt命令获取apk的清单文件
aapt dump xmltree [apk包] [需要查看的资源文件xml]
例:aapt  dump xmltree mm.apk AndroidMainfest.xml > demo.txt(讲mm应用中的AndroidMainfest.xml文件导入到新建的demo.txt文本中)
这里可能大家有个误区,aapt命令是与adb命令不是同一个命令,如果要使用和adb一样需要配置环境变量,也可以在SDK的build-tools文件夹内,shift+右键在此处打开命令窗口使用该命令!