adb命令(adb命令安装apk包)

http://www.itjxue.com  2023-01-26 14:03  来源:未知  点击次数: 

ADB常用命令大全

安卓调试桥(Android Debug Bridge),是Android SDK中的一个调试工具, 使用adb可以直接操作管理Android模拟器或Andriod真机设备,在开发测试过程中,起到调试的作用。

adb.exe的存放路径:Android-SDKplatform-tools

adb help //查看帮助

adb version //查看adb版本号

adb devices //查看设备

adb connect IP:port //连接设备

adb disconnect //断开连接的所有设备

adb disconnect IP:port //断开连接指定设备

adb root //获取root权限

adb remount //重新挂载文件系统(默认只读,执行命令后可写)

adb install Package //安装APK

adb install -r Package //强制覆盖安装

adb install -t Package //允许降级覆盖安装

adb install -d Package //允许测试包

adb uninstall PackageName //卸载APK

adb uninstall -k (keep) PackageName //保留用户数据卸载

adb pull //将设备文件文件发送到PC

adb push //将PC文件发送到设备

adb logcat -c //清空日志

adb logcat -v threadtime D:111.log //抓日志并输出保存D:111.log

adb shell screencap /sdcard/screen.png //屏幕截图(并存放sdcard目录,命名screen.png)

adb shell screenrecord /sdcard/demo.mp4 //录制屏幕(Android4.4以上可用)

adb shell dumpsys activity activities //查看activity信息

adb shell dumpsys activity |findstr mResumedActivity //获取当前activity信息

adb shell dumpsys window windows | findstr “Current” //查看当前app窗口activity

adb shell //进入设备内部

cd //切换目录

pwd //查看当前路径

ping //查看网络连接

rm* //删除目录下的所有文件

cp -r /path/filename /NewPath //拷贝文件

busybox find / -name FileName //查找文件

tcpdump -i any -p -s 0 -w /data/data/1111.pcap //抓取网络包

pm uninstall PackageName //卸载APK

pm path PackageName //查看APK存放位置

pm clear PackageName //清除APK缓存

dumpsys package om.android.xxx //查看APK的具体信息

dumpsys package om.android.xxx | grep version //查看APK版本

dumpsys package com.tencent.mm | findstr versionName //查看APK版本

am start PackageName //拉起APK

am start -n com.android.xxx/.WelcomeActivity //直接拉起APK的指定WelcomeActivity

am start -a android.intent.action.VIEW -d //拉起百度

am start -n om.android.xxx/.WelcomeActivity --es actionUrl ";object=5005153" //指定Activity上拉起H5

am force-stop + 报名 //杀死进程

kill `ps |grep -E "icntv|istv" | busybox awk '{print $2}'` //杀进程

md5 com.android.xxx //查看已安装应用MD5

busybox vi hispreinstall.sh //编辑文件(命令行)

chmod 777 /system/bin/hispreinstall.sh //修改权限

cat /system/build.prop | grep "product" //查看设备信息

exit //退出shell交互模式

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

adb get-serialno //获取手机序列号

adb shell dumpsys package //列出所有安装应用的信息

adb shell pm list packages //查看设备中的所有应用的包名

adb shell cat/proc/cpuinfo //获取CPU型号等信息(HardWare后面是CPU型号)

adb shell "ps | grep packageName" //查指定程序pid

adb shell getprop //查看手机信息

adb shell getprop ro.serialno //查看手机序列号

adb shell cat /proc/cpuinfo //查看手机CPU信息

adb shell cat /proc/meminfo //查看手机内存信息

adb reboot recovery //重启手机到recovery刷机模式

adb reboot bootloader //重启手机到bootloader界面

adb shell dumpsys battery //获取电池信息

adb shell dumpsys battery set status 1 //设置手机进入非充电状态,为2设置充电状态

adb shell dumpsys battery set level 100 //设置电量百分比

adb shell dumpsys batterystats //获取整个设备的电量消耗信息

adb shell dumpsys batterystats | more //综合电量消耗

adb shell dumpsys batterystats com.android.xxx //获取某个apk的电量消耗信息

adb shell dumpsys batterystats packageName | more //获取指定程序电量消耗信息

adb shell cat /proc/uid_stat/$PID/tcp_snd //发送的数据流量

adb shell cat /proc/uid_stat/$PID/tcp_rcv //接收的数据流量

procrank //查看内存

adb shell top | findstr com.android.xxx //查看指定APK内存

top -n 3 |grep -E "com.android.xxx|android.yyy" //查看内存

adb shell dumpsys cpuinfo |findstr com.android.xxx //查看指定APK CPU

dumpsys cpuinfo |grep -E "com.android.xxx|android.yyy" //查看CPU

adb shell settings put global http_proxy ip(PC):port(默认8888) //设置代理

adb shell settings get global http_proxy //查看代理

adb shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db //进入sqlite

delete from global where name in('global_http_proxy_host','global_http_proxy_port','http_proxy'); //移除代理

adb shell stop //关闭设备

adb shell start //开启设备

adb start-server //启动adb服务

adb kill-server //关闭adb服务

adb reboot //重启手机

adb shutdown //关闭手机

1、首次使用USB线连接Android手机,然后打开Terminal输入:adb tcpip 端口号(默认5555)

2、查看手机IP地址:设置-关于手机-状态信息-IP地址

3、通过adb连接ip地址:adb connect IP:port

常用的adb命令

在平时的工作中,会经常用到adb命令,在这里稍微整理了一下。

一.概要

1.什么是adb?

adb全称为Android Debug Bridge,就是起到调试桥的作用。顾名思义,adb就是一个debug工具。

2.adb工作原理

不是很理解?那就来看看它的工作原理吧。

上图是一个简单的adb工作原理图。adb客户端服务器端程序,由上图可以看出它主要三个组件组成:Client,Server,Daemon。

(1)当你启动一个adb Client(客户端),Client首先会选确认是否已有一个adb

Server(服务器)进程在运行,如果没有,则会启动Server进程。此时,adb Server就会绑定本地的TCP端口5037,并监听adb

Client发来的命令。

(2)接着,Server将会扫描所有5555到5585范围内的奇数端口来定位所有的模拟器或设备,并与之建立连接。一旦Server找到

了adb

daemon(守护程序),它将建立一个到该端口的连接,这样,我们就可以使用adb命令控制和访问模拟器或设备了。在这里,需注意的是任何模拟器或设备实例会取得两个连续的端口:一个偶数端口用来相应控制台的连接,和一个奇数端口用来响应adb连接。

3.adb的作用

借助adb工具,我们可以管理设备或手机模拟器的状态,还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等等。简而言之,adb就是连接Android手机和PC端的桥梁,可以让用户在电脑上对手机进行全面的操作。

二.常用命令

这个部分主要介绍adb的使用方法和一些常用的命令。

设置adb环境:将android sdk工作目录添加到系统环境变量中,则可使用adb命令了。

1. adb devices

查看当前连接的设备(连接计算机的Android设备或者模拟器)。

2.adb install

adb install apk文件路径,将指定的apk安装到设备上,安装的apk包会放在/data/app目录下。

几个参数:

-r 强制安装

-d(真机,多个设备中只有一个真机时适用)

-e(模拟器,多个设备中只有一个模拟器时适用)

-s(指定设备,后接序列号)

adb –s 44a188f9 install –r test.apk(其中44a188f9即序列号,通过adb devices可获取)

3.adb uninstall

adb uninstall apk包名

adb uninstall –k apk包名

-k参数为卸载软件时保留配置和缓存文件

4.adb reboot

重启android设备

5.adb shell

通过adb shell 命令,就可以进入设备或者模拟器的shell环境了,在这个Linux shell中,我们就可以执行各种Linux命令了。

如果只想执行一条shell命令,就可以采用:adb shell [shell_command]

在实际使用中,经常与grep或findstr一起使用,起到过滤作用,查看自己需要的关键信息。

6.adb shell su

前提手机已经root。获取adb shell的root权限。

使用su提权,用户命令提示符有$变成#,如果手机没有root,会提示su:permission denied。

7.adb shell ps/top

查看当前终端中的进程信息,如pid等。

8.adb shell am/pm

am全称为activity manager,可使用am命令模拟各种系统的行为,如去启动一个activity,强制停止进程,发送广播进程,修改设备屏幕属性等。

如:adb shell am start apk包名/activityName:启动一个activity。

pm全称为package manager,利用pm命令可模拟android行为或查询设备上的应用等。

如:adb shell pm list packages

列出当前设备所有已安装的程序的包名。

说明:

管道符“|”:可以把标准的输入流与标准的输出流进行合并,或者把某个命令的标准输出流作为另一个命令的标准输入流。

exit退出shell。

由于grep为linux命令,运行单条adb shell 时并没有进入linux

shell环境,并不能用grep等其他linux命令,只能用window cmd的命令。在这里可以用findstr来代替grep,使用方法为

findstr/grep [keyword]

更详细的内容可查看 参考文献3 和 参考文献4 。

对于常用的linux命令和常用的windows 控制台命令,以后再作总结。

9.adb pull 和 adb push

adb pull 设备中的文件路径 本地路径:从模拟器或设备中复制文件到本地。

adb push 本地文件路径 设备中的路径:将本地文件或目录复制到模拟器或设备。

这里还涉及到一个权限的问题,在后续的博文中再作介绍。

10.adb shell dumpsys

Android提供的dumpsys工具用于查看感兴趣的系统服务信息与状态。

参考下表:

11.adb shell monkey

跑monkey是android自动化测试的一种手段,所谓monkey测试就是模拟用户的按键输入,触摸屏输入,手势输入等。当Monkey程序在模拟器或设备运行的时候,如果用户比如点击,触摸,手势或一些系统级别的事件的时候,它就会产生随机脉冲,所以可以用Monkey的随机重复的方法对apk作压力测试,来测试android

app的稳定性。

如下为测试腾讯新闻apk的一个简单实例:

说明:第一个-s指定设备,如果只连接了一台设备,可不用该参数。

-p apk包名只允许系统启动指定的app,如果不指定,将允许系统启动设备中的所有app,也可指定多个包。

--throttle 毫秒数 指定用户操作(事件)间的时延。

--ignore-crashes 指定当应用程序崩溃时,Monkey依然发送事件,直到事件计数完成。

--ignore-timeouts 当应用程序发生ANR错误时,Monkey依然会发送事件,直到事件计数完成。

第2个-s,用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。

-v 用于指定反馈信息级别,总共分为level 0、level 1、level 2三个级别,级别越高,输出的日志越详细。

最后的数字(这里是500):表示Monkey程序模拟500次随机用户操作事件。

输出测试结果到D:\monkeylog.txt

更详细的参数可查看 参考文献5 。

部分测试结果如下:

对于测试结果的分析,通过搜索关键词来定位错误,主要包括以下四个方面:

1)ANR(Application Not

Response):程序无响应,一般主线程超过5秒没处理就会出现ANR错误。通过搜索ANR关键词来定位关键的事件信息。除了导出日志外,还可以将/data/anr/目录下的trace.txt文件导出,用来定位分析问题。使用adb

pull /data/anr/trace.txt d:\ 将trace.txt文件导出到d盘。

2)ForceClosed或其他异常退出信息:通过搜索Fatal关键词来定位。

3)崩溃问题:通过搜索Exception关键词来定位。

4)发生异常后,通过搜索Crash关键词来定位到详细的堆栈信息。

?12.kill

kill用来中止一个进程。

比如我们在跑monkey的时候,怎么强制关闭monkey呢,可以用kill monkey进程PID

说明:另开启一个cmd,找到monkey的pid号,然后杀掉即可。

参考文献:

1.Android调试桥:

2.Android性能分析工具dumpsys的使用:

3.adb shell 中的am pm命令:

4.adb shell 启动应用程序的方法:

5.Monkey压力测试详解:

基础的adb命令

1、查询主机配置:

adb ipconfig/all

2、获取权限

adb root

adb remount

3、查询安装目录:

adb shell

cd data/app

ls -l

4、安装apk:

adb install xxxx.apk

5、卸载apk:

adb uninstall com.xxx.xxx(apk的包名[package])

6、重启:

adb reboot

7、push?apk:

adb push xxxx.apk? /system/app

8、删除push进去的apk:

adb shell

cd system/app

rm -r xxx.apk

9、修改分辨率:

adb shell

wm size 1920x1010

10、查看分辨率:

adb shell

wm size

11、启动activity:

adb shell am start com.example.app/.MainActivity(报名./activity名)

12、停止运行activity:

adb shell am force-stop com.example.app(包名)

13、查找包:

adb shell dumpsys com.example.app(包名)

14、remount失败时:

disable-verity

reboot

15、设置分辨率

adb shell wm size 长x宽

16、抓log

adb logcat D:/seting.txt

17、清楚掉之前的setting.txt文件,重新建立log文件

adb logcat -c adb logcat D:/seting.txt

18、获取报错异常(先运行一遍,后输入命令,就可以获取到报错)

adb logcat -b crash

ADB 命令

查询设备

adb devices

查询手机中的用户

adb shell pm list users

查看设备上的应用包名:

adb shell pm list packages

adb shell pm list packages 打印设备/模拟器上的所有软件包

adb shell pm list packages -f 输出包和包相关联的文件

adb shell pm list packages -d 只输出禁用的包。由于本机禁用没有,输出为空。

adb shell pm list packages -e 只输出启用的包。

adb shell pm list packages -s 只输出系统的包。

adb shell pm list packages -3 只输出第三方的包。

adb shell pm list packages -i 只输出包和安装信息(安装来源)。

adb shell pm list packages -u 只输出包和未安装包信息(安装来源)

adb shell pm list packages -u -3 -e 组合使用

查询带有test的包名

adb shell pm list packages | findstr test

查询安装包路径

adb shell pm path [PackageName]

查询包对应的启动activity

adb shell pm query-activities -a android.intent.action.MAIN -c android.intent.category.LAUNCHER [PackageName]

启动应用

adb shell am start -n "[PackageName]/[ActivityName]" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER

如:adb shell am start -n "com.example.test/com.example.test.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER

卸载应用

adb shell pm uninstall -k --user 0 [PackageName] -k 表示保存数据 --user 指定用户 id,Android 系统支持多个用户,默认用户只有一个,id=0

如 adb shell pm uninstall com.example.test 对所有用户卸载com.example.test且不保存数据

停用应用

adb shell pm disable [PackageName]

启用应用

adb shell pm enable [PackageName]

清除应用数据

adb shell pm clear [PackageName]

设置应用安装位置

adb shell pm set-install-location

--[0/auto]:默认为自动

--[1/internal]:默认为安装在手机内部

--[2/external]:默认安装在外部存储

获取应用安装位置

adb shell pm get-install-location

查询操作过程中输出的日志

adb logcat d:\log.txt

ADB常用命令

Android 调试桥 (adb) ?,可与设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:

客户端: 用于发送命令。客户端在开发机器上运行。可以通过发出 adb 命令从命令行终端调用客户端。(可以通过它对Android应用进行安装、卸载、调试)

PC上的手机助手基本都是通过adb命令去完成的。有时候装了这类手机助手的话,它自带的adb程序可能会与Android SDK下的adb程序产生冲突,5037端口被占用,导致adb命令无法连接到设备。Windows下通过netstat -ano|findstr "5037"

守护程序 (adbd): 用于在设备上运行命令。守护程序在每个设备上作为后台进程运行

执行adb shell ps | grep adbd, 可以找到该后台进程,Windows使用findstr替代grep.

adb nodaemon server

服务器(Service): 用于管理客户端与守护程序之间的通信。服务器在开发机器上作为后台进程运行

adb服务启动后,Windows可以在任务管理中找到adb.exe; linux ps -ef | gref adb 可以查看service

一般都是通过这样子的格式 adb [-d|-e|-s 设备序列号] 子命令

通常只有一台设备就忽略 [-d|-e|-s ] 这一部分

这里介绍一些常用的命令:

获取设备列表及设备状态

获取设备的状态

注意:设备的状态有 3 钟,device?,?offline?,?unknown

device:设备正常连接

offline:连接出现异常,设备无响应

unknown:没有连接设备

?结束 adb 服务

?启动 adb 服务

注意:通常两个命令一起用,有时候我们开启server会失败,这是因为我们装了的手机助手,豌豆荚或者其他软件自带有自己的adb,导致端口冲突开启失败。一般在连接出现异常,使用 adb devices 未正常列出设备, 设备状态异常时使用 kill-server,然后运行 start-server 进行重启服务。

打印 Android 的系统日志

?打印 dumpsys、dumpstate、logcat 的输出,也是用于分析错误输出比较多

打印日志后重定向到一个文件中

?安装应用,覆盖安装是使用 -r 选项

注意:有些adb版本无法支持安装中文的apk

查看手机应用包名

查看应用对应的apk文件在手机上的安装位置则可以在上面的命令后加-f参数

卸载应用,后面跟的参数是应用的包名,请区别于?apk 文件名

'-k' means keep the data and cache directories , -k 选项,卸载时保存数据和缓存目录

?将 Android 设备上的文件或者文件夹复制到本地

adb pull /sdcard/test.txt C:\Users\Administrator\Desktop\log

推送本地文件至 Android 设备

获取连接到的手机的序列号

获取设备的连接状态

等待设备连接成功

该命令将会阻塞一直到默认连接的那部机器状态变为device,也就是连接成功。

其实adb shell命令就是调用的是Android设备中的system/bin目录下的命令。

Android的内核本身就是Linux,所以Android本身也支持Linux命令,但是因为是手机系统,所以进行了一定的删减,部分命令不支持,而不支持的部分,我们可以通过安装busybox这个软件进行。

如何在手机中执行Shell命令?

? 每次都加上adb shell来进行命令的发送与执行

?先通过adb shell进入手机Shell执行状态,然后直接输入Linux命令。

使一个apk处于禁用状态,相当于卸载了:

其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobile

eg:adb shell su disable com.UCMobile/.main.UCMobile

同时我们在手机上发现,UC浏览器的图标不见了

让一个apk从禁用状态恢复过来

其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobileeg:

adb shell su enable com.UCMobile/.main.UCMobile

同时我们从手机上发现,UC浏览器的图标又出现了。

查看一个apk所在的路径

adb shell pm path com.UCMobile

查看手机中装的所有的包

屏幕开始录像并且储存到/sdcard中,同时名字为demo.mp4

录屏设置时长10s,命名为demo.mp4

注意:现在仅支持一部分手机录屏,不支持的手机会出现以下提示

解决方法:

安装了scrcpy之后,只需要输入如下命令,即可录取指定设备的屏幕

scrcpy -s device --render-expired-frames -Nr ./demo.pm4

--render-expired-frames:尽可能最大帧率

-N:不在PC端展示

-r:录制mp4/mkv文件

关闭设备请求,开启设备

设备关机以及重启

pm(package manager)可以获取一些安装到Android设备上的app的信息

pm list packages 用法:list packages [?options]?filter

获取所有的应用的包名

列出系统应用

列出第三方应用

查看它们的关联文件

adb shell pm list package -f

查看软件包的安装来源

pm dump?包名?很多dump信息

安装应用

apk如果在电脑用 adb install?

如果在Android设备上用 adb shell pm install

卸载应用,同adb uninstall ,后跟包名

清除应用数据

am(activity manager,字面意思就跟activity有关,大家都知道Android的界面都是由一个个activity显示的)

启动一个Activity

获取到package和launch_activity

AndroidSDK中aapt工具,检索命令结果,可以获取到package和launch_activity

这里涉及到一个点,如何找到程序的入口,首先你要知道是哪个activity才能启动;

启动华为系统相机

打开音乐播放器

播放指定音乐:

先停止目标应用,再启动

等待应用完成启动

启动网页(android.intent.action.VIEW具体参考Android官网)

结束应用

input

模拟输入,向获得焦点的EditText控件输入内容

返回主界面

发送一个点击操作的指令,参数是x y坐标

从左往右滑动屏幕,?/从?100 100?经历300毫秒滑动到?200 200

长按操作,在?100 100?位置长按?1000毫秒

(责任编辑:IT教学网)

更多

推荐word文章