UNPKG

@aiot-toolkit/emulator

Version:

vela emulator tool.

116 lines (115 loc) 4.81 kB
import { IVvdParams, IVvdResourcePaths, SDKParts, SDKDownloadOpt, SkinInfo, VelaImageType } from '../typing/Vvd'; import { IStartOptions, IStartWithSerialPort } from '../typing/Instance'; import { EmulatorConfig } from '../emulatorutil'; import { findInstance } from '../instance'; import type { DownloadFileOptions } from 'ipull'; import GrpcEmulator from './grpc'; export declare const isHeadlessEnvironment: () => boolean; export declare class VvdManager { private vvdHome; private sdkHome; binFiles: string[]; constructor(vvdResourcePaths: IVvdResourcePaths); static getDebuggerCfgFile(): string; /** * 创建Vela端的 VVD ,统一保存在 .vela/vvd 目录下 * 1. 创建.vela/advancedFeatures.ini文件 * 2. 创建.vela/vvd/${avdName}.ini文件 * 3. 创建.vela/vvd/${avdName}.vvd/config.ini文件 * @param vvdParams VVD参数,宽高、绑定的镜像路径等 * @returns */ createVvd(vvdParams: IVvdParams): boolean; getVvdDir(vvdName: string): any; /** 根据AVD名字获取模拟器的详细信息 */ getVvdInfo(vvdName: string): IVvdParams; /** 根据名字删除AVD */ deleteVvd(vvdName: string): boolean; /** 获取已经创建的模拟器列表 */ getVvdList(): IVvdParams[]; /** 获取 SDK 子目录 */ getSDKPart(name: SDKParts): string; getSkinInfo(skinName: string, skinPath: string): { name: string; path: string; info: SkinInfo; backgroundImage: string; maskImage: string | undefined; defaultLayout: import("../typing/Vvd").EmulatorLayout; } | undefined; /** 获取模拟器皮肤列表 */ getVelaSkinList(): Promise<{ name: string; path: string; info: SkinInfo; backgroundImage: string; maskImage: string | undefined; defaultLayout: import("../typing/Vvd").EmulatorLayout; }[]>; /** 自定义模拟器的镜像目录 */ customImageDir(vvdName: string, target: string): Promise<void>; /** 重置自定义的镜像目录 */ resetImageDir(vvdName: string): void; getEmulatorBinPath(sdkHome: string): string; oldEmulatorMigrate(vvdName: string): Promise<void>; getVvdStartCmd(options: IStartOptions | IStartWithSerialPort): Promise<string>; startVvd(options: IStartOptions | IStartWithSerialPort): Promise<{ coldBoot: boolean; emulatorInstance: ReturnType<typeof findInstance>; getAgent: () => GrpcEmulator; grpcConfig: EmulatorConfig; }>; stopVvd(name: string, timeout?: number): Promise<void>; /** 获取模拟器平台的名称,darwin-aarch64 linux-aarch64 windows-x86_64等 */ getEmulatorPlatform(): string; /** 获取本地镜像的构建时间 */ getLocalImageBuildTime(imagePath: string): Promise<Date | undefined>; getSDKVersionPath(): string; /** 获取本地 SDK 的版本信息 */ getSDKVersion(): Promise<Record<SDKParts, string>>; /** 获取本地已经下载的镜像 */ getLocalSystemImage(): Promise<{ value: string; time: Date | undefined; }[]>; getLocalSystemPath(imageId: VelaImageType): string; hasLocaleImage(imageId: VelaImageType): boolean; /** 判断本地的某个 vela 镜像是否需要更新 */ isLocalImageNeedUpdate(imageId: VelaImageType): Promise<boolean>; getNotInstalledSDKPart(): Promise<SDKParts[]>; /** 检查 SDK 有哪些部分需要更新 */ hasSDKPartUpdate(): Promise<SDKParts[]>; /** * 下载 SDK,默认只下载需要更新的部分 * @param opt.force 强制下载所有部分 * * @example * async function main() { * const sdkHome = path.resolve(os.homedir(), '.export_dev1') * const velaAvdCls = new VelaAvdCls({ sdkHome }) * * const downloder = await velaAvdCls.downloadSDK({ * force: true, * cliProgress: false, * parallelDownloads: 6 * }) * * downloder.on('progress', (progress) => { * console.log( * `progress: ${progress.formattedSpeed} ${progress.formattedPercentage} ${progress.formatTotal} ${progress.formatTimeLeft}` * ) * }) * * await downloder.downlodPromise * * console.log('download success') * } */ downloadSDK(opt: SDKDownloadOpt): Promise<import("ipull").DownloadEngineMultiDownload<import("ipull").BaseDownloadEngine> & { downlodPromise: Promise<void>; }>; /** 下载vela系统镜像 */ downloadImage(imageId: VelaImageType, opt?: Partial<DownloadFileOptions>): Promise<import("ipull").DownloadEngineNodejs<import("ipull/dist/download/download-engine/streams/download-engine-write-stream/download-engine-write-stream-nodejs").default> & { downlodPromise: Promise<void>; }>; }