学习目标:学会使用adb与Linux的常见命令以及logcat的使用方法

adb

adb的作用

  • 可以方便的在电脑端通过命令操控手机
  • 很多手机自动化指令也是通过adb来实现的

adb的构成

  • client端,在电脑上,负责发送adb命令
  • daemon守护进程(adbd),在手机上,负责接收和执行adb命令
  • server端,在电脑上,负责管理client和daemon之间的通讯

adb工作原理

  • client端将命令发送给server端
  • serever端会将命令发送给daemon端
  • 将执行结果返回给server端
  • server端将结果再返回给client端

adb常用命令

adb/ adb help/ adb --help		查看adb帮助文档
adb version 显示adb版本和路径
adb devices 显示连接的设备列表
adb install xxx.apk 通过adb安装app
adb install pr xxx.apk 覆盖安装
adb uninstall 包名 通过adb卸载app
adb push xxx xxx 推送电脑的文件到手机
adb pull xxx 拉取手机的文件到电脑
adb shell 进入到手机的Linux控制台
adb -s 设备名 shell 多设备时,指定设备
adb start-server 启动Server
adb kill-server 停止Server

logcat

AndroidStudio中的logcat

package: mine		用当前运行的应用包名进行过滤
level: DEBUG 显示调试级别以上信息
tag: xxxx 过滤xxxx的标签
-tag: xxxx xxxx的标签除外
message: xxxx 过滤包含xxxx关键字的信息

logcat常用选项

adb logcat -help	常看logcat的帮助文档
adb logcat 常规显示日志
adb logcat -c 清除日志
adb logcat -g 显示缓冲区大小
adb logcat -G 256M 修改缓冲区大小

Linux

cmd命令和Linux命令的区别

  • cmd里面输入的命令用来控制Windows电脑
  • adb shell进入手机控制台以后,支持使用Linux命令,输入的命令用来操控手机
  • 这两者命令是不一样的,比如Windows查看目录下的文件及文件夹信息用dir,切换目录用cd;而Linux里用ls和cd

adb shell进入手机控制台以后,显示的信息

  • oriole:/$
  • 冒号前面的oriole代表设备名
  • 冒号后面的/代表当前路径
  • $代表当前是shell权限,#代表是root权限
  • 如果手机已经root,可以使用su命令来获取root权限

根目录 /

  • 可以简单的理解为Windows的盘符,比如C:\
  • /soft可以理解为C:\soft;/soft/Android可以理解为C:\soft\Android
  • / 开始的路径都是绝对路径

pwd

pwd

显示当前目录的绝对路径

cd

cd xxx 切换到指定目录

xxx可以是绝对路径,也可以是相对路径

命令或者文件名打不全,可以按tab会补全

cd ~切换到自己的用于目录

~开始的也都是绝对路径

其他特点

  • Linux命令实际上是系统中的一个二进制文件
  • Linux文件不需要扩展名,有的时候为了区分,才人为的加上扩展名
  • Linux文件也是有类型的,可以使用file xxx来查看
  • 很多命令支持通配符,文件名以.开头即可
  • Linux中的隐藏文件,文件名以.开头

Linux命令组成

命令 选项 参数

  • 选项和参数是可选的:命令、命令 选项、命令 参数、命令 选项 参数

一般命令都是小写,选项区分大小写

命令 作用
直接使用 ls 显示当前目录下的文件及目录信息
加参数 ls 路径 显示对应路径下文件及目录信息
加选项 ls -a 显示当前目录下所有文件和目录
加多个选项 ls -a -l 上面的基础上显示详细信息
多个选项简写 ls -alh 上面的基础上,显示统计信息
选项顺序可以颠倒 ls -lha 同上

输出

echo hyq
echo $PATH 输出环境变量
echo $HOSTNAME 输出主机名

重定向与追加

>		输出重定向 本身应该在终端显示的内容,变成写入文件覆盖
>> 追加
echo Hello World! > text 输出内容保存到文件

输出文件内容

cat + 文件名

创建

touch xxx	创建空文件
mkdir aaa 创建aaa目录,如果目录存在会报错
mkdir aaa bbb 同时创建多个目录,如果目录存在会报错
mkdir -p aaa/bbb 递归创建,如果目录存在不报错;不错在则创建

删除

rmdir xxx	删除空目录
rm xxx 删除文件
rm aaa bbb 删除多个文件
rm -r 递归删除整个目录
rm -rf xxx 递归删除,且强制删除不提示控制信息 (在Android里本来就没有提示)

复制

cp a /sdcard/	复制文件到sdcard,保持原名
cp a b /sdcard/ 复制多个文件到sdcard,保持原名
cp * /sdcard/ 复制当前目录下所有文件到sdcard,保持原名
cp a /sdcard/b 复制文件到sdcard,重命名为b
cp -r a b 递归复制整个目录,重命名为b

移动

mv oldName newName			移动文件同时重命名
mv oldName /sdcard/newName 移动文件同时重命名
mv oldName /sdcard/ 移动文件,保持原名

grep

grep -ril hyq*	-r代表递归查找,-i代表忽略字母大小写,-l代表只显示文件名

管道命令

相当于命令的组合使用,把上个命令的执行结果,作为数据源,交给下个命令处理

ps -A | grep xxx

查找文件或目录

指定目录,递归查找文件

find 路径 -name 文件名

软链接

软链接也称符号链接,类似windows快捷方式,主要存放链接其他文件的路径

ln -s 原文件或目录 软链接