从零开始用QT编写一个Android投屏、PC反控软件(一)--ADB基础知识

ADB介绍

GitHub: linkedbyte
Android Debug Bridge(ADB)是一种功能强大的命令行工具,它可以让开发者和设备进行通信。ADB 是由三个部分组成:PC上的 adb client、adb server 和设备上的 adb daemon。这三部分构成了一个多连接的设计,即一台PC可以连接多个设备,一台设备也可以连接多个PC。

当启动 adb 客户端时,它会首先检查 adb 服务端进程是否在运行。如果没有运行,它会启动服务端进程。adb 服务端在启动时,会绑定到本地的 TCP 5037 端口,并监听从 adb 客户端发来的命令——所有的 adb 客户端都使用 5037 端口与 adb 服务端通信。

然后,adb 服务端会扫描所有 5555 到 5585 范围内的奇数端口来定位所有的模拟器或设备,并与之建立连接。一旦 adb 服务端找到了 adb daemon(守护进程),它将建立一个到该端口的连接。这样,开发者就可以使用 adb 命令来控制和访问模拟器或设备了。

设备上的 adb daemon 是一个后台进程,它在 Android 设备或模拟器系统中运行。它的作用是连接 adb 服务器,并且为运行在主机上的客户端提供服务。

投屏软件使用到的ADB命令

  1. adb devices -l

    • 功能:列出当前连接到计算机的所有 Android 设备或模拟器的详细信息。
    • 解释adb devices 命令用于检查是否有设备或模拟器连接到计算机。添加 -l 选项可以提供更详细的信息,例如设备的型号或状态。这对于开发者在调试时确认设备连接非常有用。
  2. adb push

    • 功能:将计算机上的文件或目录复制到连接的 Android 设备上。
    • 解释:使用 adb push 命令,开发者可以将本地计算机上的文件或目录推送到 Android 设备上的指定位置。这对于将测试数据、配置文件或其他资源部署到设备上非常有用。
    • 用法adb push <本地路径> <设备路径>
  3. adb reverse

    • 功能:在 Android 设备与计算机之间设置端口转发。
    • 解释adb reverse 允许开发者将 Android 设备上的某个端口映射到计算机上的端口,从而实现两者之间的通信。这对于在开发过程中需要在设备和计算机之间共享数据或进行调试的应用程序非常有用。
    • 用法adb reverse <设备端口> <计算机端口>
  4. adb shell app_process

    • 功能:在 Android 设备的 shell 中以指定权限运行 Java 应用程序。
    • 解释app_process 是 Android 系统上的一个原生程序,它是 APP 进程的主入口点。通过 adb shell 使用 app_process,开发者可以在设备上以特定用户权限(通常是高权限)运行 Java 程序。这对于需要执行系统级操作或测试应用程序在不同权限环境下的行为非常有用。
    • 用法:通常涉及更复杂的命令行参数和 Java 类路径设置,但基本形式是在 adb shell 内调用 app_process 并传递相应的参数。

使用QProcess执行adb命令

首先,确保你的 Qt 项目包含了必要的头文件,并且链接了相应的 Qt 模块(通常是 core)。

#include <QCoreApplication>
#include <QProcess>
#include <QDebug>

void runAdbDevices() {
   
    QProcess process;
    QString program = "adb";
    QStringList arguments;

    // 执行 adb devices -l
    arguments << "devices" << "-l";
    process.start(program, arguments);
    process.waitForFinished();
    QString output = QString(process.readAllStandardOutput());
    qDebug() << "adb devices -l output:" << output;
}

void runAdbPush(const QString &localFilePath, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值