学习目标:学会使用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 -r 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
adb: failed to install C:\Users\17704\Desktop\HookDemo.apk: Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI]在尝试安装 APK 文件时失败了,这通常是因为 APK 文件被标记为仅用于测试,系统默认不允许安装这类 APK。
使用adb install -t xxx.apk

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 原文件或目录 软链接