模拟器快速上手,助力HarmonyOS应用/服务高效开发

1 创建模拟器

1)打开设备管理界面

在使用模拟器之前,首先需要使用DevEco Studio打开或者创建一个工程,选择以下任一种方式打开设备管理界面。

  • 点击DevEco Studio主开发界面菜单栏选择“Tools > Device Manger”打开设备管理界面。

image-20241119151523661

  • 点击DevEco Studio主开发界面工具栏下拉设备列表,选择“Device Manger”打开设备管理界面。

image-20241119151942231

2)设置本地模拟器实例存储路径

初次打开设备管理器界面,设备列表为空,需要手动创建模拟器。在创建之前可通过点击右下角Edit设置本地模拟器实例的存储路径Local Emulator Location(Mac设备默认存储在~/.Huawei/Emulator/deployed目录,Windows设备默认存储在C:\Users\用户名\AppData\Local\Huawei\Emulator\deployed目录),当然也可以使用默认存储路径。

image-20241119152404678

3)创建一个模拟器

设置好本地模拟器实例存储路径后,点击设备管理界面右下角“New Emulator”按钮,打开模拟器创建向导。

image-20241119152704065

(1)选择模拟器设备

在模拟器设备类型选择界面,可以通过点击右上角Edit设置本地模拟器镜像存储路径(Mac设备默认存储在~/Library/Huawei/Sdk目录,Windows设备默认存储在C:\Users\用户名\AppData\Local\Huawei\Sdk目录),当然也可以使用默认的存储路径。

可通过左侧下拉选择创建的模拟器设备类型,也可以直接在设备类型列表中选择需要创建的模拟器设备类型。首次使用会在底部提示“Download the system image first”,表示本地设备尚未存储当前选中模拟器设备类型的模拟器镜像,需要点击设备列表目标模拟器设备行右侧的“下载”图标下载模拟器镜像。也可以通过该界面更新或删除不同设备的模拟器镜像。

image-20241119153439991

(2)创建模拟器

模拟器镜像下载完成后,点击选择模拟器设备界面Next按钮,进入创建模拟器向导界面。

image-20241119162332981

配置模拟器名称Name、内存Memory RAM,存储空间Storage ROM,然后点击Finish按钮,等待模拟器创建完成。

image-20241119162505913

模拟器创建完成后,在本地模拟器设备界面列表中查看创建的模拟器。

image-20241119162817126

(3)启动模拟器

在设备管理器页面,点击启动图标启动模拟器。

image-20241119163007536

(4)关闭模拟器

可以点击设备管理器页面模拟器列表中关闭图标关闭模拟器,也可以直接在模拟器菜单栏单击退出图标关闭模拟器。

image-20241119164350306

image-20241119164407322

(5)运行应用

点击DevEco Studio主开发界面工具栏启动/调试图标启动应用/服务的编译构建与安装,安装完成后应用会运行在模拟器上。

image-20241119163309995

image-20241119163335065

2 使用模拟器

1)操控屏幕

模拟器屏幕操控,使用鼠标左键和滚轮模拟手指和设备屏幕进行交互。一些常用的如滑动屏幕、拖动应用、单击屏幕、双击屏幕、长按屏幕均使用鼠标左键点击模拟手指点击设备屏幕交互,二双指缩放需要鼠标+键盘的方式来模拟,Windows设备按下Ctrl键(Mac设备按下Command键)会在模拟器设备上弹出一个捏合手势多点触控界面。

image-20241119165400225

2)使用工具栏

模拟器工具栏集成了各种调试工具和控制选项,可以点击工具栏中的更多图标,查看常用和扩展菜单。

image-20241119165615101

3 电池采样模拟场景

通过一个简单的电池管理应用,模拟模拟器上不同电池状态。

1import { batteryInfo } from '@kit.BasicServicesKit'; 2 3@Entry 4@Component 5struct Index { 6 @State capacity: number = 0; 7 @State charge: string = ""; 8 @State health: string = ""; 9 10 @Builder descriptionBuilder() { 11 Text('当前电量') 12 .maxFontSize('30sp') 13 .minFontSize("10.0vp") 14 .fontColor("#fffa2a2d") 15 .fontWeight(FontWeight.Medium) 16 .width('100%') 17 .height("100%") 18 .textAlign(TextAlign.Center) 19 } 20 21 build() { 22 Navigation() { 23 Column({ space: 10 }) { 24 Gauge({ value: this.capacity, min: 1, max: 100 }) { 25 Column() { 26 Text(`${this.capacity}`) 27 .fontWeight(FontWeight.Medium) 28 .width('62%') 29 .fontColor("#ff182431") 30 .maxFontSize("60.0vp") 31 .minFontSize("30.0vp") 32 .textAlign(TextAlign.Center) 33 .margin({ top: '35%' }) 34 .textOverflow({ overflow: TextOverflow.Ellipsis }) 35 .maxLines(1) 36 }.width('100%').height('100%') 37 } 38 .startAngle(210) 39 .endAngle(150) 40 .colors(new LinearGradient([{ color: "#e84026", offset: 0 }, 41 { color: "#f7ce00", offset: 0.6 }, 42 { color: "#64bb5c", offset: 1 }])) 43 .width('80%') 44 .height('60%') 45 .strokeWidth(18) 46 .trackShadow({ radius: 7, offsetX: 7, offsetY: 7 }) 47 .description(this.descriptionBuilder) 48 .padding(18) 49 List() { 50 ListItem() { 51 Row() { 52 Text('充电状态') 53 .fontSize(14) 54 Text(this.charge) 55 .fontSize(14) 56 } 57 .width('100%') 58 .padding(12) 59 .justifyContent(FlexAlign.SpaceBetween) 60 } 61 ListItem() { 62 Row() { 63 Text('健康状态') 64 .fontSize(14) 65 Text(this.health) 66 .fontSize(14) 67 } 68 .width('100%') 69 .padding(12) 70 .justifyContent(FlexAlign.SpaceBetween) 71 } 72 } 73 .width('80%') 74 .padding(18) 75 .divider({ 76 strokeWidth: 1, 77 color: 0xdfdfdf 78 }) 79 80 Button('刷新') 81 .fontSize(16) 82 .onClick(() => { 83 this.getBatteryInfo(); 84 }) 85 } 86 .width('100%') 87 .height('100%') 88 } 89 .height('100%') 90 .width('100%') 91 .title("电池") 92 .hideBackButton(true) 93 .hideToolBar(true) 94 } 95 96 aboutToAppear(): void { 97 this.getBatteryInfo(); 98 } 99 100 getBatteryInfo() { 101 this.capacity = batteryInfo.batterySOC; 102 switch (batteryInfo.chargingStatus) { 103 case batteryInfo.BatteryChargeState.ENABLE: 104 this.charge = "正在充电"; 105 break; 106 case batteryInfo.BatteryChargeState.FULL: 107 this.charge = "电量已充满"; 108 break; 109 default : 110 this.charge = "停止充电"; 111 } 112 switch (batteryInfo.healthStatus) { 113 case batteryInfo.BatteryHealthState.GOOD: 114 this.health = "正常"; 115 break; 116 case batteryInfo.BatteryHealthState.OVERHEAT: 117 this.health = "过热"; 118 break; 119 case batteryInfo.BatteryHealthState.OVERVOLTAGE: 120 this.health = "过压"; 121 break; 122 case batteryInfo.BatteryHealthState.COLD: 123 this.health = "低温"; 124 break; 125 case batteryInfo.BatteryHealthState.DEAD: 126 this.health = "僵死"; 127 break; 128 default : 129 this.health = "未知"; 130 } 131 } 132}

image-20241119172729623

点赞
收藏

评论区

加载中...

相关推荐

使用 Taro 开发鸿蒙原生应用 —— 快速上手,鸿蒙应用开发指南

随着鸿蒙系统的不断完善,许多应用厂商都希望将自己的应用移植到鸿蒙平台上。最近,Taro发布了v4.0.0beta.x版本,支持使用Taro快速开发鸿蒙原生应用,也可将现有的小程序转换为鸿蒙原生应用。在《使用Taro开发鸿蒙原生应用》系列文章中,我们已经介绍

2024 鸿蒙零基础快速实战-仿抖音App开发( ArkTS版 )|完结

ArkTS:鸿蒙应用开发的高效利器ArkTS,作为HarmonyOS4.0优选的主力应用开发语言,正逐步成为鸿蒙生态系统中的核心开发工具。它基于TypeScript进行扩展,不仅继承了TypeScript的静态类型优势,还通过一系列创新设计,进一步提升了

使用 Taro 开发鸿蒙原生应用 —— 快速上手,鸿蒙应用开发指南

作者:京东零售利齐诺随着鸿蒙系统的不断完善,许多应用厂商都希望将自己的应用移植到鸿蒙平台上。最近,Taro发布了v4.0.0beta.x版本,支持使用Taro快速开发鸿蒙原生应用,也可将现有的小程序转换为鸿蒙原生应用。在《使用Taro开发鸿蒙原生应用》系列