基础认证题库请移步:HarmonyOS应用开发者基础认证题库
注:有读者反馈,题库的代码块比较多,打开文章时会卡死。所以笔者将题库拆分,单选题20个为一组,多选题10个为一组,题库目录如下,读者可以按需跳转。如果对您的阅读产生不便,笔者在这里向大家说声抱歉,请各位读者原谅。完整的md文档,等读者把题库整理完,会将网盘链接发出。
序号目录:
- 单选题
HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 单选题序号1
HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 单选题序号2
HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 单选题序号3
HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 单选题序号4 - 多选题
HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 多选题序号1
HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 多选题序号2
HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 多选题序号3
HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 多选题序号4
HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 多选题序号5
注:题目是乱序,每次考试,选项的顺序都不同
单选题题库 - 序号4
61、当使用状态变量进行ArkUI组件间数据通信的时候,如果两个组件间没有直接的嵌套关系(非父子和祖孙关系组件),但是他们又属于同一页面,最佳的装饰器应该选用哪个?
A、@Provide+@Consume
B、AppStorage
C、LocalStorage
D、@State+@Link
LocalStorage:页面级UI状态存储-管理应用拥有的状态-状态管理(V1稳定版)-状态管理-学习ArkTS语言-基础入门 | 华为开发者联盟 (huawei.com)
62、某App依赖了3个ohpm库,这3个库占用的体积都比较大。在App的技术架构中,有多个hap和多个hsp均依赖这3个库,为了减少app的首包大小,以下哪些做法是无效的?
A、将某些特性做成按需加载模块,若这3个ohpm仅在按需加载模块里面使用,则将其打包在按需加载模块中。
B、将3个ohpm库分 别封装成3个hsp,并对外提供必要的接口。
C、将3个ohpm库封装成1个hsp,并对外提供必要的接口。
D、将这3个ohpm库封装到har包中,并对外提供必要的接口。
HAR-应用程序包开发与使用-应用程序包基础知识-开发基础知识-基础入门 | 华为开发者联盟 (huawei.com)
63、以下关于应用架构技术选型说法不正确的是()
A、对于初始版本的应用,功能比较简单,可以考虑采用单HAP加上多个HAR工程构建代码工程。
B、一些应用的扩展能力,比如备份、服务卡片,可以采用ExtensionAbility做成单独的feature HAP包,独立分发。
C、元服务和应用可以共用一个代码工程,采用多目标产物构建方式,构建出应用和元服务两个产物,用于上架。
D、随着业务的发展,应用功能会越来越多,某些功能可以做成动态加载,动态加载的模块采用HAR工程来构建,方便复用和共享。
HAR-应用程序包开发与使用-应用程序包基础知识-开发基础知识-基础入门 | 华为开发者联盟 (huawei.com)
64、关于短时任务开发使用的接口是
A、使用startWork申请任务, 使用stopWork取消任务,使用getWorkStatus获取任务状态
B、使用startBackgroundRunning申请任务 ,使用stopBackgroundRunning取消任务
C、使用requestSuspendDelay申请任务, 使用getRemainingDelayTime获取任务剩余时间
D、使用publishReminder发布一 个提醒类通知,使用cancelReminder取消一个指定的提醒类通知
短时任务-Background Tasks Kit(后台任务开发服务)-应用框架 | 华为开发者联盟 (huawei.com)
65、以下关于ArkUI NavDestination组件的生命周期执行顺序中正确的是
A、onWillappear->onWillhow->onShow->onAppear->onWillHide->onHidden->onWillDisappear->onDisappear
B、onWillappear->onAppear->onWillShow->onShow->onWillHide->onWillDisappear->onHidden->onDisappear
C、onWillappear->onAppear->onWillShow->onShow->onWillDisappear->onWillHide->onHidden->onDisappear
D、onWillappear->onAppear->onWillShow->onShow->onWillHide->onHidden->onWillDisappear->onDisappear
组件导航 (Navigation) (推荐)-设置组件导航和页面路由-UI开发 (ArkTS声明式开发范式)-ArkUI(方舟UI框架)-应用框架 | 华为开发者联盟 (huawei.com)
66、为了使isShow参数值与半模态界面的状态同步,可以使用下列那种方式双向绑定isShow参数?
// A
@Entry
@Component
struct SheetTransitionExample {@State isShow:boolean = false@State isShow2:boolean = false@State sheetHeight:number = 300;@Builder myBuilder() {Column() {Button("change height").margin(10).fontSize(20).onClick(()=>{this.sheetHeight = 500;})}.width('100%').height('100%')}build() {Column() {Button("transition modal 1").onClick(() => {this.isShow = true}).fontSize(20).margin(10).bindSheet(this.isShow, this.myBuilder(), {height: this.sheetHeight,})}.justifyContent(FlexAlign.Center).width('100%').height('100%')}
}
// B
@Entry
@Component
struct SheetTransitionExample {@State isShow:boolean = false@State isShow2:boolean = false@State sheetHeight:number = 300;@Builder myBuilder() {Column() {Button("change height").margin(10).fontSize(20).onClick(()=>{this.sheetHeight = 500;})}.width('100%').height('100%')}build() {Column() {Button("transition modal 1").onClick(() => {this.isShow = true}).fontSize(20).margin(10).bindSheet(&&this.isShow, this.myBuilder(), {height: this.sheetHeight,})}.justifyContent(FlexAlign.Center).width('100%').height('100%')}
}
// C
@Entry
@Component
struct SheetTransitionExample {@State isShow:boolean = false@State isShow2:boolean = false@State sheetHeight:number = 300;@Builder myBuilder() {Column() {Button("change height").margin(10).fontSize(20).onClick(()=>{this.sheetHeight = 500;})}.width('100%').height('100%')}build() {Column() {Button("transition modal 1").onClick(() => {this.isShow = true}).fontSize(20).margin(10).bindSheet(@@this.isShow, this.myBuilder(), {height: this.sheetHeight,})}.justifyContent(FlexAlign.Center).width('100%').height('100%')}
}
// D
@Entry
@Component
struct SheetTransitionExample {@State isShow:boolean = false@State isShow2:boolean = false@State sheetHeight:number = 300;@Builder myBuilder() {Column() {Button("change height").margin(10).fontSize(20).onClick(()=>{this.sheetHeight = 500;})}.width('100%').height('100%')}build() {Column() {Button("transition modal 1").onClick(() => {this.isShow = true}).fontSize(20).margin(10).bindSheet($$this.isShow, this.myBuilder(), {height: this.sheetHeight,})}.justifyContent(FlexAlign.Center).width('100%').height('100%')}
}
A、A
B、B
C、C
D、D
67、张工正在使用DevEco Studio进行一个复杂项目的开发工作,项目中包含了成千上万行代码且涉及众多模块。在重构代码的过程中,他意识到需要对一个核心类名进行更改,考虑到这个类在整个项目中被广泛引用,手动修改不仅耗时且容易出错。基于DevEco Studio提供的代码编辑功能,以下哪个描述最准确地概述了张工如何高效且安全地完成对类名的更改,同时确保整个项目中所有相关引用同步更新?
A、张工只需简单选中需要更名的类名,按下Delete键删除后直接输入新名称,DevEco Studio会自动识别并更新所有引用。
B、张工需打开项目搜索功能,输入旧类名找到所有匹配项,逐一进行替换,完成更名操作。
C、张工选中 需要更名的类名,使用快捷键Shift+F6或右键菜单Refactor -> Rename,在弹出框中输入新名称并选择替换范围 后,点击“Refactor”完成更名操作,确保所有相关引用自动更新。
D、张工在代码编辑器中右键点击该类名,选择“Find Usage”,手动浏览所有引用位置并逐一修改为新名称。
68、开发者小张正在使用DevEco Studio开发一款HarmonyOS应用,他遇到了一个仅在应用实际运行环境中出现的问题,需要调试己部署在设备上的应用以定位问题根源,为了能够在应用已经运行的情况下介入调试,小张应该采用哪种调试方法
A、使用“Profile”功能,因为这同样能提供对运行时应用的监控与调试能力。
B、Attach Debugger to Process,这允许他连接到正在运行的应用进程进行调试。
C、Run without Debugging,先让应用自由运行,随后手动附加调试器。
D、使用Debug功能, 将应用重新推包运行调试
attach启动调试-ArkTS代码调试-代码调试-应用/服务调试-DevEco Studio | 华为开发者联盟 (huawei.com)
69、在组件中,经常需要使用字符串、图片等资源。HSP中的组件需要使用资源时,一般将其所用资源放在HSP包内,而非放在HSP的使用方处,以符合高内聚低耦合的原则。下面访问HSP资源错误的是
A、跨包访问HSP内资源时,推荐实现一个资源管理类,以封装对外导出的资源。将需要对外提供的资源封装为一个资源管理类:
// library/src/main/ets/ResManager.ets
export class ResManager{static getPic(): Resource{return $r('app.media.pic');}static getDesc(): Resource{return $r('app.string.shared_ desc');}
}// 对外暴露的接口,需要在入口文件index.ets中声明:
// library/index.ets
export { ResManager } from './src/main/ets/ResManager';
B、使用相对路径的方式,访问HSP中的资源。
Image("../../resources/base/media/example.png") .id('example').borderRadius('48px')
C、通过$r访问HSP中的资源。
Image($r('app.media.example')) .id('example') .borderRadius('48px')
HSP-应用程序包开发与使用-应用程序包基础知识-开发基础知识-基础入门 | 华为开发者联盟 (huawei.com)
70、可以通过下面那个接口拉起导航类的垂域面板
A、startAbilityByType
B、startAbilityByCall
C、startAbility
D、startAbilityForResult
通过startAbilityByType拉起垂类应用-通用意图跳转-应用间跳转-Stage模型开发指导-Ability Kit(程序框架服务)-应用框架 | 华为开发者联盟 (huawei.com)
71、作为应用开发者,你使用hiAppEvent订阅了崩溃事件。应用崩溃后,从onReceive接口返回的AppEventInfo中()属性可以获取崩溃调用栈信息。
A、name
B、domain
C、params
D、eventType
@ohos.hiviewdfx.hiAppEvent (应用事件打点)-ArkTS API-Performance Analysis Kit(性能分析服务)-调测调优-系统 | 华为开发者联盟 (huawei.com)
72、下面持续交付&持续部署描述哪个是正确的:
A、持续部署是将代码库中的任何更改都应该自动且快速地投入生产环境。持续部署等同于持续交付。
B、在持续交付实践中,要考虑处理故障回滚和紧急修复,以确保系统在出现问题时能够快速恢复和修复。
C、持续交付(CD,Continuous Delivery): 指的是,频繁的将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。它强调的是,不管怎么更新,软件是随时随地可以交付的。
D、持续交付可以随时随地部署到生产环境
73、某业务团队的架构师发现某个特性用的频率比较少,但是这个特性占用空间资源还是比较大的。为了减少首包下载体积,准备将该特性解耦出来,并对外提供API方便主模块调用。以下说法正确的是()
A、将该特性做成动态加载的har包,暴露接口给主模块使用。
B、将该特性做成H5模块,通过web组件加载远程资源使用。
C、将该特性做成hap包, 通过Ability组件暴露出来给主app使用。
D、将该特性做成按需加载的hsp包,暴露接口给主模块使用。
HSP-应用程序包开发与使用-应用程序包基础知识-开发基础知识-基础入门 | 华为开发者联盟 (huawei.com)
74、以下关于动态import说法正确的是()
A、动态import和静态import相比, 灵活性更好,性能更好。
B、动态import支持懒加载, 所以不能用于提升页面的加载速度。
C、动态import支持加载HSP模块、HAR模块、OHPM包、Native库
D、动态import不支持导 入SDK的API,如@ohos.*
动态import-应用程序包开发与使用-应用程序包基础知识-开发基础知识-基础入门 | 华为开发者联盟 (huawei.com)
75、如果想让outer button响应事件,hitTestBehavior该怎么配
import promptAction from '@ohos.promptAction';
// xxx. ets
@Entry
@Component
struct HitTestBehaviorExample {build() {// outer stackStack() {Button('outer button').onClick((event) => {promptAction.showToast({ message: `click事件触发-----++++2` });})// inner stackStack() {Button('inner button').onTouch((event) => {promptAction.showToast({ message: `click事件触发------1` });})}.width("100%").height("100%").hitTestBehavior(?).onTouch((event) => {console.info('stack touched type: ' + (event as TouchEvent).type)})}.width(300).height(300)}
}
A、HitTestMode. Block
B、HitTestMode.Transparent
C、HitTestMode.None
D、HitTestMode. Default
76、在使用DevEco Studio进行混合语言开发时,开发者小李通过Napi引用了Native 接口的文件(例如d.ts文件)。他想要直接从这些接口跳转到其对应的C/C++函数实现处进行代码审查。请从以下选项中选择最合适的操作步骤来帮助小李实现这一目标
A、在声明或引用 了Native接口的文件中,比如d.ts文件,小李可以直接选中接口名称,右键点击并在弹出的菜单中选择“Go To > Implementation(s)”(转到 > 实现)。还可以使用快捷键CtrI+Alt+B;如果是macOS用户,则使用Command+Option+B,直接跳转到对应的C/C++函数实现位置。
B、为了查看C/C++函数实现,小李必须先切换到DevEco Studio的C/C++开发环境视图,之后在项目的资源管理器中找到对应的C/C++源文件手动打开,才能查看函数代码
C、小李应该打开包含TypeScript接口声明的文件,然后手动在项目中搜索相应的C/C++源文件, 逐个检查以找到匹配的函数实现。
D、小李可以将鼠标光标置于想要查看实现的接口名称上,按下鼠标右键,在出现的上下文菜单中寻找并点击“Find Usages”(查找用法),在结果中筛选出C/C++的实现。
77、HarmonyOS提供了多种包结构,每种包编译后的产物都不同,下面说法错误的是
A、app包编译后的产物是.app文件。
B、hap包编译后的产物是.hap文件。
C、hsp包编译后的产物是.hsp文件。
D、har包编译后的产物是.har文件。
应用程序包概述-应用程序包基础知识-开发基础知识-基础入门 | 华为开发者联盟 (huawei.com)
78、下面持续集成描述哪项是错误的:(不确定,把所有选项列出)
A、Martin Fowler说过,”持续集成并不能消除Bug,而是让它们非常容易发现和改正”。
B、持续集成在大型项目(有几十个项目组)也能应用,即便是项目组开发进度不统一也没问题
C、持续集成就是持续编译, 二者异曲同工
D、持续集成(CI, Continuous Intergation):指频繁的, 一天多次将代码集成到主干。
79、关于延迟任务开发使用的接口是
A、使用startBackgroundRunning申请任务,使用stopBackgroundRunning取消任务
B、使用publishReminder发布一个提醒类通知,使用cancelReminder取消一个指定的提醒类通知
C、使用startWork申请任务,使用stopWork取消任务,使用getWorkStatus获取任务状态
D、使用requestSuspendDelay申 请任务,使用getRemainingDelayTime获取任务剩余时间
延迟任务-Background Tasks Kit(后台任务开发服务)-应用框架 | 华为开发者联盟 (huawei.com)
80、开发者张工想要高效地管理HarmonyOS设备中的文件,包括查看文件列表、进行文件搜索、新建及删除操作,以及在设备与PC间传输文件,而无需使用命令行工具。以下哪个选项最能准确概括张工能通过哪个工具直接在DevEco Studio界面完成上述所有操作
A、DevEco Studio的Log面板
B、DevEco Studio的Project Explorer
C、DevEco Studio的Terminal面板
D、DevEco Studio的Device File Browser
查看设备文件-应用/服务调试-DevEco Studio | 华为开发者联盟 (huawei.com)
81、开发者在编写ArkUI代码时,想要提前预览下所编写的组件的效果,下述哪个组件可以使用DevEco Studio Previewer正常预览?
// A
@Preview
@Component
struct LinkSample { @Link message: string; build() { Text(this.message) }
}
// B
@Preview
@Component
struct ConsumeSample {@Consume name: string;build() {Text(this.name)}
}
// C
import { add } from 'libnative.so';@Preview
@Component
struct NativeSample {count: number = add(1, 2);build() {Text(`current count is ${this.count}`)}
}
// D
@Preview
@Component
struct TitleSample { @StorageProp('title') title: string = 'PlaceHolder';build() { Text(this.title) }
}
A、A
B、B
C、C
D、D
82、ArkUI组件复用的作用机制是减少了什么时间从而降低了丢帧率?
A、数据挂载时间
B、组件销毁时间
C、组件节点渲染时间
D、组件节点和对象的创建时间
组件复用最佳实践-开发高性能ArkUI-性能优化-性能 | 华为开发者联盟 (huawei.com)
83、关于代码门禁理解正确的是:
A、代码门禁则是在代码合并之前就验证代码来保护主干分支的完整性。通过这种方式,可以保护主分支代码避免因合码导致的构建中断,以确保master分支代码始终是可部署的,并且不会因明显的错误而影响到你正在并行开发的同事工作。
B、门禁级检查的范围和版本级检查的范围保持一 致,尽可能多的在MR[禁阶段就拦截防护住问题,保障问题可以及时清理掉。
C、代码门禁是一项代码质量保障措施。目的是要求开发人员提交的代码必须满足一些要求才 能合入代码仓库。门禁必须强制要求包括编译通过、单元测试覆盖率达标、代码静态检查无告警、全量功能测试用例、DFX专项测试都通过。
D、标准CI构建是在代码合并后检查已提交代码的功能完整性,这种方法会导致代码合并到master后编译失败导致没有可用版本部署。通过提高滚动构建的频度就可以代替代码门禁,保障代码主干及时发现并解决问题。
84、下面关于方舟字节码格式PREF_IMM16_V8_V8描述正确的是
A、8位操作码,8位立即数,2个8位寄存器
B、16位前缀操作码,16位立即数,8位寄存器
C、16位前缀操作码,16位立即数,2个8位寄存器
D、8位操作码,8位立即数,16位id,8位寄存器
方舟字节码基本原理-学习ArkTS语言-基础入门 | 华为开发者联盟 (huawei.com)
85、以下哪些赋值语句在ArkTS中是合法。
class A {v: number = 0;
}
class B extends A {u: string = '';
}
class C {v: number = 0;
}let a1: A = new C();
let a2: A = new B();
let a3: B = new A();
let a4: C = new B();
A、a1
B、a2
C、a3
D、a4
86、Text组件不支持以下哪种使用方式?
// A
@Entry
@Component
struct styledStringDemo {scroll: Scroller = new Scroller();mutableStyledString: MutableStyledString = new MutableStyledString("test hello world", [{start: 0,length: 5,styledKey: StyledStringKey.FONT,styledValue: new TextStyle({ fontColor: Color.Pink })}]);controller1: TextController = new TextController();async onPageShow() {this.controller1.setStyledString(this.mutableStyledString)}build() {Column() {Text(undefined, { controller: this.controller1 })}.width('100%')}
}
// B
@Entry
@Component
struct TextExample {build() {Column({ space: 8 }) {Text('textShadow').fontSize(9).fontColor(0xCCCCCC).margin(15).width('90%')}}
}
// C
@Entry
@Component
struct styledStringDemo {scroll: Scroller = new Scroller();layout: TextLayoutManager = new TextLayoutManager()controller1: TextController = new TextController();async onPageShow() {this.controller1.setLayout (this.layout)}build() {Column() {Text (undefined, { controller: this.controller1 })}.width('100%')}
}
// D
@Entry
@Component
struct SpanExample {build() {Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Start, justifyContent: FlexAlign.SpaceBetween}){Text() {Span('In Line')Span(' Component')Span(' !')}}.width('100%').height(250).padding({ left: 35, right: 35, top: 35 })}
}
A、A
B、B
C、C
D、D
87、当前您在开发一个ArkTS、Stage模型的HarmonyOS工程,关于当前ArkTS工程目录结构,下列选项说法错误的是?
A、AppScope > app.json5:应用的全局配置信息。
B、oh-package.json5:描述依赖配置,如:依赖覆盖(overrides)、 依赖关系重写(overrideDependencyMap)和参数化配置(parameterFile)等。
C、build-profile.json5:应用级编译构建任务脚本。
D、entry > src > main > module.json5:Stage模型模块配置文件,主要包含HAP的配置信息、应用在具体设备上的配置信息以及应用的全局配置信息。
构建第一个ArkTS应用(Stage模型)-快速入门-基础入门 | 华为开发者联盟 (huawei.com)
88、当您开始开发一个应用/服务时,首先需要根据工程创建向导,创建一个新的工程,工具会自动生成对应的代码和资源模板。关于新建工程,下列选项说法正确的是?
A、应用包名(Bundle name)必须为以点号(.)分隔的字符串,且至少包含三段,每段中仅允许使用英文字母、数字,如“com.example.myapplication”
B、创建用于Lite Wearable设备的工程,可以选择Native C++工程模板。
C、工程文件本地存储路径(Save location)允许包含中文字符。
D、Compatible SDK是兼容的最低API Version。
创建Lite工程-工程管理-DevEco Studio | 华为开发者联盟 (huawei.com)
89、在编译构建HAP时,会从HAP模块及依赖的模块中收集资源文件,如果不同模块下的资源文件出现重名冲突时,会按照优先级进行覆盖,现在有一个HAP依赖了两个HAR,依赖配置如下所示:
// oh-package.json5
{"dependencies": {"dayjs": "^1.10.4""lottie": "^2.0.0"}
}
在资源覆盖时,以下优先级排序正确的是()
A、HAP包自身模块>lottie模块>dayjs模块>AppScope
B、AppScope>HAP包自身模块>lottie模块>dayjs模块
C、AppScope>HAP包自身模块>dayjs模块>lottie模块
D、HAP包自身模块>dayjs模块>lottie模块>AppScope
HAR-应用程序包开发与使用-应用程序包基础知识-开发基础知识-基础入门 | 华为开发者联盟 (huawei.com)
90、作为一个应用开发者,想搭建运维平台,想在应用内定时读取当前的内存信息,可以通过()接口来实现。
A、hiLog
B、hiChecker
C、hiAppEvent
D、hiDebug
使用Hidebug获取调试信息(ArkTS)-Hidebug使用指导-Performance Analysis Kit(性能分析服务)-调测调优-系统 | 华为开发者联盟 (huawei.com)
91、如果要实现Row组件内的子元素均匀排列,且第一个元素与行首对齐,最后一个元素与行尾对齐,需要使用justifyContent的哪个枚举值
A、SpaceBetween
B、End
C、SpaceEvenly
D、Start
线性布局 (Row/Column)-构建布局-开发布局-UI开发 (ArkTS声明式开发范式)-ArkUI(方舟UI框架)-应用框架 | 华为开发者联盟 (huawei.com)
92、在一个包含多个模块(如entry、feature、 service、 library等)的大型HarmonyOS应用项目中,如果某个模块feature对另外一个公共库模块library有依赖,如何通过DevEco Studio正确配置项目依赖关系
A、在feature的build-profile.json5文件的dependencies字段中配置library的依赖
B、在feature的oh-package.json5文件的dependencies字段中配置library的依赖
C、无需配置,直接在代码中编写import xxx from ‘library’
D、在library的oh-package.json5文件的dependencies字段中配置feature的依赖
93、开发者小李遇到了一个复杂的问题,该问题仅在特定的代码执行路径上出现,且难以复现。他使用的是C++进行核心算法开发,代码的逻辑密集且对性能要求极高,DevEco Studio为C/C++开发者提供的高级调试能力,以下哪个能力可以帮助小李查看代码历史执行路径,回溯到关键的变量状态
A、代码静态分析:提供静态代码检查工具,通过语法和逻辑分析帮助预防潜在错误,但不涉及运行时问题定位
B、传统调试模式:仅允许在当前断点暂停代码执行,查看调用堆栈和当前变量信息,但无法追溯历史执行状态
C、反向调试能力:允许开发者在调试过程中回退回到之前的代码行或断点,不仅查看过去的堆栈信息,还能重现历史的全局、静态和局部变量状态,帮助深入理解代码历史行为,特别是对于复杂逻辑和难以复现的bug定位至关重要
D、实时代码修改与运行时效果查看:支持在调试过程中修改代码并立即查看修改效果,适用于快速迭代,但不聚焦于问题追溯
反向调试-Native代码调试-代码调试-应用/服务调试-DevEco Studio | 华为开发者联盟 (huawei.com)