autojs在手机重启电脑的adb服务

730 阅读2分钟

牙叔教程 简单易懂

适用人群

想在手机上重启电脑的adb服务的人

使用场景

adb服务特别容易冲突,

要么是雷电模拟器连不上, 要么是scrcpy投屏连不上, 要么是autojs连不上,

重启adb解决90%的问题

adb哪里来?

电脑上不带adb环境, 我用的是雷电模拟器的adb,

我的电脑的雷电模拟器adb路径, 就是你的雷电的安装目录

D:\leidian\LDPlayer9

最好把adb设置为系统环境变量

步骤

  1. 电脑作为服务端开个监听
  2. 手机写个UI, 放个按钮, 名字是 重启adb
  3. 点击该按钮, 发送请求给电脑
  4. 电脑监听到了, 就重启adb

代码

电脑作为服务端开个监听, 人生苦短, 我用node

const http = require("http");
const spawn = require("child_process").spawn;
const fs = require("fs");

const hostname = "0.0.0.0";
const port = 3000;

const server = http.createServer(function (req, res) {
    if (req.url == "/") {
        res.writeHead(200, { "Content-type": "text/html" });
        res.write("<h1>Node.js</h1>");
        res.end("<p>Hello World</p>");
    } else if (req.url == "/restart-adb") {
        adbRestart();
        res.end("Command sent");
    }
});

server.listen(port, hostname, function () {
    console.log("Server is running at http://%s:%s", hostname, port);
});

其中重启adb的代码是 adbRestart

function adbRestart() {
    let filePath = "E:/adb-script/adb-restart.bat";
    // 获取目录
    let dir = filePath.substring(0, filePath.lastIndexOf("/"));
    console.log(dir);
    let isExist = fs.existsSync(dir);
    if (!isExist) {
        console.log("Dir not exist");
        // 递归创建文件
        fs.mkdirSync(dir, { recursive: true });
    } else {
        console.log("Dir exist");
    }
    // 同步判断文件是否存在
    isExist = fs.existsSync(filePath);
    if (!isExist) {
        console.log("File not exist");
        let fileContent = "adb kill-server\r\nadb start-server";
        fs.writeFileSync(filePath, fileContent);
    } else {
        console.log("File exist");
    }
    var bat = filePath;
    var ls = spawn(bat);

    ls.stdout.on("data", function (data) {
        console.log("stdout: " + data);
    });

    ls.stderr.on("data", function (data) {
        console.log("stderr: " + data);
    });

    ls.on("exit", function (code) {
        console.log("child process exited with code " + code);
        process.exit();
    });
}

手机写个UI, 放个按钮, 名字是 重启adb

"ui";
ui.layout(
    <vertical  gravity='center'>
        <button id="btn" text="重启adb" />
    </vertical>
);
ui.btn.click(() => {
    // 电脑IP
    let ip = "192.168.5.20";
    let port = 3000;
    let url = `http://${ip}:${port}/restart-adb`;
    http.get(url, {}, function (res, err) {
        if (err) {
            console.error(err);
            return;
        }
        log("code = " + res.statusCode);
        log("html = " + res.body.string());
    });
});

环境

设备: 小米11pro
Android版本: 12
Autojs版本: 9.2.13

名人名言

思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问 --- 牙叔教程

声明

部分内容来自网络 本教程仅用于学习, 禁止用于其他用途

微信公众号 牙叔教程