adb shell常用命令
1. linux下 adb连接无权限或必须切换usb到文件传输才可连接、或fastboot无法识别到手机:
使用时报:no permissions (missing udev rules? user is in the plugdev group); see [http://developer.android.com/tools/device.html] 或 直接就识别不到
解决方法:
$adb start-server
$lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 17ef:6099 Lenovo
Bus 001 Device 002: ID 17ef:608d Lenovo
Bus 001 Device 033: ID 18d1:4ee7 Google Inc. //android xxx
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$sudo vim /etc/udev/rules.d/90-android.rules
编辑文本内容为
SUBSYSTEM=="usb",ATTRS{idVendor}=="18d1",ATTRS{idProduct}=="4ee7",MODE="0666",GROUP="plugdev",SYMLINK+="android",SYMLINK+="android_adb"
需要改的信息为:
ATTRS{idVendor}=="有Google字样此行的ID的左侧数字 我这里是18d1"
ATTRS{idProduct}=="有Google字样此行的ID的右侧数字 我这里是4ee7"
重启 abd 服务
sudo udevadm control --reload-rules
sudo service udev restart
sudo udevadm trigger
adb kill-server
adb start-server
2. 文件中字符串查询
grep -rn "hello,world!" ./ (具体用法可以 grep --help 查看)【grep是默认区分大小写的!但也默认非全词匹配!(但这两点都可以通过参数改变)『opengrok是默认不区分大小写的,却默认全词匹配,正好和grep相反!】
-r 是递归查找
-n 是显示行号
-R 查找所有文件包含子目录
-i 忽略大小写
-l 只列出匹配的文件名
-L 列出不匹配的文件名
-w 只匹配整个单词,而不是字符串的一部分(匹配 hello,不匹配helloo)
或 find / | xargs grep function 查找系统根目录下面的所有文件的内容中包含有function字符串的文件列表。
3. 目录查找文件所在位置:
find ./ -name 文件名
4. 查看包列表:
adb shell pm list packages [options] <FILTER>
打印所有软件包,可选择只打印软件包名称中包含<FILTER>的软件包。
不使用参数:adb shell pm list packages,打印设备/模拟器上的所有软件包
不使用参数:adb shell pm list packages,打印设备/模拟器上的所有软件包
使用-f参数:adb shell pm list packages -f,输出包和包相关联的文件
使用-d参数:adb shell pm list packages -d,只输出禁用的包。由于本机禁用没有,输出为空。
使用-e参数:adb shell pm list packages -e,只输出启用的包。
使用-s参数:adb shell pm list packages -s,只输出系统的包。
使用-3参数:adb shell pm list packages -3,只输出第三方的包。
使用-i参数:adb shell pm list packages -i,只输出包和安装信息(安装来源)。
使用-u参数:adb shell pm list packages -u,只输出包和未安装包信息(安装来源)。
5. 查看某个包路径:
adb shell pm path 包名
6. 查看某个包信息:
adb shell dumpsys package com.xxxx.lfeh
7. 发广播:
adb shell am broadcast -a "xxxx.intent.action.SIM_LOCK_STATE_CHANGE" --ei "operator_type" 10
也可以adb shell am broadcast -a "xxxx.intent.action.SIM_LOCK_STATE_CHANGE" -e "operator_type" 10
8. 启动activity:
am start -n com.cota.notification/com.cota.notification.xxxxxActivity --es state "complete" --es display_name "Vodafone"
9. adb解锁:
先在开发者选项中选择OEM解锁
adb reboot bootloader
fastboot flashing unlock
选择unlock
10. 获取属性值:
adb shell getprop ro.xxx.operator 可以返回运营商
ro.vendor.xxx.operator
adb shell pm -p com.a.b. 返回包所在的手机路径
11. 获取手机硬件信息等:
命令adb shell dumpsys engineer --query_indicate_info
OK:WIFI: 38:8a:be:6b:b0:37
WIFI2: null
BT: 38:8A:BE:6B:B0:36
PCBA: 0020031C0C10031200000650
Carrier: 10010111
IMEI1: 869802059893379
IMEI2: 869802059893361
MEID: A00000DDA2F80B
GUID: 093a141bc00d9b1738dcbea70219447437bde4a98691437f40bbaef4ed7bd1a3
Storage: Total:235458252, Used:9310100, Free:226148152
12. 动态wm开关启停WMS系列和部分AMS系列bug的ProtoLog(可启停的开关收集于ProtoLogGroup.java文件中):
wm logging enable-text/disable-text [group…] 如: wm logging enable-text
WM_DEBUG_STATES
logcat
( 或 adb shell dumpsys window -d enable 打开全局WindowManager:的log、
或 adb shell dumpsys activity -d enable 打开全局Activity的log
或 adb shell setprop sys.inputlog.enbaled true + adb shell dumpsys input 打开 input log )
13. Logcat使用:
logcat -b all > log.xml (all 会有些eventlog之类,比较全)
adb logcat |findstr abcdefg (也可以使用grep但grep搜索默认区分大小写的,findstr不清楚)
adb logcat -c (清除之前的log,因为打开logcat后会把之前的log也打印下来)
14. 允许更新安装已有系统app
adb shell setprop debug.allow.persist.update true
15. 屏幕截图:
adb exec-out screencap -p <截图存放路径> 示例: adb exec-out screencap -p /sdcard/img.jpg(将命名为img的截图保存在sd卡中)
adb shell screencap -p filepath
16. 屏幕录制:
adb shell screenrecord [--time-limit time] <录制文件存放的路径> --time-limit参数的单位是s,可选可不选,无此参数默认录制时间和最长录制时间为180s。
示例: adb shell screenrecord --time-limit 30 /sdcard/video.mp4(录制一个30s的视频命名为video保存在sd卡中)
17. 查看当前界面是哪个Activity:
adb shell dumpsys activity top | grep ACTIVITY
如果未安装 grep for window.exe,请分开执行:
adb shell
dumpsys activity top | grep ACTIVITY
18. 强行停止某应用运行
adb shell am force-stop <包名>
19. 查看进程:
ps -ef | grep jiolock (查看所有正在运行的e关联jiolock的进程并打印扩展f信息)
lsof -p 1234 (lists列出1234进程号p打开open的所有文件file)(如动态链接库等)
20. 查询命令所使用的工具的位置:
which 命令
21. linux系统下载\更新代码的命令repo:
repo(一个python脚本工具),repo 文件内写明远程访问路径用户等信息,通过如
22. 使用tee工具将输出到终端的信息同时打印到文件:
命令内容 | tee qssi.log
23. 查看硬盘各个目录容量和使用量:
df -h
查看指定目录总共占的容量,而不单独列出各子项占用的容量:
du -sh 【指定的目录】
24. 查看某目录结构:
tree -L 5 【指定目录】 (以树状结构输出目录下5层的结构)(不想显示文件可以用-d)
25. 查看手机所有通过ServiceManager.addService添加到manager里的运行的Service
service list
26. 调用service代码里实现的dump函数
adb shell dumpsys activity service com.flyme.mobileservice/.fcts.FCTSService + 自定义的命令(空格为分割符)
27. 通过仓库名查找对应代码路径
在.repo/manifests目录下执行grep -rn -A2 仓库名(注意大小写) 就找到path了
xjsd@xjsh01601:/media/disk1/flyme/EcarxP417/.repo/manifests$ grep -rn -A2 ecarxbus
ecarx-cn-overrides.xml:101: name="ecarx/android/vendor/packages/ecarxbusinessservice"
ecarx-cn-overrides.xml-102- path="android/vendor/ecarx/packages/EcarxBusinessService"
ecarx-cn-overrides.xml-103- revision="verify_p417_cn" />
28. 更新各个仓库的新增分支情况
在.repo/manifests目录下执行git pull
xjsd@xjsh01601:/media/disk1/flyme/EcarxP417/.repo/manifests$ git pull
Warning: Permanently added '[gerrit.ecarxgroup.com]:29418,[10.168.59.127]:29418' (ECDSA) to the list of known hosts.
remote: Counting objects: 20727, done
remote: Finding sources: 100% (1508/1508)
remote: Total 1508 (delta 492), reused 807 (delta 492)
接收对象中: 100% (1508/1508), 1.56 MiB | 879.00 KiB/s, 完成.
处理 delta 中: 100% (492/492), 完成 2 个本地对象.
来自 ssh://gerrit.ecarxgroup.com:29418/p417-cn/ecarx/manifest
* [新分支] 0229_input2 -> origin/0229_input2
* [新分支] 0301/EESB-60729 -> origin/0301/EESB-60729
* [新分支] 0301_test_chrome -> origin/0301_test_chrome
* [新分支] EESB-53508 -> origin/EESB-53508
* [新分支] EESB-53512_pascd -> origin/EESB-53512_pascd
* [新分支] EESB-54233 -> origin/EESB-54233
29. Android编译命令m、mm、mmm区别及工程搭建示例
要使用m、mm、mmm命令对Android代码进行模块编译,需要先执行如下命令初始化环境。
source build/envsetup.sh
lunch
执行lunch时一般会通过命令行提示选择版型,输入对应的序号回车即可。
各命令作用及用法:
mmm命令:编译指定路径下的模块,需要指定模块路径(必须为该模块的根目录,包含Android.mk的目录)。
mm命令:编译当前目录下的模块,需要进到模块所在目录,本质上跟mmm没什么区别。
m命令:编译全部模块。
或直接bash build.sh -j16 dist --qssi_only 2>&1 | tee mars.log这种公司常见编译命令
本文来自博客园,作者:小汀,转载请注明原文链接:https://www.cnblogs.com/1118zjg/p/16054684.html