@aiot-toolkit/emulator
Version:
vela emulator tool.
116 lines (115 loc) • 4.81 kB
TypeScript
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>;
}>;
}