adb shell getprop ro.build.type 查看当前模式是否debug版本
adb disable-verity (一般remount之前调用) 这个指令会修改vbmeta.img这个镜像的部分内容
新建udev规则文件
sudo touch /etc/udev/rules.d/51-android.rules
如果已经有过该文件,只是新增一台设备权限,先输入命令:lsusb
进入该文件:sudo vim 51-android.rules
编辑该文件,添加设备的id与mode,如:
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="4ee7", GROUP="plugdev"
切记要通过sudo vim 进入xx文件
按"i"进入编辑模式,编辑完成后按ESC键 跳到命令模式,然后:wq保存
其他一些命令
# 修改权限,并重启服务
sudo chmod a+rx /etc/udev/rules.d/51-android.rules
sudo service udev restart
# 重启adb服务
sudo adb kill-server
sudo adb start-server
window 创建目录:mkdir 文件夹名
拷贝文件:adb pull 文件 /mnt/sdcard/DCIM/
adb pull <手机路径> <本机路径> 从手机中拉取信息到本地电脑上
adb push <本机路径> <手机路径> 从本地电脑推送信息到手机上
cd system/priv-app/ 包括Launcher,systemui, settingsprovider等,均是系统的核心应用
ls -la
cd system_ext/priv-app/
1、获得root权限:adb root
2、设置/system为可读写:adb remount
3、将PC机上文件复制到手机:adb push 文件名 /system/lib
adb devices 查询电脑已连接的设备
adb shell pm list packages 列出目标设备中已安装的应用程序包
adb shell pm list packages -3 #获取包名
adb shell pm list packages -s #只输出系统的包
adb shell pm list packages -u #查看已经卸载的包(uninstall)
adb shell pm list packages -i #只输出包和安装信息(来源) (infomation)
adb shell pm list packages -f #输出包和包相关联的文件 (file) 列出目标设备中已安装的应用程序包的具体位置
adb shell pm path <包名> #查看、打印包的路径
adb shell ps |findstr 关键字 #查看进程
adb shell am start 页面文件名 #启动app(activity)
adb shell am force-stop 包名 #关闭app(activity)
adb shell top #实时显示进程情况
adb shell tom -p #查看占用内存前num的app显示进程的最大数量
adb shell top -num #刷新num次进程后退出
adb uninstall xxx 卸载或删除的应用包xxx
adb pull /data/app/com.tencent.tbs-1/base.apk 将手机已安装程序的apk下载到你所在的文件夹
adb shell screencap设备存放路径 #截屏
adb shell kill #结束进程
adb shell kill -9 #强制结束进程
adb shell df #查看分区的使用情况
adb shell du #查看文件或目录大小
adb shell netstat #显示网络信息,默认包含参数tuwx
adb shell netcfg #网络设备名字:查看网卡信息
adb shell ifconfig eth1 #可设置网络设备的状态,或是显示目前的设置
adb shell ping #向目标主机发送数据包,看是否能否接到响应、 ping-c:数据包的数量,默认一直发包
adb shell ping -c # -c: 指定数据包的次数,不加-c默认一直发包
adb shell ping -i 2 #间隔时间,默认1秒钟发一个数据包
Adb shell wm size #获取屏幕分辨率
adb shell screenrecord #抓取手机屏幕的录像
Adb shell am start -W #大写W, 该命令用于统计App冷起和热启动的时间
adb shell monkey -p …… #monkey命令
adb shell getprop #获得android系统属性
/* 安装卸载apk */
adb install xx.apk (一定要切换到含有apk的文件夹)
也可以:pm install -r /system/app/SDKLongRrs.apk
adb uninstall apk的包名(如:com.lcb.one)
+++++++++++++++++++++++++++++++++ shell +++++++++++++++++++++++++++++++++
adb shell 进入shell状态
如果有多个设备怎么办?
adb devices查看你的设备;
adb -s xiaomi shell:-s命令表示选择设备,这里是选择xiaomi设备进shell
exit 退出shell状态
以下两个只能在shell层才能设置
pm list packages | grep xxx 通过关键字过滤显示安装包列表
pm list packages -f | grep xxx 通过关键字过滤显示安装包路径列表
获取md5值
md5 /system/app/SDKLongRrs.apk
获取一个目录下所有文件的md5
md5 /system/app/*
+++++++++++++++++++++++++ 启动应用 ++++++++++++++++++++++++++++++
(1)启动Activity
am start -n com.googleplayapp.storerootsuaction/.MainActivity( 你得知道对应的界面的Activity路径以及包名)
完整代码:adb shell am start -n com.test.provider/.MainActivity
(2)启动service
<service
android:name=".MyService"
android:description="@string/Desciption"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.nandhan.myservice" />
</intent-filter>
</service>
adb shell am startservice com.nandhan.myservice/.MyService
+++++++++++++++++++++++++ 查看正在运行的Services +++++++++++++++++++++++++++
adb shell dumpsys activity services [<packagename>]
包名是必须的、不需要写完整的包名、支持模糊匹配
例如adb shell dumpsys activity services com.linux.example
+++++++++++++++++++++++++ 查看正在运行的 activity ++++++++++++++++++++++++++
adb shell dumpsys activity [<packagename>]
包名是必须的、不需要写完整的包名、支持模糊匹配
例如adb shell dumpsys activity com.linux.example
+++++++++++++++++++++++++ clear 清除应用数据 ++++++++++++++++++++++++++++++
pm clear com.googleplayapp.storerootsuaction
/*通过shell命令设置gateWay*/
route add default gw 192.168.1.1 dev eth0
/*通过shell命令查看gateWay*/
ip route show
返回值:
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.109
/*通过shell命令设置IP和netmask*/
ifconfig eth0 192.168.0.173 netmask 255.255.255.0
/*通过shell命令查看IP和netmask*/
ifconfig eth0
返回值:
eth0: ip 192.168.1.109 mask 255.255.255.0 flags [up broadcast running multicast]
/*通过shell命令查看DNS*/
getprop net.eth0.dns1
返回:8.8.8.8
getprop net.eth0.dns2
返回:8.8.4.4
/*通过shell命令设置DNS*/
setprop net.eth0.dns1 8.8.8.8
setprop net.eth0.dns2 8.8.4.4
/*通过shell命令查看所有网络信息*/
netcfg
返回值:
tunl0 DOWN 0.0.0.0/0 0x00000080 00:00:00:00:00:00
gre0 DOWN 0.0.0.0/0 0x00000080 00:00:00:00:00:00
eth0 UP 192.168.1.74/24 0x00001043 1c:ca:e3:40:58:b1
sit0 DOWN 0.0.0.0/0 0x00000080 00:00:00:00:00:00
lo UP 127.0.0.1/8 0x00000049 00:00:00:00:00:00
ip6tnl0 DOWN 0.0.0.0/0 0x00000080 00:00:00:00:00:00
Adb Logcat -s XXX 只输出与XXX有关的信息
adb start-server 开启ADB adb nodaemon server 查看端口是否被占
adb kill-server 关闭ADB
adb logcat -v time -s XXX 显示指定字符和时间
adb logcat //显示全部日志
adb logcat > c:\test.log //将日志保存到文件test.log
根据tag标记和级别过滤日志输出:
adb logcat *:W //显示所有优先级大于等于“warning”的日志
adb logcat -c 清空日志缓存
adb logcat -b log输出-附加缓冲区
radio — 查看包含在无线/电话相关的缓冲区消息
events — 查看事件相关的消息
main — 查看主缓冲区 (默认缓冲区)
-b 指定要查看的日志缓冲区,可以是system,events ,radio,main . 默认值是system和main 。
如:logcat -b crash 查看crash日志
-c 清除屏幕上的日志.
-d 输出日志到屏幕上.
-f 指定输出日志信息的,默认是stdout .
-g 输出指定的日志缓冲区,输出后退出.
-n 设置日志的最大数目.,默认值是4,需要和 -r 选项一起使用。
-r 每时输出日志,默认值为16,需要和-f 选项一起使用.
-s 设置默认的过滤级别为silent.
-v 设置日志输入格式
Log.v 的调试颜色为黑色的,任何消息都会输出,这里的v代表verbose啰嗦的意思,平时使用就是Log.v("","");
Log.d的输出颜色是蓝色的,仅输出debug调试的意思,但他会输出上层的信息,过滤起来可以通过DDMS的Logcat标签来选择,如图
Log.i的输出为绿色,一般提示性的消息information,它不会输出Log.v和Log.d的信息,但会显示i、w和e的信息
Log.w的意思为橙色,可以看作为warning警告,一般需要我们注意优化Android代码,同时选择它后还会输出Log.e的信息。
Log.e为红色,可以想到error错误,这里仅显示红色的错误信息,这些错误就需要我们认真的分析,查看的信息了。
adb logcat |grep Activtiy 打印过滤单个字符的日志
adb logcat |grep -E "A|B" 打印过滤多个字符的日志
命令查看设备是哪个阶段:adb shell getprop | grep boardid
查看当前运行的界面信息 adb shell dumpsys window |grep mCurrent
查看通知栏消息:adb shell dumpsys notification
对内容做查找:adb shell dumpsys notification | findstr tickerText
adb logcat -b all |grep notification
1.adb root
2.adb remount
3.adb shell pm enable com.android.systemui/com.android.systemui.tuner.TunerActivity
4.adb shell am start -n com.android.systemui/com.android.systemui.tuner.TunerActivity
5.此时进入了System UI Tuner界面,点击status bar,滑动到页面底部,点击time,选择显示时分秒,此时状态栏上的时间会显示“秒”
adb shell am start
adb shell am start -n 包名/包名+类名(-n 类名,-a action,-d date,-m MIME-TYPE,-c category,-e 扩展数据)
1.adb shell am start [options] <INTENT>
官网介绍:https://developer.android.google.cn/tools/adb#am
启动一个activity adb shell am start com.android.settings/com.android.settings.Settings(com.android.settings/.Settings)
或者adb shell am start -n com.android.settings/.Settings
启动一个action adb shell am start -a com.e.uu.main1
带String参数的命令
adb shell am start -n com.e.uu/.MainActivity1 -e abc hello
代码中通过String value= getIntent().getStringExtra("abc")
2.adb shell am startservice [options] <INTENT>
作用:启动一个service
举例:adb shell am startservice -n com.e.uu/.CoreService -e key value
注:在实际调试的时候发现,调用start -n 启动activity时,必须有intent-filter;而startservice则不需要。
3.adb shell am force-stop <PACKAGE>
作用:强制关闭一个应用程序
举例:adb shell am force-stop com.lt.test
4.adb shell am broadcast [options] <INTENT>
作用:发送一个广播
举例:adb shell am broadcast -a "action_finish" (发送一个广播去关闭一个activity)
举例:adb shell am broadcast -a android.intent.action.MASTER_CLEAR(恢复出厂设置的方法,会清除内存所有内容)
举例:adb shell am broadcast -n com.lt.test/.MyBroadcast
5.性能分析之常用adb命令adb shell am start -W
格式为adb shell am start -W 包名/全类名或叫activity名
该命令具体实现在/frameworks/base/cmds/am/src/com/android/commands/am/Am.java,原理是跨Binder调用ActivityManagerService.startActivityAndWait() 接口,其中返回数据分别调用对应
startTime: 调用startActivityAndWait()的时间点
endTime: 调用startActivityAndWait()函数调用返回的时间点
WaitTime: 调用startActivityAndWait()调用耗时。
再通过之间的计算得到。查看页面启动时间:
以启动camera为例
C:\Users\Administrator>adb shell am start -W com.mediatek.camera/com.mediatek.camera.CameraLauncher
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.mediatek.camera/.CameraLauncher }
Status: ok
Activity: com.mediatek.camera/.CameraLauncher
ThisTime: 1340
TotalTime: 1340
WaitTime: 1384
Complete
打印的结果为
ThisTime 该activity启动耗时
TotalTime 应用自身启动耗时=ThisTime+应用application等资源启动时间
WaitTime 系统启动应用耗时=TotalTime+系统资源启动时间
在测试该启动时间时需要理解两个概念
冷启动:应用第一次启动
热启动:按back按键后再启动或非第一次启动切没有清除该应用后台或缓存数据
查看页面跳转的日志
adb logcat |grep "start u" -i
adb查看Android版本号和SDK版本号
获取系统版本:adb shell getprop ro.build.version.release
获取系统api版本:adb shell getprop ro.build.version.sdk
强制输入/过滤log
安卓adb的一些操作
安卓adb的一些操作_xxdw1992的博客-CSDN博客_安卓adb
通过ADB命令录制视频和截图
通过ADB命令录制视频和截图_ChampionDragon的博客-CSDN博客