基础认证题库请移步:HarmonyOS应用开辟者基础认证题库
注:有读者反馈,题库的代码块比较多,打开文章时会卡死。所以笔者将题库拆分,以20道题为一组,题库目次如下,读者可以按需跳转。假如对您的阅读产生未便,笔者在这里向大家说声歉仄,请各位读者包涵。该题库已整理完毕,笔者不再更新。笔者连续考了三次,都过了,所以答案应该没什么太大问题。有必要题库文档的可以自取。祝各位读者好运(๑¯ω¯๑)。假如各位读者有什么内推的工作时机,也可以悄悄告诉笔者,笔者不胜受恩感激
序号目次:
- 单选题
HarmonyOS应用开辟者高级认证,Next版本发布后最新题库 - 单选题序号1
HarmonyOS应用开辟者高级认证,Next版本发布后最新题库 - 单选题序号2
HarmonyOS应用开辟者高级认证,Next版本发布后最新题库 - 单选题序号3
HarmonyOS应用开辟者高级认证,Next版本发布后最新题库 - 单选题序号4
HarmonyOS应用开辟者高级认证,Next版本发布后最新题库 - 单选题序号5
- 多选题
HarmonyOS应用开辟者高级认证,Next版本发布后最新题库 - 多选题序号1
HarmonyOS应用开辟者高级认证,Next版本发布后最新题库 - 多选题序号2
HarmonyOS应用开辟者高级认证,Next版本发布后最新题库 - 多选题序号3
- 答案纯享版
- HarmonyOS应用开辟者高级认证,Next版本发布后最新题库 - 答案纯享版
题库文档链接(自取):https://pan.baidu.com/s/153tDk4dVv_MmLEyzOqW9hQ?pwd=xkgr
注:标题是乱序,每次考试,选项的顺序都不同
多选题题库 - 序号1
1、在开辟过程中,我们可以将每个功能模块作为一个独立的Module进行开辟。关于Module,下列选项说法精确的是?
A、feature类型的Module:应用的动态特性模块,编译后生成feature类型的HAP。一个应用中可以包含一个或多个feature类型的HAP,也可以不包含。
B、Shared Library:动态共享库。HSP中的代码和资源可以独立编译,运行时在一个进程中代码也只会存在一份。
C、Static Library:静态共享库。HAR中的代码和资源跟随使用方编译,假如有多个使用方,它们的编译产物中会存在多份相同拷贝。
D、entry类型的Module:应用的主模块,包含应用的入口界面、入口图标和主功能特性,编译后生成entry类型的HAP。每一个应用分发到同一类型的装备上的应用程序包,可以包含一个或多个entry类型的HAP。
应用程序包概述-应用程序包基础知识-开辟基础知识-基础入门 | 华为开辟者联盟 (huawei.com)
2、某业务团队发现用户对他们App的某个特性使用率并不高,为了节流用户首次下载安装包的体积,考虑将该特性做成按需加载,那么保举该特性使用的工程模块类型是?
A、hap
B、app
C、hsp
D、har
3、哪些是持续部署最佳实践?
A、监控和回滚机制:实时监控部署后的应用状态,如有问题及时回滚。
B、主动化部署流程:从代码提交到部署的整个流程应尽可能主动化。
C、手工部署:持续部署可以采用手工部署的方式发布软件:
1、有一份非常细致的文档,该文档描述了实行步骤及每个步骤中易出错的地方;
2、以手工测试来确认该应用程序是否运行精确;
3、在发布时,常常会修正一些在发布过程中发现的问题。
D、灰度发布:先在小部分用户或地域进行部署,观察没问题后再全面推广。
E、开辟完成之后再向类生产环境部署:当软件被第一次部署到类生产环境(好比试运行环境)时,就是大部分开辟工作完成时,至少是开辟团队认为“该软件开辟完成了”。
F、手工配置管理:
1、直接修改生产环境上的配置来改变系统配置;
2、集群中各节点的举动有所不同;
3、靠人手工恢复环境。手动记载配置包罗使用系统、应用服务器、关系型数据库管理系统、Web服务器或其他基础设施设置。
G、环境一致性:保持开辟、测试、生产等环境的高度一致性。
4、以下代码片断哪几处违反了ArkTS语法规范。
- class Point {
- public x: number
- public y: number
- constructor(x: number, y: number) {
- this.x = x
- this.y = y
- }
- }
- let p = new Point(1.0, 1.0);
- delete p.x;
- p.z = 2.0;
- p.x = 'Hello!';
复制代码 A、let p = new Point(1.0, 1.0);
B、delete p.x;
C、p.z = 2.0;
D、p.x = 'Hello!';
5、以下napi代码有问题的是(不确定,把全部选项列出)
- // A
- static napi_value Demo(napi_env env, napi_callback_info info)
- {
- constexpr size_t arrSize = 1000;
- napi_value arrBuffer = nullptr;
- void *data = nullptr;
- napi_create_arraybuffer(env, arrSize * sizeof(int32_t), &data, &arrBuffer);
- int32_t *i32Buffer = reinterpret_cast<int32_t *>(data);
- for (int i = 0; i < arrSize; i++) {
- i32Buffer[i] = i;
- }
- return arrBuffer;
- }
复制代码- // B
- napi_ref g_ref = nullptr;
- /***** excute in main thread *****/
- static napi_value DemoInMainThread(napi_env env, napi_callback_info info)
- {
- napi_value string = nullptr;
- napi_create_string_utf8(env, "bar", NAPI_AUTO_LENGTH, &string);
- napi_create_reference(env, string, 1, &g_ref);
- return string;
- }
- /***** excute in worker thread *****/
- static napi_value DemoInWorkerThread(napi_env env, napi_callback_info info)
- {
- napi_value string = nullptr;
- napi_get_reference_value(env, g_ref, &string);
-
- napi_value object = nullptr;
- napi_create_object(env, &object);
-
- napi_set_named_property(env, object, "foo", string);
- return object;
- }
复制代码- // C
- struct CallbackContext {
- napi_env env = nullptr;
- napi_ref callbackRef = nullptr;
- int32_t retData = 0;
- };
- void callbackTest(CallbackContext *context)
- {
- uv_loop_s *loop = nullptr;
- napi_get_uv_event_loop(context->env, &loop);
- uv_work_t *work = new uv_work_t;
- context->retData = 1;
- work->data = (void *)context;
- uv_queue_work(
- loop, work, [](uv_work_t *work) {},
- // using callback function back to JS thread
- [](uv_work_t *work, int status)
- {
- CallbackContext *context = (CallbackContext *)work->data;
- napi_value callback = nullptr;
- napi_get_reference_value(context->env, context->callbackRef, &callback);
- napi_value retArg;
- napi_create_int32(context->env, context->retData, &retArg);
- napi_value ret;
- napi_call_function(context->env, nullptr, callback, 1, &retArg, &ret);
- napi_delete_reference(context->env, context->callbackRef);
- if (work != nullptr) {
- delete work;
- }
- delete context;
- }
- );
- }
复制代码- // D
- static napi_value Demo(napi_env env, napi_callback_info info)
- {
- size_t argc = 1;
- napi_value args[1] = {nullptr};
- napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
- napi_value sizeObj = nullptr;
-
- napi_handle_scope scope = nullptr;
- napi_open_handle_scope(env, &scope);
- napi_call_function(env, nullptr, args[0], 0, nullptr, &sizeObj);
- napi_close_handle_scope(env, scope);
-
- int64_t width = 0;
- napi_value result = nullptr;
- napi_get_element(env, sizeObj, 0, &result);
- napi_get_value_int64(env, result, &width);
- return result;
- }
复制代码 A、A
B、B
C、C
D、D
6、下面关于混淆的描述精确的是
A、代码混淆已经被集成了到SDK中,可以在DevEco Studio中方便地使用。
B、针对工程源码的混淆可以低落工程被破解攻击的风险,紧缩函数名、类名和属性名,减小应用的大小。
C、API10及以上版本的Stage模型、编译模式为release时,默认开启代码混淆功能;默认的混淆功能仅会混淆函数参数和局部变量的名称。
D、混淆支持ArkTS/TS/JS文件的混淆
代码混淆-ArkTS(方舟编程语言)-应用框架 | 华为开辟者联盟 (huawei.com)
代码混淆-加固构建-编译构建-DevEco Studio | 华为开辟者联盟 (huawei.com)
7、下面关于方舟字节码指令含义说明精确的是(不确定,把全部选项列出)
A、假设寄存器v0存放了对象A,累加器(acc)存放了对象B,那么实行指令"Ida v0"后,v0存放对象A,acc存放对象A
B、 假设寄存器v0存放了对象A,累加器(acc)存放了对象B,那么实行指令"Ida v0"后,v0存放对象B,acc存放对象B
C、假设寄存器v0存放了对象A,寄存器v1存放了对象B,那么实行指令"mov v0,v1"后,v0存放对象A,v1存放对象A
D、假设寄存器v0存放了对象A,寄存器v1存放了对象B,那么实行指令"mov v0,v1"后,v0存放对象B,v1存放对象B
8、下面关于ArkTS中import用法,精确的是
A、import { export1 as alias1 } from "ets file name";
B、import defaultExport from "ets file name"
C、import * as name from "ets file name"
D、import { export1 } from "ets file name";
9、以下关于ArkTS线程实例间传输实现方式描述精确的是(不确定,把全部选项列出)
- import { taskpool, worker } from '@kit.ArkTS';
- @Sendable
- class A {}
- let a: A = new A();
- @Concurrent
- function foo(a: A) {}
- let task: taskpool.Task = new taskpool.Task(foo, a)
- let w = new worker.ThreadWorker("entry/ets/workers/Worker.ets")
- taskpool.execute(task).then(() => {});
- w.postMessageWithSharedSendable(a);
- task.setCloneList([a]);
- taskpool.execute(task).then(() => {});
- w.postMessage(a);
复制代码 A、task.setCloneList([a]); taskpool.execute(task).then() => {});,TaskPool 共享传输实现方式
B、taskpool.execute(task).then(() => {});,TaskPool 共享传输实现方式
C、w.postMessage(a);,Worker 共享传输实现方式
D、w.postMessageWithSharedSendable(a);,Worker 共享传输实现方式
10、以下代码片断哪几个函数违反了ArkTS语法规范。
- function foo1(value1?: number, value2: number) {
-
- if(value1 == undefined){
-
- return value2;
-
- }
-
- return value1 + value2;
-
- }
- function foo2(value1: number, value2?: number) {
-
- if (value2 == undefined) {
-
- return value1;
-
- }
-
- return value1 + value2;
-
- }
- function foo3(value: number, ...arrary: number[]) {
-
- return value;
-
- }
- function foo4( ...arrary: number[], value: number) {
-
- return value;
-
- }
复制代码 A、foo1
B、foo2
C、foo3
D、foo4
11、在ArkTS中,以下哪些属性的声明是精确的。
- class C {
- value1: number = 0;
- value2?: number = null;
- value3: number | undefined = undefined;
- value4?: number;
-
- }
复制代码 A、value1
B、value2
C、value3
D、value4
12、如下ABC 3处手势,偶然机实行的是哪几处?(不确定,把全部选项列出)
- @Entry
- @Component
- struct ListTest {
- scroller: Scroller = new Scroller()
- scroller2: Scroller = new Scroller()
- scroller3: Scroller = new Scroller()
- private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
- private childRecognizer: GestureRecognizer = new GestureRecognizer()
- private currentRecognizer: GestureRecognizer = new GestureRecognizer()
- private lastOffset: number = 0
- build() {
- Stack({ alignContent: Alignment.TopStart }) {
- Scroll(this.scroller) {
- Column() {
- Text("Scroll Area")
- .width('90%')
- .height(150)
- .backgroundColor(0xFFFFFF)
- .borderRadius(15)
- .fontSize(16)
- .textAlign(TextAlign.Center)
- .margin({ top: 10 })
- List({ space: 20, initialIndex: 0 }) {
- ForEach(this.arr, (item: number) => {
- ListItem() {
- Text('' + item)
- .width('100%')
- .height(100)
- .fontSize(16)
- .backgroundColor(Color.Blue)
- .textAlign(TextAlign.Center)
- .borderRadius(10)
- }
- },
- (item: string) => item
- )
- }
- .listDirection(Axis.Vertical) // 排列方向
- .scrollBar(BarState.Off)
- .friction(0.6)
- .divider({
- strokeWidth: 2,
- color: 0xFFFFF,
- startMargin: 20,
- endMargin: 20
- }) //每行之间的分界线
- .edgeEffect(EdgeEffect.None) // 边缘效果设置为Spring
- .height(1000)
- .width('90%')
- .id("inner")
- }.width('100%')
- }
- .id("outer")
- .height(600)
- .scrollable(ScrollDirection.Vertical) // 滚动方向纵向
- .scrollBar(BarState.On) // 滚动条常驻显示
- .scrollBarColor(Color.Gray) // 滚动条颜色
- .scrollBarWidth(10) // 滚动条宽度
- .edgeEffect(EdgeEffect.None)
- .onScroll((xOffset: number, yOffset: number) => {
- console.info(xOffset + ' ' + yOffset)
- })
- .onScrollEdge((side: Edge) => {
- console.info('To the edge')
- })
- .onScrollStop(() => {
- console.info('Scroll Stop')
- })
- // A
- /*.gesture(
- TapGesture({ count: 2 })
- .onAction((event: GestureEvent) => {
- if (event) {
- this.value = JSON.stringify(event.fingerList[0])
- }
- })
- )*/
- // B
- /*.gesture(
- PanGesture({PanDirection.Vertical})
- .onActionUpdate((event: GestureEvent)=>{
- console.log("zcb onActionUpdate event offsetY " + event.offsetY + "this.lastOffset " + this.lastOffset)
- })
- )*/
- // C
- /*.parallelGesture(
- PanGesture({PanDirection.Vertical})
- .onActionUpdate((event: GestureEvent)=>{
- console.log("zcb onActionUpdate event offsetY " + event.offsetY + "this.lastOffset " + this.lastOffset)
- })
- )*/
- }.width('100%').height('100%').backgroundColor(0xDCDCDC)
- }
- }
复制代码 A、NA
B、A
C、B
D、C
13、以下哪些实现方式可实现文本字号20的效果
- // A
- @Entry
- @Component
- struct Index {
- build() {
- Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Start, justifyContent: FlexAlign.SpaceBetween }) {
- Text('This is the text with the height adaptive policy set')
- .width('80%')
- .height(90)
- .minFontSize(20)
- }.width('100%').height(250).padding({ left: 35, right: 35, top: 35 })
- }
- }
复制代码- // B
- @Entry
- @Component
- struct SpanExample {
- build() {
- Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Start, justifyContent: FlexAlign.SpaceBetween }) {
- Text() {
- Span('span letter spacing')
- .letterSpacing(3)
- .fontSize(20)
- }.fontSize(30)
- }.width('100%').height(250).padding({ left: 35, right: 35, top: 35 })
- }
- }
复制代码- // C
- @Entry
- @Component
- struct Index {
- build() {
- Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Start, justifyContent: FlexAlign.SpaceBetween }) {
- //文本水平方向对齐方式设置
- //单行文本
- Text('TextAlign set to Center.')
- .textAlign(TextAlign.Center)
- .fontSize(20)
- .border({ width: 1 })
- .padding(10)
- .width('100%')
- }.height(600).width(350).padding({ left: 35, right: 35, top: 35 })
- }
- }
复制代码- // D
- import { LengthMetrics, LengthUnit } from '@ohos.arkui.node'
- @Entry
- @Component
- struct Index {
- fontStyleAttr: TextStyle = new TextStyle({fontSize:LengthMetrics.vp(20)});
- mutableStyledString: MutableStyledString = new MutableStyledString("hello", [{
- start: 0,
- length: 5,
- styledKey: StyledStringKey.FONT,
- styledValue: this.fontStyleAttr
- }]);
- controller: TextController = new TextController();
- async onPageShow() {
- this.controller.setStyledString(this.mutableStyledString)
- }
- build() {
- Column() {
- //显示属性字符串
- Text(undefined, { controller: this.controller })
- }.width('100%')
- }
- }
复制代码 A、A
B、B
C、C
D、D
14、依次点击A、B、C、D四个按钮,其中不会触发UI刷新的是:
- @Entry
- @Component
- struct Index {
- @State count: number = 0;
- @State @Watch('onValueChange') value: number = 50;
- onValueChange() {
- this.count = this.value;
- }
- build() {
- Column() {
- Text(`${this.count}`)
- Button("A")
- .onClick(() => {
- this.count = 0;
- })
- Button("B")
- .onClick(() => {
- for (let i = 0; i < 1000; i++) {
- this.count = i;
- }
- for (let i = 1000; i > 0; i--){
- this.count = i;
- }
- this.count--;
- })
- Button("C")
- .onClick(() => {
- this.value = 100;
- })
- Button("D" )
- .onClick(() => {
- setInterval(()=>{
- this.count++;
- }, 1000)
- })
- }
- }
- }
复制代码 A、A
B、B
C、C
D、D
15、如何实现雷同下图布局

- // A
- @Entry
- @Component
- struct Demo {
- //忽略其他辅助代码
- dataSource: ItemDataSource = new ItemDataSource(100)
- itemHeightArray: number[] = []
- colors: number[] = [0xFFC0CB, 0xDA70D6, 0x6B8E23, 0x6A5ACD, 0x00FFFF, 0x00FF7F]
- scroller: Scroller = new Scroller()
- aboutToAppear() {
- this.getItemSizeArray()
- }
- build() {
- Scroll() {
- Column() {
- Grid() {
- GridItem() {
- Text('GoodsTypeList')
- }
- .backgroundColor(this.colors[0])
- GridItem() {
- Text('AppletService')
- }
- .backgroundColor(this.colors[1])
- GridItem() {
- Text('ReloadData')
- }
- .backgroundColor(this.colors[2])
- }
- .rowsGap(10)
- .columnsTemplate('1fr')
- .rowsTemplate('1fr 1fr 1fr')
- .width('100%')
- .height(100)
- .margin({
- top: 10,
- left: 5,
- bottom: 10,
- right: 5
- })
- Grid() {
- LazyForEach(this.datasource, (item: number) => {
- GridItem() {
- //使用可复用自定义组件
- ReusableItem({ item: item })
- }
- .width('100%')
- .height(this.itemHeightArray[item % 100])
- .backgroundColor(this.colors[item % 5])
- }, (item: number) => '' + item + this.itemHeightArray[item % 100])
- }
- .columnsTemplate("1fr 1fr")
- .columnsGap(10)
- .rowsGap(5)
- .width('100%')
- .nestedScroll({
- scrollForward: NestedScrollMode.PARENT_FIRST,
- scrollBackward: NestedScrollMode.SELF_FIRST
- })
- }
- }
- .scrollBar(BarState.Off)
- .edgeEffect(EdgeEffect.None)
- }
- }
复制代码- // B
- @Entry
- @Component
- struct Demo {
- //忽略其他辅助代码
- dataSource: ItemDataSource = new ItemDataSource(100)
- itemHeightArray: number[] = []
- colors: number[] = [0xFFC0CB, 0xDA70D6, 0x6B8E23, 0x6A5ACD, 0x00FFFF, 0x00FF7F]
- scroller: Scroller = new Scroller()
- @State sections: WaterFlowSections = new WaterFlowSections()
- sectionMargin: Margin = { top: 10, left: 5, bottom: 10, right: 5 }
- oneColumnSection: SectionOptions = {
- itemsCount: 3,
- crossCount: 1,
- rowsGap: 10,
- margin: this.sectionMargin,
- onGetItemMainSizeByIndex: (index: number) => {
- return this.itemHeightArray[index % 100]
- }
- }
- lastSection: SectionOptions = {
- itemsCount: 97,
- crossCount: 2,
- margin: this.sectionMargin,
- onGetItemMainSizeByIndex: (index: number) => {
- return this.itemHeightArray[index % 100]
- }
- }
- aboutToAppear() {
- this.setItemSizeArray()
- // 初始化瀑布流分组信息
- let sectionOptions: SectionOptions[] = []
- sectionOptions.push(this.oneColumnSection)
- sectionOptions.push(this.lastSection)
- this.sections.splice(0, 0, sectionOptions)
- }
- build() {
- WaterFlow({ scroller: this.scroller, sections: this.sections }) {
- LazyForEach(this.dataSource, (item: number) => {
- FlowItem() {
- ReusableFlowItem({ item: item })
- }
- .width('100%')
- .backgroundColor(this.colors[item % 5])
- }, (item: string) => item)
- }
- .columnsGap(10)
- .rowsGap(5)
- .backgroundColor(0xFAEEE0)
- .width('100%')
- .height('100%')
- }
- }
复制代码- // C
- @Entry
- @Component
- struct Demo {
- //忽略其他辅助代码
- dataSource: ItemDataSource = new ItemDataSource(100)
- itemHeightArray: number[] = []
- colors: number[] = [0xFFC0CB, 0xDA70D6, 0x6B8E23, 0x6A5ACD, 0x00FFFF, 0x00FF7F]
- scroller: Scroller = new Scroller()
- aboutToAppear() {
- this.getItemSizeArray()
- }
- build() {
- Column() {
- List({ scroller: this.scroller, space: 10 }) {
- ListItem(){
- Grid() {
- GridItem() {
- Text('GoodsTypeList')
- }.backgroundColor(this.colors[0])
- GridItem() {
- Text('AppletService')
- }.backgroundColor(this.colors[1])
- GridItem() {
- Text('ReloadData')
- }.backgroundColor(this.colors[2])
- }
- .rowsGap(10)
- .columnsTemplate('1fr')
- .rowsTemplate('1fr 1fr 1fr')
- .width('100%')
- .height(100)
- }
- ListItem() {
- WaterFlow(){
- LazyForEach(this.datasource, (item: number, index: number) => {
- FlowItem() {
- //使用可复用自定义组件
- ReusableItem({ item: item + index })
- }
- .width('100%')
- .height(this.itemHeightArray[item % 100])
- .backgroundColor(this.colors[item % 5])
- }, (item: number) => '' + item + this.itemHeightArray[item % 100])
- }
- .id('Waterflow')
- .columnsTemplate("1fr 1fr")
- .columnsGap(10)
- .rowsGap(5)
- .width('100%')
- .height('100%')
- .nestedScroll({
- scrollForward: NestedScrollMode.PARENT_FIRST,
- scrollBackward: NestedScrollMode.SELF_FIRST
- })
- }
- }
- .scrollBar(BarState.Off)
- .edgeEffect(EdgeEffect.None)
- }
- .width('100%')
- .padding({ left: 10, right: 10 })
- }
- }
复制代码 A、A === Grid
B、B === WaterFlow
C、C === List
16、Code Linter针对ArkTS/TS代码进行最佳实践/编程规范方面的查抄,最佳实践/编程规范方面的查抄规则可以配置,针对codelinter的配 置项一下哪些说法是精确的
A、rules:可以基于ruleSet配置的规则集,新增额外规则项,但是无法修改ruleSet中规则默认配置
B、files:配置待查抄的文件名单,如未指定目次,规则实用于全部文件,比方: [“**/*.ets”,“**/*.js”,“**/*.ts”]。
C、ignore:配置无需查抄的文件目次,其指定的目次或文件需使用相对路径格式,相对于code-linter.json5地点工程根目次,比方:build/**/*。
D、ruleSet:配置查抄使用的规则集,规则集支持一次导入多条规则。
代码Code Linter查抄-代码查抄-代码编辑-DevEco Studio | 华为开辟者联盟 (huawei.com)
17、一个应用通常会包含多种功能,将不同的功能特性按模块来分别和管理是一种精良的计划方式。在开辟过程中,我们可以将每个功能模块作为一个独立的Module进行开辟,下面关于Module的说法精确的是
A、Library类型的Module,用于实现代码和资源的共享,有两种类型,分别为Static Library和Shared Library两种类型。
B、entry类型的Module,是应用的主模块,一个应用只能包含唯一一个entry类型的HAP。
C、Ability类型的Module,用于实现应用的功能和特性,有两种类型,分别为entry和feature。
D、feature类型的Module,应用的动态特性模块,一个应用中可以包含一个或多个feature类型的模块,也可以不包
应用程序包概述-应用程序包基础知识-开辟基础知识-基础入门 | 华为开辟者联盟 (huawei.com)
18、在大型软件工程中,一般会伴随着多团队开辟,各团队开辟本身的业务模块,最后再由集成交付团队集成到一起,下面哪些是大型应用模块化开辟最佳实践
A、避免用户首次下载应用耗时过长,及过多占用用户空间,不常勤奋能做成按需加载。
B、若多个模块依靠了不同版本的HAR,使用OHPM的overrides机制配置指定使用哪个版本的HAR,以淘汰包大小。
C、使用路由表进行模块间解耦。
D、一次上架多端部署。
19、通过如下openLink的接口启动,如下哪些配置的UIAbility不可能被拉起(不确定,把全部选项列出)
- import { hilog } from '@kit.PerformanceAnalysisKit';
- import { UIAbility, common, OpenLinkOptions } from '@kit.AbilityKit';
- import { BusinessError } from '@kit.BasicServicesKit';
- export default class MyAbility extends UIAbility {
- onForeground() {
- let link: string = "https://www.example.com"
- let openLinkOptions: OpenLinkOptions = {
- applinkingOnly: true,
- parameters: {demo_key: "demo_value"}
- };
- try {
- this.context.openLink(
- link,
- openLinkOptions,
- (err, result) => {
- hilog.error(DOMAIN, TAG, 'openLink callback error.code:' + JSON.stringify(err));
- }
- ).then(()=>{
- hilog.info(DOMAIN, TAG, 'open link success.');
- }).catch((err: BusinessError)=>{
- hilog.error(DOMAIN, TAG, 'open link failed, errCode ' + JSON.stringify(err.code));
- })
- }
- catch (e) {
- hilog.error(DOMAIN, TAG, 'exception occured, errCode ' + JSON.stringify(e.code));
- }
- }
- }
复制代码- // A
- {
- "name": "TargetAbility",
- "skills": [
- {
- "actions": [
- "ohos.want.action.vieData",
- ],
- "entities": [
- "entity.system.browsable",
- ],
- "uris": [
- {
- "scheme": "http",
- "host": "www.test.com",
- "port": "8080",
- "path": "path"
- }
- ]
- }
- ]
- }
复制代码- // B
- {
- "name": "TargetAbility",
- "skills": [
- {
- "actions": [
- "ohos.want.action.viewData",
- ],
- "entities": [
- "entity.system.browsable",
- ],
- "uris": [
- {
- "scheme": "https",
- "host": "www.test.com",
- "port": "8080",
- "path": "path",
- "autoVerify": ture
- }
- ]
- }
- ]
- }
复制代码- // C
- {
- "name": "TargetAbility",
- "skills": [
- {
- "actions": [
- "ohos.want.action.sendData",
- ],
- "entities": [
- "entity.system.browsable",
- ],
- "uris": [
- {
- "scheme": "http",
- "host": "www.test.com",
- "port": "8080",
- "path": "path",
- "autoVerify": ture
- }
- ]
- }
- ]
- }
复制代码- // D
- {
- "name": "TargetAbility",
- "skills": [
- {
- "actions": [
- "ohos.want.action.SendData",
- ],
- "entities": [
- "entity.system.browsable",
- ],
- "uris": [
- {
- "scheme": "https",
- "host": "www.test.com",
- "port": "8080",
- "path": "path",
- "autoVerify": ture
- }
- ]
- }
- ]
- }
复制代码 A、A
B、B
C、C
D、D
20、某个应用的启动框架配置文件具体信息如下,以下说法精确的是:
- {
-
- "startupTasks": [
-
- {
- "name": "StartupTask_001",
- "srcEntry": "./ets/startup/StartupTask_001.ets",
- "dependencies": [
- "StartupTask_002",
- "StartupTask_003"
- ],
- "runOnThread": "taskpool",
- "waitOnMainThread": false
- },
-
- {
- "name": "StartupTask_002",
- "srcEntry": "./ets/startup/StartupTask_002.ets",
- "dependencies": [
- "StartupTask_004"
- ],
- "runOnThread": "taskpool",
- "waitOnMainThread": false
- },
- {
- "name": "StartupTask_003",
- "srcEntry": "./ets/startup/StartupTask_003.ets",
- "runOnThread": "taskpool",
- "waitOnMainThread": false
- },
-
- {
- "name": "StartupTask_004",
- "srcEntry": "./ets/startup/StartupTask_004.ets",
- "runOnThread": "taskpool",
- "waitOnMainThread": false
- },
-
- {
- "name": "StartupTask_005",
- "srcEntry": "./ets/startup/StartupTask_005.ets",
- "runOnThread": "mainThread",
- "waitOnMainThread": true
- },
-
- {
- "name": "StartupTask_006",
- "srcEntry": "./ets/startup/StartupTask_006.ets",
- "runOnThread": "mainThread",
- "waitOnMainThread": false,
- ”excludeFromAutoStart": true
- }
- ],
-
- "configEntry": "./ets/startup/StartupConfig.ets"
-
- }
复制代码 A、StartupTask_005会在主线程实行
B、StartupTask_006会在AbilityStage的onCreate前初始化完成
C、StartupTask_001会在StartupTask_004之后实行;
D、StartupTask_003会在StartupTask_004之后实行
应用启动框架AppStartup-Stage模型应用组件-Stage模型开辟指导-Ability Kit(程序框架服务)-应用框架 | 华为开辟者联盟 (huawei.com)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |