Skip to content

Latest commit

 

History

History
467 lines (379 loc) · 17 KB

README-ZH_CN.md

File metadata and controls

467 lines (379 loc) · 17 KB

android-tools

Test

使用 Nodejs 控制管理 Andorid 设备。

English | 简体中文

安装

npm i @wtto00/android-tools

用法

import Android from '@wtto00/android-tools';

const options = {
  // adb: "platform-tools/adb",
  // avdmanager: "cmdline-tools/bin/avdmanager",
  // sdkmanager: "cmdline-tools/bin/sdkmanager",
  // emulator: "emulator/emulator",
};
const android = new Android(options);

Andorid Options

field type required default note
adb string false ${process.env.ANDROID_HOME}/platform-tools/adb或者系统环境已配置的adb路径 adb 可执行文件与 ANDROID_HOME 的相对路径
avdmanager string false ${process.env.ANDROID_HOME}/cmdline-tools/bin/avdmanager或者系统环境已配置的avdmanager路径 avdmanager 可执行文件与 ANDROID_HOME 的相对路径
sdkmanager string false ${process.env.ANDROID_HOME}/cmdline-tools/bin/sdkmanager或者系统环境已配置的sdkmanager路径 sdkmanager 可执行文件与 ANDROID_HOME 的相对路径
emulator string false ${process.env.ANDROID_HOME}/emulator/emulator或者系统环境已配置的emulator路径 emulator 可执行文件与 ANDROID_HOME 的相对路径

start

打开一个已存在的模拟器设备。

android
  .start(
    avd: 'android-avd-name',
    verbose: true
    // ...
  )
  .then((res) => {
    console.log(`emulatorId: ${res.id}`);
  })
  .catch((err) => {
    console.log(err);
  });
field type required default note
avd string true - 使用特定的android虚拟设备
verbose boolean true - 启用特定的调试消息
noWindow boolean false - 禁用图形窗口显示
noSnapshot boolean false - 执行完全引导,不自动保存,但qemu vmload和vmsave在snapstorage上操作
noSnapstorage boolean false - 不要装载快照存储文件(这将禁用所有快照功能)
noSnapshotUpdateTime boolean false - 在还原时不要尝试更正快照时间
noSnapshotSave boolean false - 退出时不自动保存到快照:放弃已更改的状态
noSnapshotLoad boolean false - 不要从快照自动启动:执行完全启动
cameraBack "emulated"
"virtualscene"
"videoplayback"
"none"
"webcam"
false - 为背面的相机设置模拟模式
cameraFront 'emulated'
'webcam'
'none'
false - 为前置摄像头设置模拟模式
gpu 'auto'
'auto-no-window'
'host'
'swiftshader_indirect'
'angle_indirect'
'guest'
false 'auto' 设置硬件OpenGLES仿真模式
nocache boolean false - 禁用缓存分区
noaudio boolean false - 禁用音频支持
noBootAnim boolean false - 禁用动画以加快启动速度
lowram boolean false - 该设备是一种低ram设备
restartWhenStalled boolean false - 允许在来宾停止时重新启动。
waitForDebugger boolean false - 启动时暂停,等待调试器进程附加后再继续
httpProxy string false - 通过HTTP/HTTPS代理进行TCP连接
cores number false - 将CPU核心数设置为模拟器
wipeData boolean false - 重置用户数据映像(从initdata复制)
noPassiveGps boolean false - 禁用被动gps更新

waitForDevice

等待给定的设备打开,可使用状态。

android
  .waitForDevice('emulator-id')
  .then(() => {
    console.log('available');
  })
  .catch((err) => {
    console.log(err);
  });
field type required default note
emulatorId string true - 模拟器设备 ID

ensureReady

确保给定的设备已准备就绪。可以 adb 执行一系列命令。

android
  .ensureReady('emulator-id')
  .then(() => {
    console.log('ready');
  })
  .catch((err) => {
    console.log(err);
  });
field type required default note
emulatorId string true - 模拟器设备 ID

createAVD

创建一个模拟器。

android
  .createAVD({
    name: avdName,
    package: 'android-image-name',
    force: false
  })
  .then(() => {
    console.log('has been created');
  })
  .catch((err) => {
    console.log(err);
  });
field type required default note
apiLevel number false - 平台系统镜像的API级别 - 例如,Android Marshmallow的级别为23,Android 10的级别为29。
target 'default'
'google_apis'
'playstore'
'android-wear'
'android-wear-cn'
'android-tv'
'google-tv'
'aosp_atd '
'google_atd'
false 'default' 系统镜像的目标。
arch 'x86_64'
'x86'
'arm64-v8a'
'armeabi-v7a'
false 当前系统CPU架构 系统镜像的CPU架构
package string true - 此模拟器的系统镜像的路径(例如 'system-images;android-19;google_apis;x86')。
name string false - 新模拟器的名称。
force boolean false - 创建虚拟设备(覆盖现有的模拟器)。
  • 如果你传了package,则参数apiLeveltargetarch将被会略。如果你没有传参package,则apiLevel参数是必须的。

hasAVD

当前系统是否已存在给定的模拟器。

android
  .hasAVD('android-avd-name')
  .then((res) => {
    console.log(res ? 'has been created' : 'not exist');
  })
  .catch((err) => {
    console.log(err);
  });
field type required default note
emulatorId string true - 模拟器名称

stop

停止给定的模拟器。

android
  .stop('emulator-id')
  .then(() => {
    console.log('has sent stop command');
  })
  .catch((err) => {
    console.log(err);
  });
field type required default note
emulatorId string true - 模拟器设备 ID

waitForStop

等待给定的模拟器停止完毕。

android
  .waitForStop('emulator-id')
  .then(() => {
    console.log('has been stopped');
  })
  .catch((err) => {
    console.log(err);
  });
field type required default note
emulatorId string true - 模拟器设备 ID

isInstalled

在给定的模拟器设备和,是否已安装给定的软件包。

android
  .isInstalled('emulator-id', 'com.android.webview')
  .then((res) => {
    console.log(res ? 'installed' : 'not installed');
  })
  .catch((err) => {
    console.log(err);
  });
field type required default note
emulatorId string true - 模拟器设备 ID
packageName string true - 软件包 id

install

为给定的模拟器设备安装给定的软件包。

android
  .install('emulator-id', '/path/to/apk', { r: true })
  .then(() => {
    console.log('installed');
  })
  .catch((err) => {
    console.log(err);
  });
field type required default note
emulatorId string true - 模拟器设备 ID
apkPath string true - apk 安装包所在路径位置
options object false - "adb install"的参数:-lrtsdg

inputKeyEvent

发送按键指令给给定的模拟器设备。

android
  .inputKeyEvent('emulator-id', 82)
  .then(() => {
    console.log('has send key');
  })
  .catch((err) => {
    console.log(err);
  });
field type required default note
emulatorId string true - 模拟器设备 ID
key number true - 所要发送的按键 key 值,见安卓文档

devices

列出当前已连接的设备。相当于adb devices

android
  .devices()
  .then((res) => {
    res.forEach((item) => {
      console.log(`name: ${item.name}, status: ${item.status}`);
    });
  })
  .catch((err) => {
    console.log(err);
  });

listPackages

列出给定设备上,已安装的软件包

android
  .listPackages('emulator-id')
  .then((res) => {
    res.forEach((item) => {
      console.log(item);
    });
  })
  .catch((err) => {
    console.log(err);
  });
field type required default note
emulatorId string true - 模拟器设备 ID

listDevices

列出当前系统可用的用于创建模拟器的设备列表。

android
  .listDevices()
  .then((res) => {
    res.forEach((item) => {
      console.log(`id: ${item.id}, Name: ${item.Name}, OEM: ${item.OEM}, Tag: ${item.Tag}`);
    });
  })
  .catch((err) => {
    console.log(err);
  });

listAVDs

详细列出当前已创建的模拟器列表。

android
  .listAVDs()
  .then((res) => {
    res.forEach((item) => {
      console.log(`Name: ${item.Name}, Path: ${item.Path}, Target: ${item.Target}, Sdcard: ${item.Sdcard}`);
    });
  })
  .catch((err) => {
    console.log(err);
  });

listTargets

列出可用的安卓镜像设备。

android
  .listTargets()
  .then((res) => {
    res.forEach((item) => {
      console.log(`id: ${item.id}, Name: ${item.Name}, Type: ${item.Type}, API level: ${item['API level']}`);
    });
  })
  .catch((err) => {
    console.log(err);
  });

listImages

列出所有的安卓镜像。

android
  .listImages()
  .then((res) => {
    res.forEach((item) => {
      console.log(
        `name: ${item.name}, type: ${item.type}, sdk: ${item.sdk}, target: ${item.target}, arch: ${item.arch}`
      );
    });
  })
  .catch((err) => {
    console.log(err);
  });

listInstalledImages

列出已安装的所有安卓镜像。

android
  .listInstalledImages()
  .then((res) => {
    res.forEach((item) => {
      console.log(
        `name: ${item.name}, type: ${item.type}, sdk: ${item.sdk}, target: ${item.target}, arch: ${item.arch}`
      );
    });
  })
  .catch((err) => {
    console.log(err);
  });

adb

使用adb执行自定义命令。

android
  .adb('emulator-id', 'shell pm list packages')
  .then((res) => {
    console.log(res.output);
  })
  .catch((err) => {
    console.log(err);
  });
field type required default note
cmd string true - 要执行的命令

avdmanager

使用avdmanager执行自定义命令。

android
  .avdmanager('list avd')
  .then((res) => {
    console.log(res.output);
  })
  .catch((err) => {
    console.log(err);
  });
field type required default note
cmd string true - 要执行的命令

sdkmanager

使用sdkmanager执行自定义命令。

android
  .sdkmanager('--list')
  .then((res) => {
    console.log(res.output);
  })
  .catch((err) => {
    console.log(err);
  });
field type required default note
cmd string true - 要执行的命令

emulator

使用emulator执行自定义命令。

android
  .emulator('--help')
  .then((res) => {
    console.log(res.output);
  })
  .catch((err) => {
    console.log(err);
  });
field type required default note
cmd string true - 要执行的命令