常用adb指令

adb环境配置就不说了(将sdk中的adb添加到系统环境变量中)。

1.查看连接的设备:

adb devices

结果:List of devices attached

emulator-5554   device

SH0A6PL00243    device

2.安装apk:

adb install D:\app-debug.apk

如果有多个device,如第一个命令情况,则这样使用:通过adb -s device  cmd向设备发送adb命令,

adb -s SH0A6PL00243 install D:\app-debug.apk

执行其他命令多设备情况也是如此

(例如:重启设备:adb -s ba6ff226 reboot)

3.保留数据和缓存文件,重新安装apk,也称强制安装:

adb install -r D:\app-debug.apk

4.安装apk到sd卡:

adb install -s D:\app-debug.apk

5.直接卸载:

adb uninstall <package>

6.卸载 app 但保留数据和缓存文件:

adb uninstall -k <package>

7.列出手机装的所有app的包名:

adb shell pm list packages

ps: adb shell方式进入的,可以使用exit退出来;

adb shell

exit

8.列出系统应用的所有包名:

adb shell pm list packages -s

9.清除应用数据与缓存:

adb shell pm clear <package>

10.启动应用:

adb shell am start -n com.mvvm.demo/.ui.SplashActivity

11.强制停止应用:

adb shell am force-stop <package>

12.查看日志:

adb logcat

加上过滤会更丝滑:

adb logcat | grep -i "^E.MyApp"

含义: grep白名单模式,“xxx” 匹配的tag,

"^Exxx" 是Error级别,"^.MyApp"结尾匹配MyApp的tag。-i 忽略大小写。

 grep -v黑名单模式,其他同上。

比如:

adb logcat | grep -v "^..MyApp\|^..MyActivity" adb logcat | grep -vE "^..MyApp|^..MyActivity"  #后面第二个使用 egrep 无须转义符

如何实现不打开logcat工具栏来监听日志文件呢:比如想把logcat里关于当前应用的日志收集起来,实现步骤如下:(这里是windows下实战)

12.B.1.设置编码规则:(chcp查看)可以先查看,如果不是这个会出现中文等一些字符乱码

chcp 65001

12.B.2.查询进程:

adb shell ps | find "com.yyds.areyouok"

返回如下:

u0_a558      27218    783 15115856 216264 0                  0 S com.yyds.areyouok

第二个参数就是pid进程id;

12.B.3 依据进程id查询日志:(注意进程id需要带引号)

adb logcat | find "27218"

12.B.4 修改为保存到指定目录文件:

adb logcat -c #清理一下现有日志

adb logcat -v time > D:\log.txt #保存所有

adb logcat -v time | find "27218" > D:\log.txt #保存指定进程

13.重启:

adb reboot

14.获取序列号:

$adb get-serialno

emulator-5554

15.查看设备型号:

$adb shell getprop ro.product.model

Android SDK built for x86

16.查看 Android 系统版本:

$adb shell getprop ro.build.version.release

7.0

17.查看屏幕分辨率:

$adb shell wm size

Physical size: 480x800

18.查看屏幕密度:

$adb shell wm density

Physical density: 480

19.从电脑上传文件到手机:

adb push <本地路径> <远程路径>

20.把手机上的文件复制到电脑:

adb pull <远程路径> <本地路径>

如果想把手机上安装的app备份下来也可以

// 列出所有安装包

adb shell pm list package

// 找到你需要提取的包名,然后获取路径

adb shell pm path packageName

// 输出路径后拷贝或者pull到你的电脑

adb pull apkPath~/Download

(例如:adb pull /data/app/~~gTfdUscl8YsvfTVfZJR7_A==/com.yyds.areyouok-m8R5R50EakEWd11z_owWEw==/base.apk back001.apk)

21. 解决adb连接不稳定:

adb start/kill server

掉线时, 可以先kill-server, 然后start-server来确保Server进程启动. 往往可以解决问题。

22.截屏:

adb shell screencap /sdcard/screen1.png

23.查看很多系统信息(window,activity,stack,wifi等信息):

adb shell dumpsys -h

比较实用的一个命令是,

adb shell dumpsys meminfo 包名 -d,

可以查看出当前项目是否发生内存泄漏,

实用方法,进入app,然后正常退出,

执行上面命令,如果有组件发生被引用数不为零,就是泄漏,可以dump内存片段文件hprof分析。至于完整查找定位内存泄漏问题,我将在下个文章分析出来。

24.获取电量消耗信息:

获取整个设备的电量消耗信息: 

adb shell dumpsys batterystats | more

获取某个apk的电量消耗信息:  

adb shell dumpsys batterystats <package> | more

可以使用一个python脚本historian.py来形成可视化html来分析耗电量问题。整理怎么使用我将会在未来的性能优化中分享。

25.adb连接网络内的安卓设备:adb connect IP:port

示例:adb connect 192.168.1.117:5555

如果没有5555端口,可以通过adb tcpip 5555来开启,

如果公网ip就可以远程了,如果是走网线连接也是可以的。端口默认5555可以不写。

断开连接 adb disconnect IP:端口

adb disconnect 192.168.1.117:5555

有时候会出现offline的现象,就是设备离线了,这种情况只有重启网络了,实在不行试试重启手机


如果想要看更多adb命令,推荐一个《一份超全超详细的 ADB 用法大全》

文章末尾记录一些常用出现的坑和解决办法:

1.adb (5037)端口被占用

解决办法:

a.  第一步,看看服务端口

adb nodaemon server

cannot bind 'tcp:5037'

b .   第二步,查找5037端口的使用情况

netstat -ano | findstr "5037"

  TCP    127.0.0.1:5037        0.0.0.0:0              LISTENING      8516

  TCP    127.0.0.1:5037        127.0.0.1:59163        TIME_WAIT      0

  TCP    127.0.0.1:5037        127.0.0.1:59164        TIME_WAIT      0

  TCP    127.0.0.1:5037        127.0.0.1:59167        TIME_WAIT      0

c.  第三步,查看线程id8516的进程名称

  tasklist | findstr "8516"

sjk_daemon     8516 Console         13,071 K

哦,原来是sjk_daemon进程占了adb的端口。

d.    第四部,查看进程名对应的进程id

  tasklist

Image Name                    PID Session Name        Session#    Mem Usage

========================= ======== ================ =========== ============

System Idle Process              0 Services                  0        24 K

System                          4 Services                  0      1,128 K

sjk_daemon                    963 Console                    1      3,071 K

tasklist.exe                  1260 Console                    1      5,856 K

e, 第五步, 将这个进程kill掉:

taskkill /f /pid 963

如果这个命令提示无权限,那么,可以去windows的“任务管理器”中“进程”那个窗口,找到这个进程,将它杀掉。

再运行adb devices,就没有问题了。

adb devices

9dk7f482396a371j        device

或者重启:

adb kill-server

 adb start-server

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容

  • 1 常用Linus文件操作指令: 2 adb相关指令 adb shell指令 adb shell是指从PC进入目标...
    daoge阅读 961评论 0 0
  • 希望能有一个知己,能和我一样,喜欢用浪漫的词语问候彼此。 希望能有一个知己,在受伤时用软软的语言抚慰我的忧伤。 希...
    你是此生最美的风景love阅读 234评论 0 1
  • 自己好懒…… 在宿舍待了一天 一个人懒得去教室…… ……诶
    无所说_阅读 90评论 0 0
  • 今天是考核,老师让我们自己做一个桌子然后对他仿真不断地调节肋的大小,角度,数量!从而达到自己能处理到的最优的方式。...
    张宝兴阅读 214评论 0 0
  • 五绝·诗生水月 搅动水中月,漫成心底诗; 举杯酬往事,吟与后人知!
    補缺楼丨胡德棒阅读 267评论 2 2