adb shell常用命令


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

 

文件中字符串查询

grep -rn "hello,world!" ./  (具体用法可以 grep --help 查看)【grep是默认区分大小写的!但也默认非全词匹配!(但这两点都可以通过参数改变)『opengrok是默认不区分大小写的,却默认全词匹配,正好和grep相反!】
-r 是递归查找
-n 是显示行号
-R 查找所有文件包含子目录
-i 忽略大小写
-l 只列出匹配的文件名
-L 列出不匹配的文件名
-w 只匹配整个单词,而不是字符串的一部分(匹配 hello,不匹配helloo)

或 find / | xargs grep function 查找系统根目录下面的所有文件的内容中包含有function字符串的文件列表。

 

目录查找文件所在位置:

find ./ -name 文件名

 

查看包列表:

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,只输出包和未安装包信息(安装来源)。

 

查看某个包路径:

adb shell pm path 包名

 

查看某个包信息:

adb shell dumpsys package com.xxxx.lfeh

 

发广播:

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

 

启动activity

am start -n com.cota.notification/com.cota.notification.xxxxxActivity --es state "complete" --es display_name "Vodafone"

 

adb解锁:

先在开发者选项中选择OEM解锁

adb reboot bootloader

fastboot flashing unlock

选择unlock

 

获取属性值:

adb shell getprop ro.xxx.operator 可以返回运营商

ro.vendor.xxx.operator

adb shell pm -p com.a.b. 返回包所在的手机路径

 

获取手机硬件信息等:

命令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

 

动态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   )

 

Logcat使用:

logcat -b all > log.xml (all 会有些eventlog之类,比较全)

adb logcat |findstr abcdefg  (也可以使用grep但grep搜索默认区分大小写的,findstr不清楚)

adb logcat -c (清除之前的log,因为打开logcat后会把之前的log也打印下来)

 

 

允许更新安装已有系统app

adb shell setprop debug.allow.persist.update true

 

屏幕截图:

adb exec-out screencap -p <截图存放路径> 示例: adb exec-out screencap -p /sdcard/img.jpg(将命名为img的截图保存在sd卡中)

adb shell screencap -p filepath

 

屏幕录制:

adb shell screenrecord [--time-limit time] <录制文件存放的路径> --time-limit参数的单位是s,可选可不选,无此参数默认录制时间和最长录制时间为180s。

示例: adb shell screenrecord --time-limit 30 /sdcard/video.mp4(录制一个30s的视频命名为video保存在sd卡中)

 

查看当前界面是哪个Activity:

adb shell dumpsys activity top | grep ACTIVITY
如果未安装 grep for window.exe,请分开执行:

adb shell
dumpsys activity top | grep ACTIVITY

 

强行停止某应用运行

adb shell am force-stop <包名>

 

查看进程:

ps -ef | grep jiolock (查看所有正在运行的e关联jiolock的进程并打印扩展f信息)

lsof -p 1234 (lists列出1234进程号p打开open的所有文件file)(如动态链接库等)

 

查询命令所使用的工具的位置:

which 命令

 

linux系统下载\更新代码的命令repo:

repo(一个python脚本工具),repo 文件内写明远程访问路径用户等信息,通过如

repo init -u ssh://xxx@gerrit.rnd.meizu.com:29999/platform/manifest -b 分支名字 的命令下载 .repo 文件(包含仓库信息),再通过repo sync命令按照  .repo文件中的仓库信息下载代码,支持中断后再次sync继续下载。
repo forall -c "git reset --hard HEAD" // 所有代码执行git命令,回退到HEAD

 

使用tee工具将输出到终端的信息同时打印到文件:

命令内容 | tee qssi.log

 

查看硬盘各个目录容量和使用量:

df -h

查看指定目录总共占的容量,而不单独列出各子项占用的容量:

du -sh 【指定的目录】

 

查看某目录结构:

tree -L 5  【指定目录】 (以树状结构输出目录下5层的结构)(不想显示文件可以用-d)

 

查看手机所有通过ServiceManager.addService添加到manager里的运行的Service

service list

 

调用service代码里实现的dump函数

adb shell dumpsys activity service com.flyme.mobileservice/.fcts.FCTSService + 自定义的命令(空格为分割符)

 

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这种公司常见编译命令


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM