JavaScript应用实例-adb相关指令封装成一个类文件,附上各种实例,各个函数加上中文注释

30 篇文章 3 订阅
28 篇文章 4 订阅
该文章展示了一个使用JavaScript编写的类文件,该类封装了ADB(AndroidDebugBridge)命令,提供了如获取设备信息、安装/卸载应用、清除缓存、打开/关闭应用、截屏和录制屏幕等操作。通过实例展示了如何使用这个类进行设备管理和应用操控。
摘要由CSDN通过智能技术生成

JavaScript应用实例-adb相关指令封装成一个类文件,附上各种实例,各个函数加上中文注释

以下代码是一个封装了adb相关指令的JavaScript类文件,包括了各种实例和各个函数均添加了中文注释。

const { exec } = require('child_process');

class ADB {
  constructor(serial = null) {
    this.serial = serial;
  }

  // 执行adb相关指令
  async runCmd(command, args = []) {
    const cmd = `adb ${this.serial ? `-s ${this.serial}` : ''} ${command} ${args.join(' ')}`;
    const { stdout, stderr } = await exec(cmd);
    if (stderr) {
      throw new Error('执行adb命令出错:', stderr);
    }
    return stdout.trim();
  }

  // 获取手机品牌
  async getDeviceBrand() {
    return this.runCmd('shell', ['getprop', 'ro.product.brand']);
  }

  // 获取手机型号
  async getDeviceType() {
    return this.runCmd('shell', ['getprop', 'ro.product.model']);
  }

  // 获取android系统版本
  async getAndroidVersion() {
    return this.runCmd('shell', ['getprop', 'ro.build.version.release']);
  }

  // 获取adb连接的设备列表
  async getDeviceList() {
    const devices = await this.runCmd('devices');
    return devices
      .split(/\n/)
      .slice(1)
      .filter((line) => line.trim() !== '')
      .map((line) => {
        const [serial, state] = line.trim().split(/\s+/);
        return { serial, state };
      });
  }

  // 安装apk文件
  async installApk(apkPath, options = {}) {
    const args = ['install'];
    if (!options.allowTestPackages) {
      args.push('-i', 'com.android.defcontainer');
    }
    if (!options.replace) {
      args.push('-r');
    }
    args.push(apkPath);
    try {
      await this.runCmd(...args);
      return true;
    } catch (error) {
      if (/INSTALL_FAILED_ALREADY_EXISTS/.test(error.message)) {
        return false;
      }
      throw error;
    }
  }

  // 卸载应用程序
  async uninstall(packageName) {
    try {
      await this.runCmd('uninstall', [packageName]);
      return true;
    } catch (error) {
      return false;
    }
  }

  // 清除应用程序缓存
  async clearCache(packageName) {
    return this.runCmd('shell', ['pm', 'clear', packageName]);
  }

  // 打开应用程序
  async openApp(packageName, activityName) {
    return this.runCmd('shell', ['am', 'start', '-n', `${packageName}/${activityName}`]);
  }

  // 关闭应用程序
  async closeApp(packageName) {
    return this.runCmd('shell', ['am', 'force-stop', packageName]);
  }

  // 截屏
  async screenshot(filePath) {
    return this.runCmd('shell', ['screencap', '-p', filePath]);
  }

  // 录制屏幕
  async screenRecord(filePath, options = {}) {
    const args = ['shell', 'screenrecord', filePath];
    if (options.resolution) {
      args.push('--size', options.resolution);
    }
    if (options.bitRate) {
      args.push('--bit-rate', options.bitRate);
    }
    if (options.timeLimit) {
      args.push('--time-limit', options.timeLimit);
    }
    if (options.verbose) {
      args.push('--verbose');
    }
    return this.runCmd(...args);
  }
}

module.exports = ADB;

使用实例




const ADB = require('./ADB');

// 实例化adb对象
const adb = new ADB();

// 获取设备列表
adb.getDeviceList().then((devices) => {
  console.log(devices);
});

// 获取当前设备品牌和型号
adb.getDeviceBrand().then((brand) => {
  adb.getDeviceType().then((type) => {
    console.log(`当前设备:${brand} ${type}`);
  });
});

// 安装应用
adb.installApk('apk_path').then((result) => {
  console.log(`安装成功:${result}`);
});

// 卸载应用
adb.uninstall('com.example.app').then((result) => {
  console.log(`卸载成功:${result}`);
});

// 清除应用程序缓存
adb.clearCache('com.example.app').then((result) => {
  console.log(`清除应用程序缓存:${result}`);
});

// 打开应用
adb.openApp('com.example.app', 'com.example.app.MainActivity').then((result) => {
  console.log(`打开应用:${result}`);
});

// 关闭应用
adb.closeApp('com.example.app').then((result) => {
  console.log(`关闭应用:${result}`);
});

// 截屏
adb.screenshot('/path/to/screenshot.png').then((result) => {
  console.log(`截屏成功:${result}`);
});

// 录制屏幕
adb.screenRecord('/path/to/screenrecord.mp4').then((result) => {
  console.log(`录制屏幕成功:${result}`);
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

《代码爱好者》

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值