ADB Shell学习

ADB Shell 学习

又是一个周末了,最怕闲来无事的周末,于是给自己找点事情做,ADB shell这一块一直没有系统的学习,正好趁此机会学习。

主要通过学习资料和adb –help文档学习

怎么使用ADB shell命令

首先找到Andorid的SDK安装路径或者单独安装ADB组件,sdk中adb路径在

cd <adb-path>
#执行adb命令
adb shell

Mac下

#配置adb环境变量
vi ~/.bash_profile
#编辑该文件,添加你的adb路径
export ADB_PATH= your_adb_path
export PATH=${PATH}:${ADB_PATH}

#退出保存再执行命令使得环境变量生效
source .bash_profile

ADB Debugging命令

adb devices

列出连接的设备

adb devices [-l] ‘-l’

参数用于指定需要列出的设备

#打印连接的设备
adb devices

返回结果

#执行命令返回设备的序列数字和状态
2b70fc6a        device

adb forward

重定向连接,需要开启设备的USB debugging模式

adb forward <local> <remote>

adb froward –no-rebind <local> <remote>作用同上,但是如果已经连接就会失败

adb forward –remove <local>删除指定连接的设备

adb forward –remove-all

#映射本地的8000端口到设备的端口9000
adb forward tcp:8000 tcp:9000

adb kill-server

终止adb服务进程 如果服务在运行则终止

adb kill-server

无线连接命令

adb connect

通过WIFI使用ADB

adb connect <host> [:<port>]

第一步 通过USB连接设备

第二步 使用命令查看连接的设备

adb devices

注意: 以上步骤不可忽略

第三步 以TCP模式重启端口:5555

第四步 查看Android设备的IP地址:设置->关于手机->状态->IP地址,将该IP地址以 #.#.#.# 的格式记录下来

第五步 执行命令

#   #.#.#.# 为刚刚记录下来的ip地址
adb connect #.#.#.#

第六步 拔掉usb连接线,确认设备是否依然可连接

adb devices

返回结果

#.#.#.#:5555 device

注意: 确保本地和设备连接的wifi为可访问的同一个局域网

adb disconnect

断开通过TCP/IP连接的设备

adb disconnect [<host> [:<port>]]

不带参数则断开所有TCP/IP连接的设备

adb usb

重启USB模式的 ADB

adb usb

App包的管理命令

adb install

安装Android应用到设备,需要指定需要安装的 .apk 文件的全路径

adb install [option]

adb install test.apk
# 给apk上锁,发布 apk 到 android market上时,可以设置相关标志位来保护你的 app。
adb install -l test.apk
# 重新安装apk
adb install -r test.apk
# 允许测试
adb install -t test.apk
# 在sdcard上安装
adb install -s test.apk
#允许低版本代码
adb install -d test.apk
#授予所有运行权限
adb install -g test.apk

adb install-multiple

一次安装多个apk文件

adb install-multiple [-lrtsdpg]

adb uninstall

从设备中卸载app

adb uninstall [-k]

adb uninstall com.test.app
adb uninstall -k com.test.app

adb shell pm list packages

打印出设备安装的所有包信息,可选参数用于过滤要显示的包名

adb shell pm list packages [options]

adb shell pm list packages
#查看相关的文件
adb shell pm list packages -f
#只显示禁用的packages
adb shell pm list packages -d
# 只显示可用的packages
adb shell pm list packages -e
#只显示系统级别的packages
adb shell pm list packages -s
#只显示第三方的packages(非系统)
adb shell pm list packages -3
#查看安装器(比如google play)
adb shell pm list packages -i
# 包括卸载的packages
adb shell pm list packages -u
#查询用户空间
adb shell pm list packages --user <USER_ID&gt;

adb shell pm path

打印制定APK的路径

adb shell pm path <PACKAGE>

adb shell pm path com.android.phone

返回结果

package:/system/priv-app/TeleService/TeleService.apk

adb shell pm clear

删除所有有关的数据

adb shell pm clear

adb shell pm clear com.test.abc

返回结果

clearing app data, cache

文件管理

adb pull

从设备下载指定的文件到电脑

adb pull <remote> [local]

#下载 /sdcard/demo.mp4文件到 <android-sdk-path>/platform-tools 目录下
adb pull /sdcard/demo.mp4
#下载demo.mp4到 /Users/bsty/Desktop/
adb pull /sdcard/demo.mp4 /Users/bsty/Desktop/

adb push

从电脑上传指定文件到设备

adb push <local> <remote>

#复制 <android-sdk-path>/platform-tools/test.apk 到设备的 /sdcard目录下
adb push test.apk /sdcard
#复制 /Users/bsty/Desktop/test.apk 到 /sdcard 目录下
adb push /Users/bsty/Desktop/test.apk /sdcard

adb shell ls

列出目录类容

* ls [option] <directory>*

第一步.

adb shell

第二步

ls
#显示隐藏的文件
ls -a 
#打印每个文件的序号
ls -i
#以块的形式打印出每个文件的大小
ls -s
#列出详细信息 UIDs和GIDs
ls -n
#列出所有子目录(递归)
ls -R 

提示: 按 Ctrl+C 终止

adb shell cd

切换目录

cd <directory>

第一步

adb shell

第二步

cd /system

adb shell rm

删除文件或者目录

rm [option] <files or directory>

第一步

adb shell

第二步

rm /sdcard/test.txt

#不需要提示强制删除
rm -f /sdcard/test.txt 
#删除所有子文件夹内容
rm -r /sdcard/tmp
#删除一个目录,即使不是空目录
rm -d /sdcard/tmp

提示: rm -d 和rmdir命令相同

#在删除前会有提示信息
rm -i /sdcard/test.txt

adb shell mkdir

创建文件夹

mkdir [options] <directory name>

mkdir /sdcard/tmp
#设置权限
mkdir -m 777 /sdcard/tmp
#当需要时创建父目录
mkdir -p /sdcard/tmp/sub1/sub2

adb shell touch

创建空文件或者修改文件的时间戳

touch [options] <file>

第一步

adb shell

第二步

touch /sdcard/tmp/test.txt

ls /sdcard/tmp

adb pwd

打印当前目录的位置

adb shell

pwd

adb shell cp

复制文件和目录

cp [options] <source> <dest>

第一步

adb shell

第二步

cp /sdcard/test.txt /sdcard/demo.txt

adb shell mv

移动或者重命名文件

mv [options] <source> <dest>

第一步

adb shell

第二步

#移动
mv /sdcard/tmp /system/tmp
#重命名
mv /sdcard/tmp /sdcard/test

网络

adb shell netstat

网络统计

netstat

第一步

adb shell

第二步

netstat

adb shell ping

测试两个网络之间的连接和延迟

第一步

adb shell

第二步

ping www.google.com

adb shell netcfg

通过配置文件管理和配置网络

netcfg [<interface> {dhcplupdown}]

第一步

adb shell

第二步

netcfg

adb shell ip

显示,处理路由,设备,策略路由和隧道

ip [ OPTIONS ] OBJECT

OBJECT := { link | addr | addrlabel | route | rule | neigh | ntable |tunnel | tuntap | maddr | mroute | mrule | monitor | xfrm |netns | l2tp }

OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |-f[amily] { inet | inet6 | ipx | dnet | link } |-l[oops] { maximum-addr-flush-attempts } |-o[neline] | -t[imestamp] | -b[atch] [filename] |-rc[vbuf] [size]}

第一步

adb shell

第二步

#显示wifi IP地址
ip -f inet addr show wlan0

日志

adb logcat

在屏幕上打印日志

adb logcat [option] [filter-specs]

adb logcat

提示: 按 Ctrl-C 停止

#最低优先级,只显示Verbose级别的日志
adb logcat *:V 
#只显示 Debug级别的日志
adb logcat *:D 
#只显示 info 级别的日志
adb logcat *:I 
#只显示Warning级别的日志
adb logcat *:W
#只显示Error级别的日志
adb logcat *:E
#只显示Fatal级别的日志
adb logcat *:F
# 最高优先级,没有打印过的日志
adb logcat *:S 

adb logcat -b <Buffer>

#查看包含radio/telephony相关的消息缓冲区
adb logcat -b radio
# 包含事件相关的缓冲区
adb logcat -b event
#默认
adb logcat -b main
#清除整个日志并退出
adb logcat -c
#转储日志到屏幕并退出
adb logcat -d
#将日志信息写入test.logs文件
adb logcat -f test.logs
#打印指定日志buffer的大小并退出
adb logcat -g 
#设置日志的最大数
adb logcat -n <count>

提示: 默认的值是4. 需要 -r 参数

#Rotates the log file every <kbytes> of output
adb logcat -r <kbytes>

提示: 默认值为16, 需要-f参数

#设置默认 过滤器为 silent
adb logcat -s 

adb logcat -v <format>

# 显示优先级/标签并在过程中发出消息(默认格式)的PID。
adb logcat -v brief
# 只显示 PID
adb logcat -v process
#只显示优先级和标签
adb logcat -v tag
#显示原始日志信息,没有其他数据字段
adb logcat -v raw
#显示日期,调用时,优先级/标签,进程发出消息的PID。
adb logcat -v time
#显示日期,调用时间,优先级,标记,和该线程发出消息的PID和TID
adb logcat -v threadtime
#显示所有元数据字段和空行分开的消息
adb logcat -v long

adb shell dumpsys

转储系统数据

adb shell dumpsys [options]

adb shell dumpsys
adb shell dumpsys battery
#搜集设备的电池信息
adb shell dumpsys batterystats
#清除旧信息
adb shell dumpsys batterystats -reset 

adb shell dumpstate

转储状态

adb shell dumpstate
#转储信息存到一个文件
adb shell dumpstate > state.logs

截屏

adb shell screencap

adb shell screencap <filename>

adb shell screencap /sdcard/screen.png

从设备下载一个文件

adb pull /sdcard/screen.png

adb shell screenrecord

录制屏幕,android4.4(api 19)以上可用

adb shell screenrecord [options] <filename>

adb shell screenrecord /sdcard/demo.mp4

(按 Ctrl-C停止录屏)

从设备下载该录像文件

adb pull /sdcard/demo.mp4

提示:按Ctrl-C停止录屏,默认3分钟自动停止,也可以添加参数 –time-limit 设置录制时间

#设置视频大小:1280*720. 默认为设备分辨率,最好使用设备支持的分辨率
adb shell screenrecord --size <WIDTH*HEIGHT>
#设置视频的bit比,默认4Mbps,可以增加比例提升视频清晰度,但是也会增大文件大小,
#例子: bit比为5Mbps, *** adb shell screenrecord --bit-rate 5000000 /sdcard/demo.mp4
adb shell screenrecord --bit-rate <RATE>
#设置最长(秒),默认为180秒(3分钟)
adb shell screenrecord --time-limit <TIME>
#旋转输出90度。实验性功能
adb shell screenrecord --rotate
#控制台显示日志信息,如果没有设置该参数,不会在录屏是显示任何信息
adb shell screenrecord --verbose

系统

adb root

以root权限重新启动adbd守护进程

adb root

注意:在生产环境中adbd不能以root模式执行,只能用于测试

adb sideload

恢复Andr??oid update.zip包。

adb sideload <upload.zip>

adb shell ps

打印进程状态信息

ps [options]

第一步

adb shell

第二步

ps

ps -p

adb shell top

显示顶层的cpu进程

top [options]

第一步

adb shell

第二步

top

提示: 按Ctrl-C停止**

#以线程形式展示
top -t 

adb shell getprop

通过property service获取设备属性

getprop [options]

第一步

adb shell

第二步

getprop

getprop ro.build.version.sdk

getprop  ro.chipname

getprop | grep adb

adb shell setprop

设置property service

**setprop <key> <value>

第一步

adb shell

第二步

setprop service.adb.tcp.prot 5555
时间: 2024-10-13 12:13:55

ADB Shell学习的相关文章

Android adb shell学习心得(四)

1.awk中的sub sub为替换函数.形式如 sub(/1/,"",$2) 将第二个变量的第一个1替换为空,若将sub替换为gsub.则替换全部的1. 2.awk中的-F 分隔符,默觉得空格 3.awk中的FS,OFS FS为列分隔符,OFS为输出列分隔符.默觉得空格 4.$#:这个程序的參数个数 5.$0:这个程式的运行名字 6.$n:这个程式的第n个參数值.n=1..9 7.$*:这个程式的全部參数,此选项參数可超过9个 8.$$:这个程式的PID(脚本执行的当前进程ID号) 9

Android学习笔记:adb 与 adb shell操作 以及中文乱码解决

1.安装app >adb install xxx.apk 2.卸载app >adb uninstall app的包路径 如:>adb uninstall com.example.myfirstapp 3.进入命令行  adb shell 说明:只有sdcard下的目录才有权限被操作.操作命令就是linux下的文件操作命令,如 ls , mkdir ,rm等 1)从本地文件上传到手机上 adb push 本地文件名   手机目录/文件名(如果不指定文件名,则就是本地文件名) 2)从手机下载

android adb shell and monkey 学习记录

Monkey环境: android SDK and JDK SDK目录下的platform-tools和tools目录要配置环境变量 查看版本: ADB 的安装这里就不多说了,输入以下命令有如下提示就证明你环境ok,否则自行网上搜索解决下. > adb version 查看连接设备: 输入以下命令可以查询已连接的设备与模拟器: > adb devices 查看appPackage 和 appActivity: 设备运行程序 > adb logcat > \path\log.txt

adb 工具学习

adb (android debug bridge)简单介绍: 1.adb 是 Android SDK中所带工具.使用adb,可以在PC上操作Android设备或者模拟器 2.主要功能有: 将本地apk程序安装至Android设备或模拟器,卸载已安装的apk程序. 在Android或模拟器与PC之间上传/下载文件. 运行设备的shell. 3.adb采用 "客户机-服务器"模式.   客户机是开发机 服务器也在开发机上      daemon 运行在安卓设备上 4.常用命令 1.adb

adb shell 命令详解,android

http://www.miui.com/article-275-1.html http://noobjava.iteye.com/blog/1914348 adb shell 命令详解,android 博客分类: android 常用:1.进入模拟器的shell模式 :  adb shell 2.安装应用程序:  adb install -r 应用程序.apkadb installadb install <apk文件路径> :这个命令将指定的apk文件安装到设备上adb install  -r

Android adb shell 显示不正常的解决方法

在学习安卓过程中,准备使用串口,由于权限上,一直获取不到开发板的root权限. 无奈之下,发现windows下cmd中使用 adb shell,进入开发板的shell模式能正常执行chmod 777 tty* 在开发板中(x210 A8内核),安装了超级控制终端都无权执行chmod 777 tty*,真不明白为何windows的adb shell就能执行. 但使用 adb shell带来一些问题 使用过程中,发现ls语句执行后,显示乱码.如图: 网上更种说法都有. 有的说使用 chcp 6500

adb shell常用命令总结

一.文件操作相关命令 1.文件操作命令 子命令 参数 说明 cd 无 进入目录 cat [-beflnstuv] [-B bsize] [file...] 查看文件内容-n:显示行号-b:显示行号,但会忽略空行-s:显示行号,连续空行标记为一行 df 无 列出分区列表 du [-H] [-L] [-P] [-a] [-d depth] [-s] [-cghikmnrx] [file...] 查询文件或目录的磁盘使用空间 ls [-a] [-i] [-l] [-n] [-s] 列出目录内容-a:列

adb shell常用命令

adb shell常用命令: 按下OK键   device.press('KEYCODE_DPAD_CENTER','DOWN_AND_UP') 长按某个按键:  device.drag((236,440),(236,440),2,10) 相应的按键对应的名称如下: home键:KEYCODE_HOME back键:KEYCODE_BACK send键:KEYCODE_CALL End键:   KEYCODE_ENDCALL 上导航键:KEYCODE_DPAD_UP 下导航键:KEYCODE_D

转adb Shell root 权限

因为开发需要,我经常会用到adb这个工具(Android Debug Bridge),我们都知道adb shell默认是没有root权限的,修改系统文件就很不方便了,adb push一个文件就提示Permission Denied.删除system下的文件也没有权限.其实有两种方法可以获取adb shell的root权限,这两种方法的前提都是手机已经root. 1.用su可以提权,直接执行su就会看到用户命令提示符由"$"变成了"#",如果手机没有root,会提示s