关于openharmony:源码开放开发者手机-buff-叠满

开发者手机开源代码编译领导编译环境倡议: ubuntu20.04Linux零碎内存:最低16GPyhon 3.8装置必要工具:sudo apt-get update sudo apt-get install binutils git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3-pip ruby libtinfo-dev libtinfo5 sudo apt-get install openjdk-17-jre-headless default-jdk libssl-dev genext2fs u-boot-tools mtd-utils scons gcc-arm-none-eabi gcc-arm-linux-gnueabi 编译环境参考附录2:OpenHarmony编译环境搭建 1、下载代码下载命令: repo init -u https://gitee.com/develop-phone-open-source/manifest -b OpenHarmony-4.0-Release repo sync -c repo forall -c 'git lfs pull' 2、补全原厂闭源文件原厂闭源文件只能从原厂license客户处获取,须要开发者自行补齐这些文件,否则会编译失败零碎运行不起来。 参考下方附录1:原厂闭源文件列表,将闭源文件搁置到对应的目录。 ...

March 4, 2024 · 1 min · jiezi

关于openharmony:OpenHarmony定义组件重用样式Styles装饰器

如果每个组件的款式都须要独自设置,在开发过程中会呈现大量代码在进行反复款式设置,尽管能够复制粘贴,但为了代码简洁性和后续不便保护,咱们推出了能够提炼公共款式进行复用的装璜器 @Styles。 @Styles 装璜器能够将多条款式设置提炼成一个办法,间接在组件申明的地位调用。通过 @Styles 装璜器能够疾速定义并复用自定义款式。用于疾速定义并复用自定义款式。 阐明: 从 API version 9 开始,该装璜器反对在 ArkTS 卡片中应用。 装璜器应用阐明● 以后 @Styles 仅反对通用属性和通用事件。 ● @Styles 办法不反对参数,反例如下。 // 反例: @Styles不反对参数@Styles function globalFancy (value: number) { .width(value)}● @Styles 能够定义在组件内或全局,在全局定义时需在办法名后面增加 function 关键字,组件内定义时则不须要增加 function 关键字。 // 全局@Styles function functionName() { ... }// 在组件内@Componentstruct FancyUse { @Styles fancy() { .height(100) }}// 全局@Styles function functionName() { ... } // 在组件内@Componentstruct FancyUse { @Styles fancy() { .height(100) }}● 定义在组件内的 @Styles 能够通过 this 拜访组件的常量和状态变量,并能够在 @Styles 里通过事件来扭转状态变量的值,示例如下: ...

September 28, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony装饰指定自定义组件BuilderParam装饰器

当开发者创立了自定义组件,并想对该组件增加特定性能时,例如在自定义组件中增加一个点击跳转操作。若间接在组件内嵌入事件办法,将会导致所有引入该自定义组件的中央均减少了该性能。为解决此问题,ArkUI 引入了 @BuilderParam 装璜器,@BuilderParam 用来装璜指向 @Builder 办法的变量,开发者可在初始化自定义组件时对此属性进行赋值,为自定义组件减少特定的性能。该装璜器用于申明任意 UI 形容的一个元素,相似 slot 占位符。 阐明: 从 API version 9 开始,该装璜器反对在 ArkTS 卡片中应用。 装璜器应用阐明初始化 @BuilderParam 装璜的办法@BuildParam 装璜的办法只能被自定义构建函数(@Builder 装璜的办法)初始化。 ● 应用所属自定义组件的自定义构建函数或者全局的自定义构建函数,在本地初始化 @BuilderParam。 @Builder function GlobalBuilder0() {}@Componentstruct Child { @Builder doNothingBuilder() {}; @BuilderParam aBuilder0: () => void = this.doNothingBuilder; @BuilderParam aBuilder1: () => void = GlobalBuilder0; build(){}}● 用父组件自定义构建函数初始化子组件 @BuildParam 装璜的办法。 @Componentstruct Child { @Builder componentBuilder() { Text(`Parent builder `) } @BuilderParam aBuilder0: () => void = this.componentBuilder; build() { Column() { this.aBuilder0() } }}@Entry@Componentstruct Parent { @Builder componentBuilder() { Text(`Parent builder `) } build() { Column() { Child({ aBuilder0: this.componentBuilder }) } }}● 需注意 this 指向正确。 ...

September 27, 2023 · 2 min · jiezi

关于openharmony:OpenHarmony自定义构建函数Builder装饰器

后面章节介绍了如何创立一个自定义组件。该自定义组件外部 UI 构造固定,仅与应用方进行数据传递。ArkUI 还提供了一种更轻量的 UI 元素复用机制 @Builder,@Builder 所装璜的函数遵循 build()函数语法规定,开发者能够将重复使用的 UI 元素形象成一个办法,在 build 办法里调用。 为了简化语言,咱们将 @Builder 装璜的函数也称为“自定义构建函数”。 阐明: 从 API version 9 开始,该装璜器反对在 ArkTS 卡片中应用。 装璜器应用阐明自定义组件内自定义构建函数定义的语法:@Builder MyBuilderFunction() { ... } 应用办法:this.MyBuilderFunction() { ... } ● 容许在自定义组件内定义一个或多个自定义构建函数,该函数被认为是该组件的公有、非凡类型的成员函数。 ● 自定义构建函数能够在所属组件的 build 办法和其余自定义构建函数中调用,但不容许在组件外调用。 ● 在自定义函数体中,this 指代以后所属组件,组件的状态变量能够在自定义构建函数内拜访。倡议通过 this 拜访自定义组件的状态变量而不是参数传递。 全局自定义构建函数定义的语法: @Builder function MyGlobalBuilderFunction() { ... }应用办法:MyGlobalBuilderFunction() ● 全局的自定义构建函数能够被整个利用获取,不容许应用 this 和 bind 办法。 ● 如果不波及组件状态变动,倡议应用全局的自定义构建办法。 参数传递规定[自定义构建函数的参数传递有按值传递和按援用传递两种,均需恪守以下规定: ● 参数的类型必须与参数申明的类型统一,不容许 undefined、null 和返回 undefined、null 的表达式。 ● 在 @Builder 润饰的函数外部,不容许扭转参数值。 ...

September 26, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony自定义组件介绍

一、创立自定义组件在 ArkUI 中,UI 显示的内容均为组件,由框架间接提供的称为零碎组件,由开发者定义的称为自定义组件。在进行 UI 界面开发时,通常不是简略的将零碎组件进行组合应用,而是须要思考代码可复用性、业务逻辑与 UI 拆散,后续版本演进等因素。因而,将 UI 和局部业务逻辑封装成自定义组件是不可或缺的能力。 自定义组件具备以下特点:● 可组合:容许开发者组合应用零碎组件、及其属性和办法。● 可重用:自定义组件能够被其余组件重用,并作为不同的实例在不同的父组件或容器中应用。● 数据驱动 UI 更新:通过状态变量的扭转,来驱动 UI 的刷新。 以下示例展现了自定义组件的根本用法。 @Componentstruct HelloComponent { @State message: string = 'Hello, World!'; build() { // HelloComponent自定义组件组合零碎组件Row和Text Row() { Text(this.message) .onClick(() => { // 状态变量message的扭转驱动UI刷新,UI从'Hello, World!'刷新为'Hello, ArkUI!' this.message = 'Hello, ArkUI!'; }) } }}HelloComponent 能够在其余自定义组件中的 build()函数中屡次创立,实现自定义组件的重用。 class HelloComponentParam { message: string = ""}@Entry@Componentstruct ParentComponent { param: HelloComponentParam = { message: 'Hello, World!' } build() { Column() { Text('ArkUI message') HelloComponent(param); Divider() HelloComponent(param); } }}要齐全了解下面的示例,须要理解自定义组件的以下概念定义,本文将在前面的大节中介绍:● 自定义组件的根本构造● 成员函数/变量● 自定义组件的参数规定● build()函数● 自定义组件通用款式 ...

September 25, 2023 · 3 min · jiezi

关于openharmony:OpenHarmony应用开发ArkUI组件集合

介绍本示例为 ArkUI 中组件、通用、动画、全局办法的汇合。 成果预览 应用阐明:1.点击组件、通用、动画、全局办法四个按钮或左右滑动切换不同视图。2.点击二级导航(如通用属性、通用事件等),若存在三级导航则开展三级导航(如 Border 边框、点击事件等);若不存在三级导航,则跳转至详情页面。3.  若存在三级导航(如 Border 边框、点击事件等),点击跳转至详情页面。 工程目录entry/src/main/ets/|---component| |---AttributeModificationTool.ets // 组件| |---IntroductionTitle.ets // 首页介绍题目组件| |---TabContentNavigation.ets // 切换组件| |---TitleBar.ets // 详情页面题目组件|---Application| |---MyAbilityStage.ts |---data| |---CollectionCategory.ts // 数据分类| |---ResourceDataHandle.ts // 源数据|---MainAbility| |---MainAbility.ts |---model| |---CategoricalDataType.ts // 数据类型|---util| |---Logger.ts // 打印| |---ShowToast.ets // 弹窗 |---pages| |---Index.ets // 首页| |---animations // 动画| | |---AnimationData.ets| | |---interpolationCalculationSample | | | |---InterpolationCalculationSample.ets // 插值计算| | |---pageTransitionSample| | | |---PageTransitionSample.ets // 页面间转场| | | |---PageTransitionSampleTo.ets | | |---shareElementTransitionSample| | | |---ShareElementTransitionSample.ets // 共享元素转场| | | |---ShareElementTransitionSampleTo.ets| | |---floatingSample| | | |---FloatingWindowSample.ets // 悬浮窗| | |---folderSample| | | |---FolderSample.ets // 文件夹开展| | |---systemIcon| | | |---SystemIcon.ets // 零碎图标| | |---gallerySample| | | |---GalleryCardSample.ets // 图库卡片开展| | |---multiplexSample| | | |---MultiplexSample.ets // 多任务| | |---shopSample| | | |---ShopCardSample.ets // 商店卡片开展| | |---layoutAnimationSample| | | |---LayoutAnimationSample.ets // 布局动效| | |---sideBarTransitionSample| | | |---SideBarTransitionSample.ets // 侧边栏动效| | |---sizeTransitionSample| | | |---SizeTransitionSample.ets // 尺寸变换动效| |---components // 详情页面| | |---ComponentData.ets| | |---auxiliary // 辅助| | | |---alphabetIndexerSample| | | | |---AlphabetIndexerSample.ets // 字母索引条| | | |---badgeSample| | | | |---BadgeSample.ets // 标记| | | |---panelSample| | | | |---PanelSample.ets // 弹出面板| | | |---refreshSample| | | | |---RefreshSample.ets // 下拉刷新| | | |---scrollbarSample | | | | |---ScrollBarSample.ets // 滚动条| | |---blankAndDivider // 空白与分分隔| | | |---dividerSample| | | | |---ChangePanel.ets| | | | |---DividerSample.ets| | |---buttonAndSelection // 按钮与抉择| | | |---buttonSample| | | | |---ButtonSample.ets // 按钮| | | |---checkboxSample| | | | |---CheckboxSample.ets // 勾选框| | | |---counterSample| | | | |---CounterSample.ets // 计数器| | | |---datePickerSample| | | | |---DatePickerSample.ets // 日期选择器| | | |---radioSample| | | | |---RadioSample.ets // 单选按钮| | | |---ratingSample| | | | |---RatingSample.ets // 评分条| | | |---selectSample| | | | |---SelectSample.ets // 抉择菜单| | | |---sliderSample| | | | |---ChangePanel.ets| | | | |---SliderSample.ets // 滑动条| | | |---textPickerSample | | | | |---TextPickerSample.ets // 文本选择器| | | |---timePickerSample| | | | |---TimePickerSample.ets // 工夫选择器| | | |---toggleSample| | | | |---ToggleSample.ets // 切换按钮| | |---canvasAndGraphicDrawing // 画布与图形绘制| | | |---canvasSample| | | | |---CanvasSample.ets // 画布| | | |---circleSample| | | | |---ChangePanel.ets| | | | |---CircleSample.ets // 圆形| | | |---ellipseSample| | | | |---ChangePanel.ets| | | | |---EllipseSample.ets // 椭圆| | | |---lineSample| | | | |---ChangePanel.ets| | | | |---LineSample.ets // 直线| | | |---pathSample| | | | |---ChangePanel.ets| | | | |---PathSample.ets // 门路| | | |---polygonSample| | | | |---ChangePanel.ets| | | | |---PolygonSample.ets // 多边形| | | |---polylineSample| | | | |---ChangePanel.ets| | | | |---PolylineSample.ets // 折线| | | |---rectSample| | | | |---ChangePanel.ets| | | | |---RectSample.ets // 矩形| | | |---shapeSample| | | | |---ShapeSample.ets // 指定图形| | |---imageVideoAndMedia| | | |---imageAnimatorSample| | | | |---ImageAnimatorSample.ets // 逐帧播放图片| | | |---imageSample| | | | |---ImageControlPanel.ets| | | | |---ImageSample.ets // 图片| | | |---pluginComponentSample| | | | |---PluginComponentSample.ets // 嵌入式显示| | | |---videoSample| | | | |---VideoControlPanel.ets| | | | |---VideoSample.ets // 视频| | | |---xcomponentSample| | | | |---XComponentSample.ets // 绘制组件| | |---canvas| | | |---attributesSample| | | | |---AttributesSample.ets // 属性| | | |---gradientSample| | | | |---GradientSample.ets // 突变对象| | | |---image_bitmapSample| | | | |---Image_bitmapSample.ets // 位图对象| | | |---methodsSample| | | | |---MethodsSample.ets // 办法| | | |---path2dSample| | | | |---Path2dSample.ets // 门路对象| | | |---shadowsSample| | | | |---ShadowsSample.ets // 暗影| | | |---transformSample| | | | |---TransformSample.ets // 转换| | |---informationPresentationAndDynamicEffects| | | |---dataPanelSample| | | | |---DataPanelSample.ets // 数据面板| | | |---gaugeSample| | | | |---GaugeSample.ets // 仪表盘| | | |---loadingProgressSample| | | | |---LoadingProgressSample.ets| | | |---listSample // 列表| | | | |---ListSample.ets| | | |---marqueeSample| | | | |---MarqueeSample.ets // 跑马灯| | | |---radioSample| | | | |---RadioSample.ets // 单选| | | |---progressSample| | | | |---ProgressSample.ets // 进度条| | | |---qrCodeSample| | | | |---QRCodeSample.ets // 二维码| | | |---textclockSample| | | | |---TextClockSample.ets // 文字时钟| | | |---textTimerSample| | | | |---TextTimerSample.ets // 文字计时器| | |---listAndGrid| | | |---gridItemSample| | | | |---GridItemControlPanel.ets| | | | |---GridItemSample.ets // 网格容器子组件| | | |---gridSample| | | | |---GridControlPanel.ets| | | | |---GridSample.ets // 网格容器| | | |---listItemSample| | | | |---ListItemSample.ets // 列表容器子组件| | | |---listSample| | | | |---ListControlPanel.ets| | | | |---ListSample.ets // 列表容器| | |---navigation| | | |---navigationSample| | | | |---NavigationSample.ets // 导航| | | | |---NavigationSecondPage.ets| | | | |---NavigationThirdPage.ets| | | |---navRouterSample| | | | |---NavRouterSample.ets // 导航| | | |---stepperAndStepperItemSample| | | | |---StepperAndStepperItemSample.ets // 步骤导航器| | | |---tabContentSample| | | | |---TabContentSample.ets // 页签子组件| | | |---tabSample| | | | |---TabControlPanel.ets| | | | |---TabSample.ets // 页签| | |---rowsAndColumns| | | |---columnSample| | | | |---ColumnControlPanel.ets| | | | |---ColumnSample.ets // 列容器| | | |---columnSplitSample| | | | |---ColumnSplitSample.ets // 列宰割容器| | | |---rowSample| | | | |---RowControlPanel.ets| | | | |---RowSample.ets // 行容器| | | |---rowSplitSample| | | | |---RowSplitSample.ets // 行宰割容器| | | |---sideBarContainerSample| | | | |---SideBarContainerControlPanel.ets| | | | |---SideBarContainerSample.ets // 侧边栏| | |---scrollAndSwipe| | | |---scrollSample| | | | |---ScrollSample.ets // 滚动| | | |---swiperSample| | | | |---SwiperControlPanel.ets| | | | |---SwiperSample.ets // 轮播| | |---stackFlexAndGrid| | | |---flexSample | | | | |---FlexControlPanel.ets| | | | |---FlexSample.ets // 弹性布局| | | |---gridContainerSample| | | | |---GridContainerControlPanel.ets| | | | |---GridContainerSample.ets // 栅格零碎| | | |---stackSample| | | | |---StackControlPanel.ets| | | | |---StackSample.ets // 层叠布局| | |---textAndInput| | | |---patternLockSample| | | | |---ChangePanel.ets| | | | |---PattternLockSample.ets // 密码锁| | | |---searchSample| | | | |---ChangePanel.ets| | | | |---SearchSample.ets // 搜寻栏| | | |---imageSpanSample| | | | |---ChangePanel.ets| | | | |---imageSpanSample.ets // 行内图像| | | |---textAreaSample| | | | |---ChangePanel.ets| | | | |---TextAreaSample.ets // 文本域| | | |---richTextSample| | | | |---RichTextSample.ets // 富文本| | | |---spanSample| | | | |---ChangePanel.ets| | | | |---SpanSample.ets // 行内文本| | | |---textInputSample| | | | |---TextInputSample.ets // 文本输出| | | |---textSample| | | | |---ChangePanel.ets| | | | |---TextSample.ets // 文本| | |---web| | | |---webSample| | | | |---WebSample.ets // 网页| |---globalMethods // 详情页面| | |---GlobalMethodData.ets| | |---dialogs| | | |---alertDialogSample| | | | |---AlertDialogSample.ets // 正告弹窗| | | |---customDialogSample| | | | |---CustomDialog.ets| | | | |---CustomDialogSample.ets // 自定义弹窗| | | |---dateDialogSample| | | | |---DateDialogSample.ets // 日期抉择弹窗| | | |---timeDialogSample| | | | |---TimeDialogSample.ets // 工夫抉择弹窗| | | |---actionSheetDialogSample| | | | |---ActionSheetDialogSample.ets // 列表抉择弹窗| | | |---textPickerDialogSample| | | | |---TextPickerDialogSample.ets // 文本滑动选择器弹窗| | | |---menuSample| | | | |---MenuSample.ets // 菜单| |---universal // 详情页面| | |---UniversialData.ets| | |---events| | | |---areaChangeEventSample| | | | |---AreaChangeEventSample.ets // 组件区域变动事件| | | |---clickEventSample| | | | |---ClickEventSample.ets // 点击事件| | | |---dragEventSample| | | | |---component // 组件拖拽| | | | | |---FormComponentDrag.ets| | | | | |---GridItemDrag.ets| | | | | |---HyperlinkDrag.ets| | | | | |---ImageDrag.ets| | | | | |---ListItemDrag.ets| | | | | |---TextDrag.ets| | | | | |---VideoDrag.ets| | | | |---DragEventSample.ets // 拖拽事件| | | |---focusEventSample| | | | |---FocusEventSample.ets // 焦点事件| | | |---keyPressEventSample| | | | |---KeyPressEventSample.ets // 按压事件| | | |---mountUnmountEventSample| | | | |---MountUnmountEventSample.ets // 挂载卸载事件| | | |---mouseEventSample| | | | |---MouseEventSample.ets // 鼠标事件| | | |---scrollEventSample| | | | |---ScrollEventSample.ets // 滚动事件| | | |---touchEventSample| | | | |---TouchEventSample.ets // 触摸事件| | |---gesture| | | |---bindGestureSample | | | | |---BindGestureSample.ets // 绑定手势办法| | | |---combinedSample| | | | |---CombinedSample.ets // 组合手势| | | |---longPressSample| | | | |---LongPressSample.ets // 长按手势| | | |---panSample| | | | |---PanSample.ets // 拖动手势| | | |---pinchSample| | | | |---PinchSample.ets // 捏合手势| | | |---rotationSample| | | | |---RotationSample.ets // 旋转手势| | | |---swipeSample| | | | |---SwipeSample.ets // 滑动手势| | | |---tapGestureSample| | | | |---TapGestureSample.ets // Tap手势| | |---properties| | | |---foregroundSample| | | | |---ForegroundSample.ets // 前景| | | |---backgroundSample| | | | |---BackgroundSample.ets // 背景| | | |---borderSample| | | | |---BorderSample.ets // 边框| | | |---componentBlurredSample| | | | |---ComponentBlurredSample.ets // 分布式迁徙标识| | | |---componentIDSample| | | | |---ComponentIDSample.ets // 组件标识| | | |---displaySample| | | | |---DisplaySample.ets // 显示| | | |---effectsSample| | | | |---EffectsSample.ets // 互动| | | |---flexSample| | | | |---FlexSample.ets // flex布局| | | |---focusControlSample| | | | |---FocusControlSample.ets // 焦点管制| | | |---fontSample| | | | |---FontSample.ets // 字体| | | |---gridSettingsSample| | | | |---GridSettingsSample.ets // 栅格设置| | | |---interactionSample| | | | |---InteractionSample.ets // 图像成果| | | |---layoutConstraintSample| | | | |---LayoutConstraintSample.ets // 布局束缚| | | |---locationSample| | | | |---LocationSample.ets // 地位设置| | | |---pictureBorderSample| | | | |---PictureBorderSample.ets // 图片边框设置| | | |---restoreIdSample| | | | |---RestoreIdSample.ets // 分布式迁徙标识| | | |---rotateSample| | | | |---RotateSample.ets // 旋转| | | |---scaleSample| | | | |---ScaleSample.ets // 缩放| | | |---shapeCropSample| | | | |---ShapeCropSample.ets // 形态裁剪| | | |---safeAreaSample| | | | |---SafeAreaSample.ets // 平安区域| | | |---sizeSample| | | | |---SizeSample.ets // 尺寸| | | |---transformSample| | | | |---TransformSample.ets // 变换矩阵| | | |---translateSample| | | | |---TranslateSample.ets // 图像变换具体实现本示例应用 Tabs容器组件 搭建整体利用框架,每个 TabContent内容视图 应用 List容器组件 布局,在每个 ListItem 中应用 循环渲染 加载此分类下分类导航数据,底部导航菜单应用 TabContent中tabBar属性 设置自定义款式 。 ...

September 22, 2023 · 8 min · jiezi

关于openharmony:OpenHarmony创新赛-您有一份创新激励奖待领取-请查收

2023 开源和信息生产大赛凋谢原子开源大赛 OpenHarmony 翻新赛(以下简称“OpenHarmony 翻新赛”)正热火朝天的进行当中赛程也行将进入到提交作品的要害阶段为了激励更多参赛队伍提交作品OpenHarmony 翻新赛特地设立“翻新激励奖”!前 100 名按要求提交残缺作品的参赛队伍即可取得激励奖——翻新赛周边限定礼包一份! PS.  依照提交代码仓的工夫排序前 100 位,赛事完结后在大赛官网公示获奖团队。 此外,作品到 10 月 30 日之前都能够二次迭代提交但要确保首次提交的作品版本为残缺作品! 作品提交地址https://atomgit.com/ 参赛队伍在 AtomGit 上建仓提交作品材料提交作品时将仓库地址同步给工作人员即可参赛作品需蕴含阐明文档、演示视频、开源源码及利用 hap 包有任何疑难,欢送分割咱们: 开源大赛官网https://competition.atomgit.com OpenHarmony 翻新赛官网https://www.openharmony.cn/competition/introduction 官网邮箱growing@mail.openharmony.io 已有作品链接请及时注销OpenHarmony利用翻新赛 作品链接收集 心愿大家踊跃参加都能在 OpenHarmony 翻新赛上播种满满! 点击关注浏览原文,理解更多资讯

September 21, 2023 · 1 min · jiezi

关于openharmony:建议收藏OpenHarmony系统能力SystemCapability列表

SysCap,全称 SystemCapability,即零碎能力,指操作系统中每一个绝对独立的个性。开发者应用某个接口进行开发前,倡议先浏览SysCap使用指南,理解 Syscap 的定义和应用领导。再联合下文中的表格判断具体能力集是否反对某个设施,进步开发效率。 阐明:Default 代表了一个性能比拟全面的 OpenHarmony 设施,具备大部分的通用能力。在尚未明确设施具体能力集的状况下,可应用 Default 类型进行开发  SystemCapability.ArkUI.ArkUI.FullArKUI 规范零碎 SystemCapability.ArkUI.ArkUI.LiteArkUI 小型零碎 SystemCapability.ArkUI.ArkUI.Napinapi 性能 SystemCapability.ArkUI.ArkUI.Libuvlibuv 性能 SystemCapability.ArkUI.UiAppearance外观配置性能 SystemCapability.BundleManager.BundleFramework包治理服务 SystemCapability.BundleManager.DistributedBundleFramework分布式包治理服务 SystemCapability.BundleManager.ZlibZlib 压缩、解压缩工具 SystemCapability.Graphic.Graphic2D.WebGLWebGL1.0 规范 api SystemCapability.Graphic.Graphic2D.WebGL2WebGL2.0 规范 api SystemCapability.WindowManager.WindowManager.Core窗口治理 SystemCapability.WindowManager.WindowManager.MutiScreen多屏能力 SystemCapability.Notification.CommonEvent公共事件 SystemCapability.Notification.Notification告诉 SystemCapability.Notification.ReminderAgent后盾代理揭示 SystemCapability.Notification.Emitter事件处理服务 SystemCapability.Communication.IPC.Core过程间通信 SystemCapability.Communication.SoftBus.Core软总线 SystemCapability.Communication.NetManager.Core网络管理根底服务 SystemCapability.Communication.NetStack根底网络协议栈能力 SystemCapability.Communication.WiFi.CoreWIFI 根底能力 SystemCapability.Communication.WiFi.STAWIFI STA 能力 SystemCapability.Communication.WiFi.AP.Core WIFI AP 能力 SystemCapability.Communication.WiFi.AP.ExtensionWIFI AP 扩大能力 SystemCapability.Communication.WiFi.P2PWIFI P2P 能力 SystemCapability.Communication.Bluetooth.Core蓝牙服务以及协定栈 SystemCapability.Communication.Bluetooth.Lite蓝牙轻量级服务 SystemCapability.Communication.NFC.CoreNFC 服务 SystemCapability.Communication.ConnectedTag有源 NFC 标签服务 SystemCapability.Location.Location.Core位置服务根底能力 SystemCapability.Location.Location.Geocoder天文编码能力 SystemCapability.Location.Location.Geofence天文围栏能力 SystemCapability.Location.Location.GnssGNSS 硬件相干能力 SystemCapability.Location.Location.Lite位置服务轻设施能力 SystemCapability.MultimodalInput.Input.Core根本输出能力 SystemCapability.MultimodalInput.Input.InputDevice输出设施治理 SystemCapability.MultimodalInput.Input.RemoteInputDevice近程输出设施 SystemCapability.MultimodalInput.Input.InputMonitor输出事件监听者 SystemCapability.MultimodalInput.Input.InputConsumer输出事件消费者 SystemCapability.MultimodalInput.Input.InputSimulator输出事件模仿者 SystemCapability.MultimodalInput.Input.InputFilter输出过滤 SystemCapability.PowerManager.BatteryManager.Extension电池服务扩大能力 ...

September 20, 2023 · 2 min · jiezi

关于openharmony:OpenHarmony-AI框架开发指导

一、概述1、性能简介AI 业务子系统是 OpenHarmony 提供原生的分布式 AI 能力的子系统。AI 业务子系统提供了对立的 AI 引擎框架,实现算法能力疾速插件化集成。 AI 引擎框架次要蕴含插件治理、模块治理和通信治理模块,实现对 AI 算法能力的生命周期治理和按需部署。插件治理次要实现插件的生命周期治理及插件的按需部署,疾速集成 AI 能力插件;模块治理次要实现工作的调度及治理客户端的实例;通信治理次要实现客户端和服务端之间的跨过程通信治理及 AI 服务与插件之间的数据传输。后续,会逐渐定义对立的 AI 能力接口,便于 AI 能力的分布式调用。同时,框架提供适配不同推理框架层级的对立推理接口。 AI 引擎框架结构如下图所示。 图 1 AI 引擎框架 2、搭建环境筹备开发板:Hi3516DV300 或 Hi3518EV300下载源码二、技术规范1、代码治理标准AI 引擎框架蕴含 client、server 和 common 三个次要模块,其中 client 提供 server 端连贯治理性能,OpenHarmony SDK 在算法对外接口中需封装调用 client 提供的公共接口;server 提供插件加载以及工作治理等性能,各 Plugin 实现由 server 提供的插件接口,实现插件接入;common 提供与平台相干的操作方法、引擎协定以及相干工具类,供其余各模块调用。 AI 引擎框架各模块之间的代码依赖关系如下图所示: 图 2 AI 引擎代码依赖关系 倡议:插件与 OpenHarmony SDK 在 AI 引擎指定的门路下进行代码开发 在 AI 引擎框架的整体规划中,OpenHarmony SDK 属于 client 端的一部分,插件由 server 端调用,属于 server 端的一部分,因而 AI 引擎框架为接入的插件与 OpenHarmony SDK 布局的门路: ...

September 19, 2023 · 5 min · jiezi

关于openharmony:OpenHarmony-Meetup常州站招募令

OpenHarmony Meetup 常州站正炽热招募中!诚邀充斥激情的开发者参加线下盛会~摸索 OpenHarmony 前沿科技,畅谈将来前景,感触 OpenHarmony 生态构建之路的魅力! 线下参加,名额有限,仅限 20 位幸运者!报名截止工夫为 9 月 26 日 24:00 点,快快口头起来~ 加入 OpenHarmony Meetup 常州站将有好礼相送:1. 惊喜开发者礼品一份;2. 与现场大咖面对面交换,深度技术探讨;3. 打卡拍照,互动乐趣一直; 4. 现场发问,专家技术解答; 更有抽奖环节,侥幸大奖等你拿!机会百年不遇,不容错过!赶快报名,与咱们一起点燃激情,开启 OpenHarmony 精彩世界之旅吧!流动议程如下: 扫码入群,获取更多与会信息:

September 19, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony创新赛|赋能直播第三期

凋谢原子开源大赛 OpenHarmony 翻新赛赋能直播间继续邀请泛滥技术专家一起分享利用开发技术常识,本期推出 OpenHarmony 利用开发之音视频播放器和三方库的应用和办法,助力开发者把握多媒体利用技术的开发能力和应用三方库晋升利用开发的效率和品质,欢送各位开发者们踊跃扫码预约直播,在较量中播种更多成长。 点击关注浏览原文,理解更多资讯

September 12, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony社区运营报告2023年8月

本月快讯● 2023 年 8 月 3 日,OpenAtom OpenHarmony(以下简称“OpenHarmony”)公布了 Beta2 版本。OpenHarmony 4.0 Beta2 在零碎能力、利用框架、分布式通信、媒体性能、安全性等方面进行了全面降级。其中,ArkUI 加强了界面组件能力,利用框架反对了 ArkTS 卡片代理刷新,分布式数据管理引入了 UDMF 框架,媒体播放和编解码能力进一步晋升。同时,安全性增强了 DSA 数字签名算法反对,开发者工具也失去了优化,如方舟运行时反对 JSContext 和动静 PGO 性能。这些改良独特晋升了零碎的性能、安全性和开发体验。 ● 8 月 26 日,由 OpenHarmony 我的项目群工作委员会主办,广州市天河区软件和信息产业协会、深圳市科技流传促进会、广鸿会/粤鸿会协办的 OpenHarmony Meetup 2023 城市巡回广州站,在广州(国内)科技成果转化天河基地隆重启幕。流动吸引了广州本地开发者与企业的宽泛参加,围绕 OpenHarmony 技术及开发相干话题开展了充沛和热烈的探讨。 ● 2023 年 8 月 26 日,OpenHarmony 我的项目群技术领导委员会(后文简“OpenHarmony TSC”) 2023 年中务虚会在中国青岛顺利召开。本次会议由 OpenHarmony TSC 主办,OpenHarmony TSC 委员、OpenHarmony 我的项目群工作委员会代表、OpenHarmony 项目管理委员会代表,15 个 OpenHarmony 技术俱乐部代表和 8 个 TSG 代表缺席此次会议,总参会人数 60+。 ● 本月新增 34 款产品通过兼容性测评,累计 383 款产品通过兼容性测评。 一、代码奉献1、截至 2023 年 8 月 30 日,代码共建组协同华为、深开鸿、润和软件、软通能源、开鸿智谷、九联科技、君正、汇思博、诚迈科技、中国科学院软件所、中软国内等共建单位锁定 2023 年共建指标,其中,TOP 10 为:● 深开鸿:1000+人/月共建工作量;● 软通能源:600+人/月共建工作量;● 润和软件:600+人/月共建工作量;● 开鸿智谷:250+人/月共建工作量;● 九联科技:200+人/月共建工作量;● 君正:200+人/月共建工作量;● 汇思博:100+人/月共建工作量;● 诚迈科技:100+人/月共建工作量;● 中国科学院软件所:100+人/月共建工作量;● 中软国内:50+人/月共建工作量。 2、本月,华为、深开鸿、开鸿智谷、九联科技等单位共建 20 个个性进入骨干:● JPEG 格局图片硬件解码性能;● 语言运行时新增 ECMAScript 2022+标准反对;● 蓝牙 BR/EDR 根本能力加强;● WIFI 测试 APP;● ArkUI:补齐三方利用 API、文本装璜 text-decoration-style 款式;● 测试与认证平台:适配 Vulkan 并新增测试用例,补充媒体 player、Audio 组件 API XTS 套件,仿数据库测试利用,仿扫一扫测试利用;● Sample:利用之间分享和文件拜访提供对立的入口能力,补齐 ArkUI 申明式范式组件集,ArkUI 控件动画动效能力,一多栅格能力,一多交互归一能力,根底动画动效能力,组件及布局能力;● 材料:ArkTS 语言利用开发案例—,利用品质晋升案例。 ...

September 12, 2023 · 2 min · jiezi

关于openharmony:OpenHarmony应用间HSP开发指导

利用间 HSP 用于不同利用间的代码、资源共享。 利用间 HSP 的宿主利用是一种非凡状态的利用,只能由一个 HSP 组成,不会独立运行在设施上,而是被一般利用模块的依赖项援用。当一般利用运行时,通过动静调用的形式应用利用间 HSP 提供的能力,从而实现利用本身所须要的性能。 注意事项利用间 HSP 的代码会运行在开发者利用的过程中,调用相干代码时,须要做好异样捕捉与容错解决,避免因为利用间 HSP 性能异样导致的稳定性问题。一个利用能够同时依赖多个利用间 HSP。利用间 HSP 会影响开发者利用本身的启动工夫,依赖过多的利用间 HSP 可能会导致启动时延产生显著的劣化,倡议将依赖的数目管制在 16 个以内。利用间 HSP 装置时须要对特权权限进行校验,如果想要开发利用间 HSP,须要配置 allowAppShareLibrary 利用特权,具体配置形式参考利用特权配置指南。利用间 HSP 的应用利用间 HSP 会分为两局部对外公布: 一部分为HAR,HAR 包中不会蕴含具体的性能实现代码,而仅仅蕴含导出的对象与办法,所以体积很小。利用开发者将 HAR 包集成到本身的工程中,而后就能够通过调用 HAR 包中提供的对象与办法实现本身的利用性能。 另外一部分为 HSP,这部分为利用间 HSP 的具体实现,外面蕴含 js/ts 代码、C++库、资源和配置文件。这部分会上架到利用市场或者集成到零碎版本中。 集成利用间 HSP 的 HARHAR 中的 index.ets 文件是利用间 HSP 导出的申明文件的入口,所有须要导出的接口,对立在 index.ets 文件中定义。index.ets 文件门路如下: liba├── src│ └── main│ ├── ets│ │ ├── pages│ │ └── index.ets│ ├── resources│ └── module.json5└── oh-package.json5对外裸露的接口,须要在入口文件 index.ets 中申明: ...

September 11, 2023 · 2 min · jiezi

关于openharmony:开源三方库cryptojs加密算法库的使用方法

OpenAtom OpenHarmony(简称“OpenHarmony”)三方库,是通过验证可在 OpenHarmony 零碎上可重复使用的软件组件,可帮忙开发者疾速开发 OpenHarmony 利用。如果是公布到开源社区,称为开源三方库,开发者能够通过拜访开源社区获取。接下来咱们来理解 crypto-js 开源三方库。crypto-js 是一个加密算法类库,能够十分不便地在前端进行其所反对的加解密操作。目前 crypto-js 已反对的算法有:MD5、SHA-1、SHA-256、HMAC、HMAC-MD5、HMAC-SHA1、HMAC-SHA256、PBKDF2、AES、RC4、DES 等。 特点• 安全性和可靠性:crypto-js 实现了通过宽泛测试和审查的加密算法,旨在提供安全可靠的加密性能。它采纳密码学的最佳实际,并致力于爱护数据的安全性和完整性。• 易于应用的 API:crypto-js 提供了简略易用的 API,使开发人员可能轻松地在 应用程序中执行加密和解密操作。它提供了直观和统一的办法和选项,使加密操作变得更加不便和灵便。• 多种加密算法反对:crypto-js 反对多种对称加密算法(如 AES、DES)和散列函数(如 MD5、SHA1、SHA256),以及音讯认证码(MAC)算法。它提供了一套残缺的加密工具,满足不同平安需要。 罕用加密算法的应用场景 MD5MD5 是一种宽泛应用的散列函数。它被用于各种平安利用,也通常用于校验文件的完整性。但 MD5 不耐碰撞攻打,因而不适用于 SSL 证书或数字签名。 SHA-1SHA 散列函数由美国国家安全局 (NSA) 设计。SHA-1 是现有 SHA 散列函数中最成熟的,它用于各种平安应用程序和协定。但随着新攻打的发现或改良,SHA-1 的抗攻击能力始终在削弱。 SHA-2SHA-224、SHA-256、SHA-384,和 SHA-512 合称为 SHA-2。SHA-256 是 SHA-2 汇合中的四个变体之一。尽管它提供了更好的安全性,然而它的利用不如 SHA-1 宽泛。SHA-512 在很大水平上与 SHA-256 雷同,但在 64 位计算机上 SHA-512 比 SHA-256 更快(因为它们在外部应用 64 位算术);在 8 位,16 位和 32 位计算机上,SHA-256 比 SHA-512 更快。 HMACHMAC 是一种应用加密散列函数进行音讯认证的机制,能够与任何迭代明码散列函数联合应用,通常用于音讯身份验证,数字签证。 PBKDF2PBKDF2 是一个用来对用户口令(password)进行加密的函数。在密码学的许多利用中,用户安全性最终取决于用户口令,因为用户口令通常不能间接用作密钥,因而须要进行一些解决。 AESAES 密码学中的高级加密规范(Advanced Encryption Standard,AES),又称 Rijndael 加密法,是美国联邦政府采纳的一种区块加密规范。这个规范用来代替原先的 DES(Data Encryption Standard),曾经被多方剖析且广为全世界所应用。 RC4RC4 算法是 Ron Rivest 为 RSA 公司在 1987 年设计的一种流明码,作为 RSA 的商业秘密直到 1994 年才被匿名颁布于 Internet。RC4 被用于为网络浏览器和服务器间通信而制订的 SSL/TLS(安全套接字协定/传输层平安协定)规范中,以及作为 IEEE 801.11 无线局域网规范一部分的 WEP(Wired Equivalent Privacy)协定和新的 WiFi 受爱护拜访协定(WAP)中。从这些利用来看,RC4 形成了当今网络通信的十分重要的局部,因而这个算法十分重要。 ...

September 8, 2023 · 1 min · jiezi

关于openharmony:一切为了开发者9月16日重大信息即将发布敬请期待

September 8, 2023 · 0 min · jiezi

关于openharmony:开源机密计算平台蓬莱OpenHarmony

演讲嘉宾 | 杜   东回顾整顿 | 廖   涛排版校对 | 李萍萍 嘉宾简介杜东,上海交通大学助理研究员。中国计算机学会 CCF 会员,ACM 会员。钻研趣味为操作系统与体系结构、服务器无感知(Serverless)计算、系统安全。在包含 ASPLOS、ISCA、OSDI、SOSP、ACM SoCC、TOCS 等国内驰名会议和期刊发表/录用多篇学术论文。 内容起源第一届凋谢原子开源基金会 OpenHarmony 技术峰会——平安及秘密计算分论坛 视频回顾视频链接:https://www.bilibili.com/video/BV14k4y1p7UZ/?spm_id_from=333.999.0.0 正 文 内 容OpenHarmony 赋能万物互联,存在笼罩从端到云的平安能力需要。蓬莱-OpenHarmony 是一个开源秘密计算平台,提供了面向 OpenHarmony 的可信执行环境,赋能 OpenHarmony 平安能力。那么,蓬莱-OpenHarmony 次要做了哪些平安加强方面的工作,有哪些关键技术呢?上海交通大学助理研究员、中国计算机学会 CCF 会员、ACM 会员杜东在第一届 OpenHarmony 技术峰会上给大家带来了几点分享。 01►万物互联计算的平安挑战当进入到万物互联的新场景后,存在哪些平安危险和挑战,又有哪些解决方案呢? 依附软件自身提供系统安全能力是一种计划。然而,依赖形式化验证、类型平安语言等技术目前来增强系统安全,目前看来是较为艰难的。在万物互联的场景中,开发者的背景和能力多样性倍增,各自所依附开发软件自身解决平安危险的能力不尽相同。就算可能实现,也可能须要更多的辅助工具来配合开发者实现。 通过软硬件配合,依赖于硬件提供的平安个性来加固零碎,为其提供可信执行环境(TEE)是另一种可行的系统安全加固计划。可信执行环境可能无效加强边缘设施的平安能力,例如内存隔离、I/O 隔离等。依赖该计划进行平安加固的代表零碎有 Intel SGX、ARM TrustZone 和 RISC-V 蓬莱或 Keystone 等。目前,曾经公布了多个平安个性扩大和欠缺的可执行环境计划,为什么还要定制化设计一个蓬莱-OpenHarmony 呢?因为 OpenHarmony 所面临的万物互联场景是有不一样的挑战和危险,次要有以下 3 个方面: 第一,万物互联会导致须要面临简单的硬件环境。在异构的硬件环境下,通过一套零碎把 OpenHarmony 的平安个性和需要撑持起来,是非常复杂的一件事。例如,端侧可能存在十分小型的低配设施,没有页表和内存隔离,然而 TEE 很难跑在这种配置下;又例如,在较高配的手机场景,怎么可能让小型的、没有很多根底平安能力的环境和有平安能力的环境进行协同,也是一个较大的挑战。 第二,软件栈存在差别。面向云场景,软件次要基于 Linux 内核和虚拟机监控器等,必要时可引入如平安 OS 等组件;而面向边缘及 IoT,软件栈较为简单,可能基于 RTOS(如 OpenHarmony 小型内核)等构建整个软件栈。因而,如何使得二者进行协同,是软件异构所带来的问题。 第三,操作系统国产化问题。例如 OpenHarmony 目前在系统安全方面曾经有所成绩,如何保障它的平安能力自主可控呢?这也是须要思考的一个危险和挑战。 蓬莱-OpenHarmony 可能无效解决上述问题,下图是蓬莱-OpenHarmony 的 logo。探讨一个乏味的话题:为什么新的零碎命名为蓬莱?蓬莱是中国现代神话外面的一座仙岛,其被一片彩色的冥河所突围。咱们心愿提供一个可信执行环境,它是和外界隔离的,外面的货色不能进去,里面的货色也不能进去。一方面可能保障外部秘密数据的平安,另一方面也可能防止外部不平安因素因其非凡的位置而对外部造成侵害。 02►蓬莱-OpenHarmony在蓬莱-OpenHarmony 的我的项目中,开发了蓬莱可信执行环境并提供了通用的解决方案。目前次要做的四项工作有:(1)提出面向 OpenHarmony 的通用 TEE 架构和接口,明确架构和接口的定义,保障后续所有的 TEE 都可能满足某一个形象或某一个外围接口而被纳入 OpenHarmony 体系中;(2)基于 RISC-V v1.10 的指令集,开发了蓬莱平安硬件扩大;(3)开发固件层(M-mode) Monitor 和 TEE SDK 的软件层;(4)提供含 MMU 平台和无 MMU 平台的两套零碎反对。 ...

September 7, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony应用开发之自定义弹窗

本文转载自《OpenHarmony 利用开发之自定义弹窗》,作者:zhushangyuan_ 利用场景在利用的应用和开发中,弹窗是一个很常见的场景,自定义弹窗又因为极高的自由度得以广泛应用。本文以橘子购物中一个利用更新提醒的弹窗介绍 OpenHarmony 的自定义弹窗。 接口自定义弹窗官网文档:https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/ts-methods-custom-dialog-box-0000001477981237-V3#ZH-CN_TOPIC_0000001574128801__customdialogcontroller CustomDialogController 是自定义弹窗对应的接口,具体介绍如下: CustomDialogController(value:{builder: CustomDialog, cancel?: () => void, autoCancel?: boolean, alignment?: DialogAlignment, offset?: Offset, customStyle?: boolean, gridCount?: number, maskColor?: ResourceColor, openAnimation?: AnimateParam, closeAnimation?: AnimateParam})参数: 这其中最重要的就是 builder,咱们须要本人实现一个结构器,也就是这个弹窗的页面。 具体实现定义 CustomDialogController首先,咱们须要定义一个 CustomDialogController: UpdateDialogController: CustomDialogController = new CustomDialogController({ builder: UpdateDialog(), customStyle: true})这个 CustomDialogController 就代表弹窗,UpdateDialog()是弹窗的具体实现,customStyle 为 ture 就示意弹窗款式能够自定义。 设置调用机会在这个场景中,咱们想要每次关上利用的时候弹窗,其余时候不弹窗,咱们须要在首页组件的 aboutToAppear 中退出以下代码: aboutToAppear() { if(AppStorage.Get('nowIndex') === undefined || AppStorage.Get('nowIndex') === 0){ this.UpdateDialogController.open() }}aboutToAppear 函数的调用机会是创立自定义组件的新实例后,执行其 build()函数之前,所以在首页组件的 aboutToAppear 退出 CustomDialogController 的关上开逻辑可使弹窗仅在利用关上的时候触发。 ...

September 6, 2023 · 2 min · jiezi

关于openharmony:Wasm软件生态系统安全分析

本文转载自 OpenHarmony TSC 官网微信公众号《峰会回顾第12期 | Wasm软件生态系统安全剖析》 演讲嘉宾 | 王浩宇回顾整顿 | 廖   涛排版校对 | 李萍萍 嘉宾简介王浩宇,华中科技大学传授,博士生导师,华中科技大学 OpenHarmony 技术俱乐部主任。钻研关注于新兴软件系统中的平安、隐衷和可靠性问题,近五年发表 CCF A 类和 CSRankings 顶会论文近 70 篇,在软件平安和零碎测量畛域的顶会论文成绩在国内名落孙山。 内容起源第一届凋谢原子开源基金会 OpenHarmony 技术峰会——开发者工具分论坛 视频回顾视频链接:https://www.bilibili.com/video/BV1UX4y1879e/?spm_id_from=333.... 正 文 内 容WebAssembly(Wasm)是 W3C 标准化组织制订的一种高效、底层、可移植的字节码格局。目前,Wasm 越来越多地用于浏览器、无服务器计算、跨平台容器和区块链 DApp 等场景。Wasm 与 OpenHarmony 生态可能有哪些碰撞呢?华中科技大学网络安全学院王浩宇传授在第一届 OpenHarmony 技术峰会上,分享了以后在 Wasm 平安畛域所做的摸索,并瞻望了 Wasm 与 OpenHarmony 联合的新方向。 01►Wasm 软件生态系统介绍目前,如 C、C++、Rust、Go、Java、C#等简直所有支流高级语言都能够被编译到 Wasm,所有的支流浏览器也均反对 Wasm。此外业界也实现了很多独立的 Wasm 虚拟机(运行时),反对解释器、AOT、JIT 等模式。 WebAssembly (Wasm) 及其运行环境 Wasm 的执行架构与设计特点有:● 类型平安的栈指令:线性工夫类型查看算法,齐全确定栈上值的数量和类型;● 结构化的控制流指令:外部指令仅能依据嵌套构造跳转,简化了编译器实现;● 可拓展的线性内存:一页为 64KB,模块中指定初始内存页和最大内存页数量,运行时可动静增长;函数调用栈,返回地址等重要数据由内部运行时保护,保障了安全性;● 指令和数据齐全拆散:函数“地址”通过下标示意,非间接跳转通过跳转表实现。 Wasm 的利用前景非常广大。例如,Wasm 可能反对高效的 Web 计算,因而基于 Wasm 可能实现大型利用在浏览器中运行;Wasm 也反对跨平台容器技术,实用于嵌入式、可信计算以及云计算等场景。此外,Wasm 在 Web 3.0/区块链中的 DApp 和智能合约等畛域也被利用宽泛。 Wasm 多语言、跨平台以及高性能的个性,使其十分符合 OpenHarmony 面向万物互联新场景的开源生态,在挪动设施上利用前景宽泛。目前,WasmEdge 开源项⽬维护者 Michael Yuan 等人曾经发动了 OpenHarmony Wasm-SIG 提案,致⼒于宣传、施行、推⼴Wasm 与 OpenHarmony 的集成,在 OpenHarmony 终端设备上能够平安高效的运行第三方开发者用 C、C++、Rust 等语言编写的 Wasm 程序,有利于扩充 OpenHarmony 生态的开发者群体。 ...

September 5, 2023 · 2 min · jiezi

关于openharmony:OpenHarmony使用ArkUI-Inspector分析布局

本文转载自《#2023 盲盒+码 # OpenHarmony 应用 ArkUI Inspector 剖析布局》,作者:zhushangyuan_ OpenHarmony应用ArkUI Inspector剖析布局 ● 摘要:视图的嵌套档次会影响利用的性能,开发者应该移除多余的嵌套档次,缩短组件刷新耗时。本文会介绍如何应用 ArkUI Inspector 工具剖析布局,提醒利用响应性能。 ● 关键字:列举本文相干的关键字:OpenHarmony HarmonyOS 鸿蒙 Inspector 布局查看器 视图嵌套 概述利用将布局渲染到屏幕上的晦涩度影响用户对品质的感知。倡议移除多余的嵌套档次缩小视图嵌套档次。视图的嵌套档次会影响利用的性能。因而举荐开发者移除多余的嵌套档次,缩短组件刷新耗时。 如果视图嵌套得很深,会导致破费更多的工夫来解决,会减少页面渲染工夫。在屏幕刷新率为 120Hz 的设施上,每 8.3ms 刷新一帧,如果视图的嵌套档次多,可能会导致没法在 8.3ms 内实现一次屏幕刷新,就会造成丢帧卡顿,影响用户体验。嵌套视图会创立更多的节点,会减少内存耗费。如果嵌套视图是从服务器获取的,这可能会导致额定的网络提早,减少页面加载的工夫。过多的视图嵌套还可能会使页面的构造和代码变得复杂和难以保护,这可能会导致谬误和性能问题的可能性减少。 因而,缩小视图嵌套档次十分重要。本文会介绍如何应用 ArkUI Inspector 工具剖析布局,提醒利用响应性能。 环境筹备从 DevEco Studio 4.0 Beta2 版本开始集成 ArkUI Inspector 工具,能够从OpenHarmony-v4.0-beta2 Release Notes#配套关系局部下载 DevEco Studio 4.0 Beta2 版本。 应用场景开发者能够应用 ArkUI Inspector,在 DevEco Studio 上查看利用在真机上的 UI 界面显示成果,能够查看查看利用的界面组件树 component tree,还能够查看选定组件的属性信息。 在 ArkUI Inspector 的组件树上抉择组件,UI 界面主动框选对应组件,属性列表显示以后组件的属性信息。在 UI 界面点击抉择组件,组件树对应组件变动为选中状态,属性列表显示以后组件的属性信息。 ArkUI Inspector 工具十分好用。能够应用它剖析布局,缩小布局嵌套档次,从而提醒利用响应性能。 工具介绍应用连接线把真机连贯到开发 PC,关上 DevEco Studio,在 DevEco Studio 下方点击 ArkUI Inspector,关上 ArkUI Inspector。 点击 RUN 或者 DEBUG 按钮,把利用推包到设施上,在设施利用列表抉择以后显示在设施前端的 UI 过程。本文应用的是Sample聊天实例利用,须要抉择的过程是 com.samples.chat。 ArkUI Inspector 左侧为以后的组件树结构 Component Tree,两头栏显示以后设施的 UI 显示界面,右侧在选中组件的状况下为以后组件的属性信息。当设施上 UI 发生变化时,可点击两头栏右上角刷新按钮同步设施上的 UI 成果。能够在左侧组件树上抉择或间接在 UI 界面点击抉择组件。 如果想退出应用 ArkUI Inspector,能够在设施框,点击设备列表的最初一项 Stop inspector,可断开与设施的连贯。 性能实际咱们以一个理论案例来看下如何借助 ArkUI Inspector 工具来优化布局。检出工程Sample聊天实例利用工程代码,应用 DevEco Studio 编译构建,推送到开发板上运行。 咱们抉择一个简化的场景,关上和一位敌人的聊天窗口,查看历史聊天信息。刷新 ArkUI Inspector 工具中的 UI 界面,如下:能够看出,ListItem 列表项中蕴含一个 Column->Row,上面又蕴含 Row 和 Column 子组件。ListItem 列表项下的子组件 Column 这个列容器只蕴含一个 Row 子组件容器,Column 列容器是不必要的,能够去掉,这样 ListItem 列表项下的子组件间接为 Row 子组件即可,从而缩小一个视图嵌套档次。一个嵌套档次的影响,可能对性能的影响微不足道。本实际仅限于用来演示如何应用 ArkUI Inspector 工具来优化布局。 ...

September 4, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony应用ArkUI-状态管理开发范例

本文转载自《#2023 盲盒+码 # OpenHarmony 利用 ArkUI 状态治理开发范例》,作者:zhushangyuan_ 本文依据橘子购物利用,实现 ArkUI 中的状态治理。 在申明式 UI 编程框架中,UI 是程序状态的运行后果,用户构建了一个 UI 模型,其中利用的运行时的状态是参数。当参数扭转时,UI 作为返回后果,也将进行对应的扭转。这些运行时的状态变动所带来的 UI 的从新渲染,在 ArkUI 中统称为状态管理机制。 自定义组件领有变量,变量必须被装璜器装璜才能够成为状态变量,状态变量的扭转会引起 UI 的渲染刷新。如果不应用状态变量,UI 只能在初始化时渲染,后续将不会再刷新。 下图展现了 State 和 View(UI)之间的关系。 治理组件领有的状态@State 装璜器:组件内状态@State 装璜的变量,或称为状态变量,一旦变量领有了状态属性,就和自定义组件的渲染绑定起来。当状态扭转时,UI 会产生对应的渲染扭转。 在状态变量相干装璜器中,@State 是最根底的,使变量领有状态属性的装璜器,它也是大部分状态变量的数据源。 @link 装璜器:父子双向同步子组件中被 @Link 装璜的变量与其父组件中对应的数据源建设双向数据绑定。@Link 装璜的变量与其父组件中的数据源共享雷同的值。 @Componentexport struct DetailPage { @State currentLocation: string = ''}在父组件 DetailPage 中申明以后定位 currentLocation 变量 Panel(this.isPanel) { Location({ isPanel: $isPanel, currentLocation: $currentLocation })}将 currentLocation 变量传给子组件 Location @Componentexport struct Location { @Link currentLocation: string}子组件用 @Link 装璜的 currentLocation 接管。 ...

September 1, 2023 · 2 min · jiezi

关于openharmony:开源图形驱动在OpenHarmony上的使用和落地

本文转载自 OpenHarmony TSC 官网微信公众号《峰会回顾第10期 | 开源图形驱动在OpenHarmony上的应用和落地》 演讲嘉宾 | 黄   然回顾整顿 | 廖   涛排版校对 | 李萍萍 嘉宾简介黄然,华为终端 BG 软件部资深图形技术专家,华为终端游戏规范、工具和剖析创始人,GPU Turbo 黑科技核心成员,在 OpenHarmony 社区上负责开源图形驱动 SIG、游戏 SIG、兼容性工作组组长等职务。 内容起源第一届凋谢原子开源基金会 OpenHarmony 技术峰会——OS 内核及视窗分论坛 视频回顾视频链接https://www.bilibili.com/video/BV11g4y1572L/?spm_id_from=333.999.0.0 正 文 内 容图形驱动也是一种软件程序,它串联了操作系统和应用程序与计算机图形硬件进行通信和交互,是施展硬件性能为操作系统提供高质量图形显示的关键环节。OpenHarmony 在开源图形驱动的应用和落地上做了哪些工作呢?OpenHarmony 游戏 SIG 组、图形驱动 SIG 组组长、华为终端图形资深技术专家黄然在第一届 OpenHarmony 技术峰会上给大家带来了几点分享。 01►OpenHarmony 图形驱动面临的挑战图形驱动技术的演进始终跟 GPU 硬件的倒退相干。1975 年至今,随着 GPU 硬件由晚期的业余畛域高端图形工作站倒退到台式机 GPU 显卡,再到现在的挪动终端、云和服务器 GPU 显卡,图形驱动 API 也由 OpenGL 演进到了 DirectX。 目前,图形驱动畛域的支流厂商都对本身的外围代码闭源,Arm Mali、Qualcomm Adreno 和 Nvidia 等开源图形驱动也并没有特地“Open”。 随着开源静止的衰亡和胜利,AMD 和英特尔等公司的图形驱动开源建设了良好的生态,也获得了不错的成果。对 OpenHarmony 这样一个齐全开源的操作系统来说,图形开源驱动有很好的借鉴和学习意义,当然也存在着诸多挑战。把握开源图形驱动有多难呢?首先图形驱动的开发和钻研须要具备扎实的软硬件开发功底,且因为开源图形驱动在国内的倒退很慢,少有开发者专门从事该项工作,不足技术交换和实践经验分享。下图为黄然老师后期在开源驱动畛域学习和研究所做的笔记: 此外,对于 OpenHarmony 来说,以后大部分的小厂商无奈取得闭源 GPU 厂商的反对,导致视觉晦涩体验较差,限度了十分多 OpenHarmony 产品的商用,在肯定水平上也妨碍了 OpenHarmony 生态的推广。 02►开源图形驱动架构介绍因为从驱动角度,OpenHarmony 富设施的内核是基于 Linux 的,故首先介绍下 Linux 开源驱动的整体架构。整个驱动的架构能够分为 2D 和 3D 两个局部,2D 局部的比拟老的框架是基于 X11,而比拟新的框架是基于 Wayland。 ...

August 31, 2023 · 2 min · jiezi

关于openharmony:OpenHarmony-Meetup-2023-广州站圆满举办城市巡回全面启航

“OpenHarmony 正过后——技术开源”OpenHarmony Meetup 2023 城市巡回流动,旨在通过 meetup 线下交换模式,解读 OpenHarmony 作为下一代智能终端操作系统的新版本及成绩转化,晋升开发者对 OpenHarmony 的关注度,遍及 OpenHarmony 开发技能,减速开发者对 OpenHarmony 的把握,从而吸引更多企业和技术爱好者宽泛参加到 OpenHarmony 生态共建中。星星之火,足以燎原! 8 月 26 日,由 OpenHarmony 我的项目群工作委员会主办,广州市天河区软件和信息产业协会、深圳市科技流传促进会、广鸿会/粤鸿会协办的 OpenHarmony Meetup 2023 城市巡回广州站,在广州(国内)科技成果转化天河基地隆重启幕。流动吸引了广州本地开发者与企业的宽泛参加,围绕 OpenHarmony 技术及开发相干话题开展了充沛和热烈的探讨。本次广州站 Meetup 共计邀请到六位深度参加 OpenHarmony 技术开发和生态倒退的专家,从多角度分享了 OpenHarmony 我的项目以后技术与生态停顿,围绕“OpenHarmony 正过后——技术开源”主题逐个做精彩发言。 OpenHarmony Meetup 广州站签到现场 本次流动由 OpenHarmony 我的项目群工作委员会批准,由广鸿会创始人、OpenHarmony 教育工作组副组长连志安作为出品人,携五位领域专家别离从五个维度进行了议题分享,聚焦  OpenHarmony 3.2 Release 版本个性、北向利用开发案例、开发者生态建设等,让更多开发者理解 OpenHarmony 我的项目,期待更多具备激情和创造力的技术开发者退出到社区,星星之火,能够燎原。 OpenHarmony Meetup 2023 广州站流动合影 广州市天河区软件和信息产业协会秘书长杨楚州做收场致辞:十分荣幸受邀参加本次流动。软件行业曾经成为了当今社会倒退的重要驱动引擎,它不仅推动了各行业的倒退与提高,同时也深刻影响了咱们每个人的生存。OpenHarmony 作为行业的一颗璀璨明珠,正在以其独特的创新能力与实用能力引领操作系统倒退的方向,不仅晋升了设施性能还为咱们带来了更晦涩便捷的智能体验。让咱们独特期待,同时也共同努力让 OpenHarmony 推动产业倒退,助力各行业实现数字化转型,独特发明美妙的数字将来时代。 ![图片](https://static001.geekbang.org/infoq/7f/7fe2f53971cc7cac5532e...)广州市天河区软件和信息产业协会秘书长杨楚州为流动做收场致辞 第一个议题由来自广鸿会创始人、OpenHarmony 教育工作组副组长连志安带来《OpenHarmony 介绍与将来瞻望》的主题演讲,介绍了操作系统的倒退法则,OpenHarmony 版本演进、技术架构和技术创新点,同时分享了以后 OpenHarmony 曾经落地金融、教育、医疗、交通等多个行业的成绩,最初讲述了 OpenHarmony 将来的五个重要发展趋势。连志安示意,不断涌现的丰盛成绩表明 OpenHarmony 生态建设、行业落地等方面曾经有了显著的成果,将来 OpenHarmony 将成为万物互联时代最重要的技术底座之一。 广鸿会创始人、OpenHarmony 教育工作组副组长连志安做主题分享 第二个议题由来自 OpenHarmony 项目管理委员会(PMC)委员、OpenHarmony 根底软件服务 SIG 组长张小田代表 PMC 带来《OpenHarmony 最新版本技术解读》的主题演讲,介绍了 OpenHarmony 最新版本的新个性,重点介绍了在零碎晦涩方面获得的成绩,以及撑持零碎晦涩所实现的架构级全面优化技术。 ...

August 30, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony设备截屏的5种方式

本文转载自《OpenHarmony设施截屏的5种形式 》,作者westinyang  目录● 形式1:系统控制核心● 形式2:OHScrcpy投屏工具 举荐● 形式3:DevEcoStudio截屏性能● 形式4:hdc shell snapshot_display● 形式5:hdc shell wukong● 继续关注 演示视频:https://www.bilibili.com/video/BV1ju4y1U7uk 形式1:系统控制核心● 顶部下滑在控制中心里点击截屏● 这种形式最广泛,截图后可到相册查看,不过要留神有些三方移植固件可能不反对这个性能● 通过上面这条命令能够拉取设施截图目录到电脑上  hdc file recv /storage/media/100/local/files/Pictures/Screenshots 形式2:OHScrcpy投屏工具 举荐OHScrcpy是我在2023-06-03开发的一款OpenHarmony设施投屏PC的工具,目前最新版为1.0-Beta2,Beta3还在开发中,上面有视频演示、下载地址和相干话题● 1.0 Beta1:● OHScrcpy:OpenHarmony开源鸿蒙首款投屏工具横空出世~● 1.0 Beta2:https://www.bilibili.com/video/BV1W14y1o75YOpenHarmony开源鸿蒙投屏工具OHScrcpy1.0-Beta2,反对点触交互● 下载地址:https://www.bilibili.com/read/cv24125018● 相干话题:https://github.com/Genymobile/scrcpy/issues/4137 右键抉择截屏或者按F1快捷键,如下图所示 形式3:DevEcoStudio截屏性能点击下方日志,再点击左下角设施截屏按钮即可 形式4:hdc shell snapshot_display 个别品质jpeg 官网没有文档形容,通过反编译和剖析DevEcoStudio局部jar包,看到外部的一些实现 hdc shell "snapshot_display -f /data/0.jpeg"hdc file recv /data/0.jpeg形式5:hdc shell wukong 高质量png wukong原本是OpenHarmony提供的一个稳定性测试工具,同时也附带的有截屏性能,官网文档 hdc shell wukong special -p 执行下面的命令会输入如下内容 PS C:\Users\westinyang\Desktop> hdc shell wukong special -pStart connect to AAMSSuccess connect to AAMSINF : ( 115) EnvInit : "Report currentTestDir: (/data/local/tmp/wukong/report/20230724_072217/)"INF : ( 120) EnvInit : "Report CSV: (/data/local/tmp/wukong/report/20230724_072217/wukong_report.csv)"INF : ( 121) EnvInit : "Report JSON: (/data/local/tmp/wukong/report/20230724_072217/data.js)"INF : ( 124) EnvInit : "Report exception dir: (/data/local/tmp/wukong/report/20230724_072217/exception/)"INF : ( 92) StartCrashDirListen : create listener threadINF : ( 94) StartCrashDirListen : thread detachINF : ( 68) InitCsvFile : "CSV: (/data/local/tmp/wukong/wukong_20230724_072217.csv)"INF : ( 55) ListenCrashDir : init notifyINF : ( 60) ListenCrashDir : add_watch截屏就在这段输入中的 currentTestDir 目录中,应用如下命令拉取到电脑,留神这个门路是随机的 ...

August 29, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony组件复用示例

本文转载自《#2023 盲盒+码 # OpenHarmony 组件复用示例》,作者 zhushangyuan_ ●摘要:在开发利用时,有些场景下的自定义组件具备雷同的组件布局构造,仅有状态变量等承载数据的差别。这样的组件缓存起来,须要应用到该组件时间接复用, ●缩小了创立和渲染的工夫,能够进步帧率和用户性能体验。本文会介绍开发 OpenHarmony 利用时如何应用组件复用能力。关键字:OpenHarmony HarmonyOS 鸿蒙 ForEach LazyForEach 循环渲染 概述在开发利用时,有些场景下的自定义组件具备雷同的组件布局构造,仅有状态变量等承载数据的差别。这样的组件缓存起来,须要应用到该组件时间接复用,缩小反复创立和渲染的工夫,从而进步利用页面的加载速度和响应速度。在 OpenHarmony 利用开发时,自定义组件被 @Reusable 装璜器润饰时示意该自定义组件能够复用。在父自定义组件下创立的可复用组件从组件树上移除后,会被退出父自定义组件的可复用节点缓存里。 在父自定义组件再次创立可复用组件时,会通过更新可复用组件的形式,从缓存疾速创立可复用组件。这就是 OpenHarmony 的组件复用机制。本文会介绍开发 OpenHarmony 利用时如何应用组件复用能力。 环境筹备筹备一个 DevEco Studio,应用真机或者 Simulator 模拟器来验证。更多对于 DevEco Studio 的信息,请拜访:https://developer.harmonyos.com/cn/develop/deveco-studio/。 组件复用接口OpenHarmony SDK 文件 ets\component\common.d.ts 的自定义组件的生命周期里定义了 aboutToReuse 办法,如下: 自定义组件的生命周期回调函数用于告诉用户该自定义组件的生命周期,这些回调函数是公有的,在运行时由开发框架在特定的工夫进行调用,不能从应用程序中手动调用这些回调函数。 当一个可复用的自定义组件从复用缓存中重新加入到节点树时,触发 aboutToReuse 生命周期回调,并将组件的结构参数传递给 aboutToReuse。aboutToReuse 函数的参数是字典类型的,键为组件的结构参数变量名称,值为组件的结构参数理论取值。该申明周期函数从 API version 10 开始,该接口反对在 ArkTS 卡片中应用。 declare class CustomComponent extends CommonAttribute {....../**aboutToReuse Method@param { { [key: string]: unknown } } params - Custom component init params.@syscap SystemCapability.ArkUI.ArkUI.Full@crossplatform@since 10*/aboutToReuse?(params: { [key: string]: unknown }): void;......}开发实际咱们看下组件复用的理论应用案例。示例中,会创立一个图片列表页面,应用懒加载 LazyForEach,以及组件复用能力。 ...

August 29, 2023 · 2 min · jiezi

关于openharmony:移动应用高级语言开发并发探索

本文转载自 OpenHarmony TSC 官网微信公众号《峰会回顾第9期 | 挪动利用高级语言开发——并发摸索》 演讲嘉宾 | 李勇彪回顾整顿 | 廖   涛排版校对 | 李萍萍 嘉宾简介李勇彪,OpenHarmony 我的项目群技术领导委员会编程语言 TSG 成员,华为 OpenHarmony 虚拟机编译器专家。2021 年至今,华为终端 OS 语言编译运行时团队架构师,负责 OpenHarmony 高级语言编译运行时的整体技术架构。曾就任于阿里巴巴,参加并主导 AliOS 高级语言虚拟机的编译优化、内存治理优化、多线程优化等我的项目。目前聚焦在挪动 OS 的编程语言及语言虚拟机畛域。 内容起源第一届凋谢原子开源基金会 OpenHarmony 技术峰会——编程语言及利用框架分论坛 视频回顾视频链接:https://www.bilibili.com/video/BV1Co4y1c7iC/?spm_id_from=333.... 正 文 内 容随着摩尔定律放缓景象的日益突出以及计算机多核零碎架构的呈现,并发编程继续引起了宽泛的关注。目前,挪动应用领域的并发摸索有哪些,在 OpenHarmony 上又有哪些成绩和将来布局呢?华为终端编译器与运行时架构师李勇彪在第一届 OpenHarmony 技术峰会上给大家带来了几点分享。 01►并发的背景 摩尔定律由 Intel 的联结创始人兼前 CEO 戈登·摩尔提出,即半导体芯片上集成的晶体管和电阻数量将每两年增加一倍,微处理器的性能进步一倍,或价格下降一半。在过来的几十年间,摩尔定律为算力乃至生产力的倒退作出了微小的奉献,但至 2022 年,随着 Denard 微缩效应遇到了元件物理的瓶颈,业界逐步对这一观点产生了强烈的一致,一部分人士认为摩尔定律正在逐渐放缓甚至有生效的偏向,另一部分人士认为摩尔定律依然无效,仅是成本增加了。在该背景下,单芯片功耗束缚了单核的性能,基于多核化的并发编程成为挪动畛域晋升性能的重要技术手段。 摩尔定律放缓景象 那么,什么是并发呢?并发指同一时间应答多项工作的能力,一个时间段中有几个工作都处于运行准备就绪状态,在单核设施中,任一个时刻只有一个工作可能运行,其运行程序是不固定的;而在多核场景中,同一时间能够多项工作并行。 并发与并行 02►常见的并发模型2.1►►线程和锁 线程和锁是并发模型的一种常见示意,下图示意了一种典型的 CPU 多核架构,能够看出,L3 Cache 在多核间共享,因而 L3 Cache 的一致性是保障程序在多核间失常运行的根底。在确保单线程执行后果不变的前提下,能够做任意编译器优化,如常量流传、公共子表达式打消、内联、标量替换、死代码删除、指令乱序等。因为不同的操作系统对内存一致性有不同的束缚,须要通应用锁等同步语义保障多线程内存一致性。目前,通过基于共享内存的乐观锁、自旋锁、偏差锁、精准内存屏障等伎俩能够实现性能优良的多线程程序,但也存在肯定的问题:线程和锁计划的优化依赖软件工程有良好的并发实际标准和资深并发程序开发者,且容易引发死锁,测试及保护的老本也很高。 一种 CPU 多核架构 2.2►►Actor 模型Actor 模型概念的提出曾经几十年了:一个 actor 是一个根本的计算单元,通过音讯通信;外部维持可变状态,两边相互不能间接批改。其劣势在于每个 Actor 易于保护以及测试,业务开发只须要关怀业务的音讯解决,测试只须要笼罩音讯流程序即可。此外,其容错性也好,适宜分布式编程。当然,Actor 模型也存在肯定的短板:存在信箱堆满问题,不共享状态,只通过音讯通信交互,不适宜细粒度并行。 Actor 模型 2.3►►函数式编程函数式编程有以下特点:函数是一等公民;无副作用(无共享可变状态);纯函数构建所有。在函数式编程下,只有输出肯定,其输入也肯定合乎预期。真实世界的函数式则更依赖参数化,会将函数副作用(Side Effect)上抛,尽量脱离开发者编写的业务逻辑层,在框架外部进行解决,且有构造依赖。该模式具备确定性、健壮性(易保护易测试)以及人造反对并行化等劣势,但开发效率较低,理论的业务逻辑很难间接转成函数式开发,且在局部场景下性能体现较差。 函数式编程 2.4►►并发模型特点常见的并发模型次要分为两类,一类仅基于共享内存,另一类则基于音讯通信。基于共享内存的并发模型(线程与锁),具备适用范围广、靠近硬件工作形式的实质和正确应用时效率很高的劣势,但不可避免地存在测试及保护艰难等问题,目前该模式曾经逐步被利用开发畛域摒弃;基于音讯通信的并发模型(Actor、函数式编程),具备容错性好、特定场景性能体现很好且易于保护和测试的劣势,但也存在利用场景无限、不适宜细粒度并行等短板。 03►挪动利用框架并发3.1►►Dart 语言 Dart 是一门新的编程语言,如同 JAVA、PHP 一样,是为了解决编写应用程序中的一些理论问题而被 Google 创造的,其晚期次要是为了可能在 Web 畛域替换 JavaScript(后文简称 JS),起初 Google 外部用 Dart 编写孵化了一个挪动开发框架 Sky,之后又被命名为 Flutter,在挪动跨平台开发畛域大放异彩。Dart 的并发指标次要为了赋能框架反对工作并行化,解决开发者的并发工作和多线程开发需要。其仅共享不可变对象,而可变对象不共享,且提供了单线程并发(异步)和多线程并发(Isolate Spawn /Compute)的并发 API。 ...

August 28, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony-40-Beta2新版本发布邀您体验

2023 年 8 月 3 日,OpenAtom OpenHarmony(简称“OpenHarmony”)公布了 Beta2 版本,相较于历史版本咱们继续欠缺 ArkUI、文件治理、媒体、窗口、平安等零碎能力、晋升体验。欢送开发者理解并降级应用,踊跃反馈贵重倡议、参加奉献,独特促成 4.0 版本的成熟。 为了不便社区开发者理解新版本能力,咱们筹备了版本上新内容介绍及相干文档资源,快来体验吧~ 新增和加强的个性 ArkUI • 反对命名路由的能力,借助此能力可针对不同页面设置差异化的切换动效。 API 参考: https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/... • 轻量级 ArkUI 框架反对定义全局数据对象,可进行利用内页面间的数据共享。 API 参考: https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/... 利用框架 • ArkTS 卡片反对动态卡片配置、动态图展现。 指南: https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/... 文件治理 • 反对公共图片文件在设施端和云端进行同步(设施登录的帐号需开明云端服务),反对通过 picker 抉择云端的图片。 API 参考: https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/... • 反对利用定制备份复原的目录。 指南: https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/... • 反对公共图片的分类管理,用户能够在图库中通过相册对用户图片进行组织分类。 指南: https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/... • 反对利用监听沙箱内的文件的增改删。 API 参考: https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/... 媒体 音频 • 反对音效框架:设施厂商可配置音效策略和加载自定义音效;利用可查问音频输入的音效模式,切换或敞开音效模式。 • 支持系统内录音能力:可依据音频场景属性筛选,录制零碎内播放的音频数据。 • 反对获取音频设备显示名:播放对象详细信息内可获取以后播放输入归属的设施名。 API 参考: https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/... 音视频编解码 • 反对通过 Native API 查问零碎的音视频编解码能力。 ...

August 25, 2023 · 2 min · jiezi

关于openharmony:OpenHarmony手把手教你OTA升级开发

简介升级包装置组件运行在updater分区,其性能次要包含读取misc分区信息获取升级包状态,对升级包进行校验,确保升级包非法无效;而后从升级包中解析出降级的可执行程序,创立子过程并启动降级程序。具体降级的动作由降级脚本管制。本文将介绍如何针对OpenHarmony L2场景适配updater模式。次要内容包含:1.OTA降级实现原理2.OTA降级适配3.升级包制作工具4.升级包制作流程5.OTA降级UX界面适配6.示例服务器开发概述前置条件参考OpenHarmony官网领导,实现失常零碎编译和内核启动,能进入失常模式,且运行失常。芯片需配置蕴含updater分区和misc分区的分区表。updater分区大小不小于32M。 1、OTA降级实现原理1.1 OTA实现次要流程:1.2 降级服务组件降级服务组件是一个SA(System Ability), 由OHOS 的init 过程负责启动。 降级服务器引擎次要性能包含: 1、查找可用的升级包 2、下载升级包 3、设置/获取降级策略 4、触发降级 代码目录 base/update/updateservice # 降级服务代码仓目录├── interfaces # 降级客户端接口目录│ ├── kits # 对外接口封装目录│ │ └── js # 提供给降级客户端利用的JS 接口目录│ └── inner_api # SA 接口定义和封装目录├── frameworks # 部件无独立过程的实现│ └── js # JS API的实现│ └── napi # napi代码实现│ └── client # 降级客户端napi 接口目录├── services # 独立过程的实现│ ├── callback # 提供给降级客户端利用的callback接口目录│ └── engine # 降级客户端引擎服务目录│ ├── etc # 降级客户端引擎rc配置文件目录│ ├── include # 降级客户端引擎头文件目录│ ├── sa_profile # SA 配置文件目录│ └── src # 降级客户端引擎源码目录├── test # 测试代码目录│ ├── unittest # 降级客户端UT代码目录│ └── fuzztest # 降级客户端FT代码目录├── BUILD.gn # 编译入口└── bundle.json # 部件形容文件JS接口阐明 ...

August 24, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony一文带你详解芯片SL8541e系统性能优化

背景搭档反馈,设施操作卡顿,OH根底零碎版本利用操作慢,利用人机交互体验差。本文为你总结芯片解决方案–SL8541e-零碎性能优化。次要内容包含: 确定优化思路帧率优化利用启动优化开机内存优化优化后果总结确定优化思路常见优化思路性能体验是一个很主观的评估,背地的因素很多,怎么通过技术手段找到背地的因素呢?先得转换成主观的评估。 从背地看影响因素和从侧面看主观评估,是两种性能优化的办法。 性能问题的实质就是系统资源曾经达到了瓶颈。“背地看影响因素”强调的是性能问题呈现时的资源瓶颈。“侧面看主观评估”强调的是性能问题呈现时的内部表象。 如果问题场景下,可能看到资源呈现了显著瓶颈,比方内存不足,那就优先解决资源瓶颈。 背地的因素:侧面的主观评估:确定本问题的优化思路回到咱们的问题,咱们能直观的看到资源瓶颈吗,先做一番初步考察。 首先,看下8541e开发板的硬件能力,对硬件产品能力有个意识。8541e的CPU、GPU、Memory都比rk3568差很多,低了不止一个品位,但这是问题的起因吗?其次,针对利用操作反馈慢的问题进行考察。 将利用操作反馈慢,这个抽象的形容进一步细化,有3个问题:1、点击利用后反应迟钝;2、启动过程不晦涩;3、滑动不晦涩 看下做这些操作前的根底资源应用状况: CPU: 总CPU 400%,占用10%~24%稳定,残余375%以上,CPU短缺;前台任务调度优先级高。内存:1G内存机器占用残余400M,内存短缺;比照2G内存残余更多,问题也存在GPU:以后分支上没有合入GPU渲染,但以前在3.1release上合入过GPU渲染,也还是慢。 根据上述状况能够判断:这是常见根底资源短缺的状况下的利用交互问题。 没法直观的看到资源差距,咱们的思路就是:从侧面评估看差距,在针对性剖析和优化。 如何侧面的主观评估? 咱们须要有主观规范的性能指标和对应的测试方法,防止不同的人主观意识不一样,导致呈现不同的评估后果…………

August 24, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony稳定性专项运作知识地图一张图带你稳过万重山

在OpenHarmony生态我的项目的稳定性专项运作时,总结进去的流程标准、脚本工具、准出规范、各类型问题分析方法、以及局部经典案例总结,供大家参考。局部要害信息待继续补充,欢送大家踊跃独特参加、交换。

August 24, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony-分布式硬件关键技术

本文转载自 OpenHarmony TSC 官网微信公众号《峰会回顾第8期 | OpenHarmony 分布式硬件关键技术》 演讲嘉宾 | 李   刚回顾整顿 | 廖   涛排版校对 | 李萍萍 嘉宾简介李刚,华为 OpenHarmony 技术专家,OpenHarmony 分布式硬件技术负责人。次要负责 OpenHarmony 分布式硬件架构设计以及华为多设施协同方向的钻研。 内容起源第一届凋谢原子开源基金会 OpenHarmony 技术峰会——生态与互联分论坛 视频回顾视频链接:https://www.bilibili.com/video/BV1JM4y1h7vt/?spm_id_from=333.999.0.0&vd_source=7698a9a8f356782831d27fbc26289bf5 正 文 内 容OpenHarmony 是一款面向未来万物互联场景的操作系统,其设计采纳了分布式架构。那么 OpenHarmony 相比于传统操作系统有哪些要害的分布式技术呢? 华为分布式硬件技术专家李刚在第一届 OpenHarmony 技术峰会上给大家带来了几点分享。 01►分布式硬件设计理念从智能终端的发展趋势来看,繁多智能智能终端硬件曾经越来越难以满足用户对全场景的要求,面临倒退瓶颈:因为体积的限度,无奈把所有场景所波及的硬件全副退出到一个设施中,且繁多设施也无奈满足所有场景的需要。基于这个事实痛点,多智能终端“组合”而成的“超级终端”应运而生。超级终端能够依据用户冀望,通过分布式技术将多个设施组合起来,使设施间的硬件资源共享,实现硬件的“自在”扩大,并能够在不同的业务场景下,按需组合硬件资源,提供更好的用户体验。例如,通过手机、平板、手表、大屏幕、电脑等智能终端的组合,能够实现多屏幕串联、多摄像头和麦克风交互以及业余传感器安排等性能。 智能终端演进 在这样的趋势下,传统操作系统很难满足开发者的要求。因为传统操作系统只能局限应用单个设施上的硬件,每一个硬件都是割裂运行的,利用也只能在单设施垂直畛域发力,实现跨设施体验老本和复杂度极高。对开发者来说,更心愿可能“跨端”共享硬件,突破硬件 PCB 边界,从而通过软件定义硬件,构建全场景多设施的“超级终端”。分布式硬件技术可能为开发者的上述需要提供助力,因其可能构建硬件资源池,提供按需定义超级终端硬件的能力,反对多路硬件的协同和调度,且可能使硬件能力自适应。 分布式硬件可能带来什么样的新体验呢?例如,在办公场景下,用户能够让各智能终端设备便捷地链接起来,实现硬件能力共享,跨设施、跨零碎利用的操作,无缝传输数据;在出行场景下,用户能够通过将手机和车机组合起来,让利用共享两者的硬件,实现导航、音乐和通话等性能的无缝操作,达到“智慧出行”。对开发者而言,通过程序控制一个远端的设施,仅须要抉择其对应的 ID 即可,其余操作和应用本地设施的形式完全一致。 智慧场景示例 02►跨端分布式硬件的外围挑战要实现上述的性能和体验,在跨端分布式硬件技术上存在什么挑战呢?      随着超级终端蕴含的设施越来越多,硬件的治理复杂度也随之攀升。每一个设施的硬件,不仅对本设施提供硬件能力,还要为超级终端中的其余设施赋能。因而,操作系统必须提供各设施的治理能力。例如,各硬件状态的更新和同步、硬件抵触的解决、多路并发状况的解决等。多设施间的治理技术,是目前跨端分布式硬件的外围挑战之一。 跨端多硬件治理 在无线网络环境下,带宽无限,硬件调用的时延和成果难以保障。例如,本地相机的时延和拍摄成果是由硬件总线决定的,个别能够达到几十毫秒的时延和 4K 甚至更高的分辨率,且十分稳固。当通过利用远端操控相机时,除了硬件总线,还受到网络信号传输的影响,时延最低只能达到几百毫秒,分辨率也仅能达到 1080P ,且稳定很大。无线的不牢靠网络,给硬件时延和成果带来了较大的不确定性。 超级终端硬件调用 在跨端多路硬件并发调用时,硬件协同同步的难度十分高。如上文所述,跨端硬件调度的时延自身就很难保障,当跨端同时调用多个硬件设施时,设施间的同步更难以保障。例如,当利用须要同时操作摄像头和麦克风时,在本地能够通过两者出厂时的调试工作确定其一致性;当跨端近程操作时,因为时延的不确定性,须要操作系统在多个设施间进行硬件协同,大大增加了软件的复杂度。 超级终端多路硬件并发调用 此外,异构智能终端间的硬件兼容性和容错的难度也十分大。设施的不同,导致其各自的系统资源、解决能力、反对的硬件数据处理类型、驱动 I/O 等都存在较大差别,须要进一步思考硬件之间的兼容和容错。例如,手表的解决能力绝对较弱,难以使用电视的 4K 屏幕、高声道立体声喇叭和超高清摄像头等。 03►分布式硬件平台关键技术第一,OpenHarmony 在设计之初时就采纳了分布式硬件池化架构。通过对各设施能力的形象,构建全局硬件资源池形象模型,对上提供一套对立的硬件形象接口,实现对立治理、即插即用。此外,该架构还反对硬件类型的扩大和按需部署,对逻辑与物理资源进行解耦,能够实现本地和分布式硬件的无差别应用,将来还能够实现基于物理硬件可能定义出不同状态的新的硬件给利用应用,利用开发者只须要调用下层服务的 API 就能够应用,达到软件定义硬件的成果。 分布式硬件池化架构 第二,分布式硬件平台还提供了对立的设施发现和认证框架。反对设施间通过碰、扫、靠等形式进行设施认证。一旦设施通过发现和认证后,设施的硬件就会主动进入硬件资源池,能够共享给其余设施应用。 设施发现和认证框架 第三,分布式硬件平台提供了硬件自适应技术。可能主动进行硬件能力协商,可能通过网络带宽和时延等的感知,在硬件被调用动静调整硬件成果。此外,还提供了自适应转换技术,通过加强算法实现硬件成果的加强。 硬件自适应 第四,分布式硬件平台还提供了硬件协同同步技术。可能在多路中提供毫秒级的时钟同步能力,确保多路硬件设施的一致性。通过硬件时延动静感知技术,在多个设施中动静下发同步策略,保障多个硬件之间同步的体验。硬件协同同步 在 OpenHarmony3.2 中,分布式硬件平台提供了全新硬件资源池化架构,可能实现相机和屏幕的“超级终端”硬件互助能力。此外,分布式硬件池化架构、设施发现和认证框架等技术也曾经实现了。对于利用开发者来说,在实现多设施协同场景的开发时可能更加便捷,同时也提供了微小的设想空间。 OpenHarmony3.2 分布式硬件性能 04►翻新想法和瞻望将来,分布式硬件技术能够给多场景提供全新体验。例如,在会议场景下,可能让会议利用同步接入多个设施的摄像头,提供全景画面,实现全方位的视频会议;在影音娱乐场景下,可能轻松地把手机音视频放到电视和音箱上播放,还能够让家里的灯光主动追随电影和音乐进行变动,实现十分震撼的家庭影院的成果。 期待越来越多的开发者参加 OpenHarmony 的生态中来,独特钻研和探讨分布式硬件的技术难题,为将来万物互联新场景赋能。 点击关注理解更多OpenHarmony TSC技术干货内容

August 24, 2023 · 1 min · jiezi

关于openharmony:6步玩转OpenHarmony标准芯片适配

前言本文是OpenHarmony规范芯片的适配指南,心愿能帮忙大家更清晰意识到OpenHarmony芯片的适配过程。本文形容的过程范畴,从头从零开始——芯片没有在OpenHarmony适配过,到满足商用品质和通过兼容性测试——性能稳定性性能平安等各方面都达到商用品质,并且能通过OpenHarmony兼容性认证,形容这个过程中的次要步骤、适配思路,提供领导和案例。不同产品的硬件能力不一样,须要适配的功能模块也不一样,能够依据须要裁剪。次要内容包含: 适配全局观适配过程介绍适配领导适配全局观先上一个全局的图,让大家对OpenHarmony规范芯片适配有个整体的意识。 适配过程介绍再给大家介绍整个适配过程。整个适配过程能够分为六大阶段。上面介绍各个阶段的划分和次要内容。阶段一 系统启动本阶段次要指标是将OpenHarmony零碎在这个新芯片上启动起来,能从后盾看进入了OpenHarmony零碎。实现这一步后,就有了可供各开发者并行开发的根底版本。其余硬件模块的适配,第二、三、四阶段的硬件适配,如图形、WiFi、GPU等,都能够开始并行工作了。为了实现这一步,从最后的代码工程搭建、烧录打包、内核移植、内核启动等一系列工作,直到System Init启动;为了不便更多开发者调试,特意加了HDC适配。阶段二 点屏本阶段次要指标是点亮屏幕,提供一个肉眼可见的OpenHarmony零碎版本,为后续开发更见便捷。在阶段一的根底上,点亮屏幕依赖两个方面:一是利用要失常启动,二是图形要适配。利用的失常启动:没有专门要适配的,次要依赖上一阶段内核移植批改要全面,如果没有启动就顺次查看各个点,个别是相干性能依赖的没有开启。比方Accesstoken如果没有移植,会导致SoftBus、Foundation等启动不了。图形适配:次要是图形驱动移植和Display HDI适配。适配实现之后,批改零碎采纳CPU点亮屏幕。阶段三 根底硬件适配…………

August 24, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony应用实现二维码扫码识别

本文转载自《OpenHarmony 利用实现二维码扫码辨认》,作者 zhushangyuan_ 概念介绍二维码的利用场景十分宽泛,在购物利用中,消费者能够间接扫描商品二维码,浏览并购买产品,如图是购物利用的扫描二维码的页面。 本文就以橘子购物示例利用为例,来解说 OpenHarmony 利用二维码开发相干的技术点。 咱们先看下二维码相干的几个概念。 ● 二维码生成OpenHarmony 利用框架提供了QRCode组件,用于显示单个二维码的组件。该组件只能用于显示二维码,无奈显示条码与解析码内容。 ● 二维码解析OpenHarmony 提供了功能强大的三方库 @ohos/zxing,是一个解析/生成一维码/二维码的库。具体内容能够参考@ohos/zxing。 二维码解析时,通常有两种形式,应用相机拍摄获取图片或关上相册选取图片,而后图片解析适合的图片格式,进行二维码解析。 橘子购物示例利用扫描二维码的示例图: 配置文件理解了二维码相干的概念后,咱们看下橘子购物示例利用的 oh-package.json5 配置文件。 在橘子购物示例利用中,实现首页二维码扫描的页面的文件地位为:entry/src/main/ets/pages/ScanPage.ets。文件内容如下: import { QRCodeScanComponent } from "@ohos/scan-component"@Entry@Componentstruct Scan { build() { Column() { QRCodeScanComponent() } }}内容非常简单,次要是导入的自定义组件 QRCodeScanComponent,这个组件的代码来自:二维码扫描示例利用,后文咱们这样剖析如何开发这个二维码扫描利用。从这一行,能够理解到 OpenHarmony 利用如何援用 ohpm 本地三方库。 "@ohos/scan-component":"file:../libs/ohos-qr-code-scan-1.0.1.har",oh-package.json5 配置文件片段如下: { "license": "ISC", "devDependencies": {}, "name": "product", "description": "example description", "repository": {}, "version": "1.0.0", "dependencies": { "@ohos/http": "file:../libs/ohos-http-1.0.0.tgz", "@ohos/video-component": "file:../libs/ohos-video-component-1.0.5.tgz", "@ohos/details-page-component": "file:../feature/detailPage", "@ohos/notification": "file:../libs/ohos-notification-1.0.0.tgz", "@ohos/scan-component": "file:../libs/ohos-qr-code-scan-1.0.1.har", "@ohos/updatedialog": "file:../libs/ohos-updatedialog-1.0.0.tgz", "@ohos/enter-animation": "file:../libs/ohos-enter-animation-1.0.1.tgz", "@ohos/share-component": "file:../libs/ohos-sharecomponent-1.0.1.tgz", "@ohos/emitter": "file:../feature/emitter", "@ohos/navigation-component": "file:../feature/navigationHome" }}开发步骤咱们来看二维码扫描性能是如何开发的。导入 ohpm 三方库在开发前,咱们须要导入 ohpm 组件库:@ohos/zxing。能够应用命令行形式导入 ohpm install @ohos/zxing,也能够间接在文件entry\oh-package.json5中配置,如文件片段所示。 ...

August 23, 2023 · 4 min · jiezi

关于openharmony:峰会回顾第7期-视窗绘制技术演进和新趋势

本文转载自 OpenHarmony TSC 官网微信公众号《峰会回顾第7期 | 视窗绘制技术演进和新趋势》演讲嘉宾 | 陈秋林回顾整顿 | 廖   涛排版校对 | 李萍萍 嘉宾简介陈秋林,华为终端 OS 资深架构师、菲尔兹 Lab 主任,长期从事终端 OS 研发,先后负责 LiteOS、安卓性能优化、HMS 框架、OpenHarmony 视窗零碎等架构设计和技术开发。 文章内容起源第一届凋谢原子开源基金会 OpenHarmony 技术峰会——OS 内核及视窗分论坛 视频回顾视频链接:https://www.bilibili.com/video/BV1fP41127ZW/?spm_id_from=333.... 正 文 内 容视窗绘制是图形操作系统的根底能力,它决定终端利用图形界面的显示性能和品质,以及用户操作的响应快慢和晦涩体验。在万物智联的新场景下,视窗绘制技术的倒退有哪些挑战,技术上又有哪些演进趋势呢?华为终端 OS 资深架构师陈秋林在第一届 OpenHarmony 技术峰会上,分享了几点思考。 01►终端视窗绘制面临的新挑战视窗零碎(Windowing system/window system)是图形操作系统的重要子系统之一,负责将利用的性能界面以图形显示给用户,并反对用户对其通过触摸、键盘鼠标、语音等形式进行交互和操控。视窗零碎由桌面环境、GUI 框架、显示服务以及窗口管理器等 4 大部分组成,别离负责提供利用及其入口治理、利用开发框架和 SDK、图形界面绘制和显示、窗口治理和操作控制等性能。 视窗零碎 1.1►►高分辨率和高刷新率的遍及,带来更高的 GUI 绘制挑战视窗绘制的计算负载由屏幕分辨率、帧率以及画面质量等因素决定。随着终端软硬件倒退,屏幕分辨率、帧率以及画面质量一直晋升,视窗绘制负载一直升高。如 6k 分辨率 @240Hz 屏幕的视窗绘制负载比 2k 分辨率 @60Hz 增长 30 多倍。240Hz 的刷新率要求 CPU&GPU 在 4ms 内实现一帧的绘制,屏幕分辨率每晋升 1 倍,GPU 负载和 DDR 带宽将进步 4 倍。 1.2►►跨设施协同和跨零碎生态交融,对视窗的跨设施和跨零碎能力提出挑战万物智联新场景下,用户终端设备品种多,须要反对以用户核心的多设施协同体验。要求视窗零碎提供分布式窗口的能力,以反对窗口级跨设施流转。此外,PC 上不可避免生态兼容问题,如 PC 上要兼容 Linux 利用、windows 利用或安卓利用。这要求视窗零碎具备多源窗口交融治理的能力。这两方面体验与用户冀望还存在较大差距,须要进一步思考在视窗零碎上如何做翻新。 1.3►►智能座舱等场景 2D/3D UI 交融,对视窗绘制提出新的性能挑战目前,智能座舱的架构从“多芯多屏”向“一芯多屏”+“跨域交融”倒退。该趋势下,下层利用将变得更加简单:(1)仪表域中 2D 仪表和 3D 酷炫车体交融显示;(2)中控域 360AR 全景显示,2D 菜单按钮与 3D AR 内容交融显示;(3)HUD 域显示信息与 3D 场景交融显示。 ...

August 22, 2023 · 2 min · jiezi

关于openharmony:开源三方库bignumberjs一个大数数学库

OpenHarmony(OpenAtom OpenHarmony 简称“OpenHarmony”)三方库,是通过验证可在 OpenHarmony 零碎上可重复使用的软件组件,可帮忙开发者疾速开发 OpenHarmony 利用。如果是公布到开源社区,称为开源三方库,开发者能够通过拜访开源社区获取。接下来咱们来理解 bignumber.js 开源三方库。 bignumber.js 是一个数学库,用于任意精度十进制和非十进制算术的 JavaScript 库。 特点● 整数和小数。 ● 简略的 API,但功能齐全。 ● 比 Java 的 BigDecimal JavaScript 版本更快,更小,兴许更容易应用。 ● 8 KB 放大和压缩。 ● 复制 JavaScript 的 Number 类型的 、 和 办法 toExponential、toFixed、toPrecision、toString。 ● 包含一个和正确舍入的办法 toFraction squareRoot。 ● 反对加密平安的伪随机数生成。 ● 无依赖关系。 ● 宽泛的平台兼容性:仅应用 JavaScript 1.5 (ECMAScript 3) 性能。 应用场景JavaScript 因为存在计算的精度问题,所以间接计算就可能会导致各种各样的 bug,为了解决这个问题,就能够应用 BigNumber.js 这个库。它的大略原理是将所有数字当做字符串,从新实现了计算逻辑。 应用示例装置 bignumber.jsohpm install bignumber.jsOpenHarmony ohpm 环境配置等更多内容,请参考如何装置 OpenHarmony ohpm 包 导入 bignumber.jsimport BigNumber from "bignumber.js";调用接口let x = new BigNumber(123.4567);let y = BigNumber('123456.7e-3');let z = new BigNumber(x);expect(x).assertEqual(y);expect(y).assertEqual(z);expect(x).assertEqual(z);该库导出单个构造函数 BigNumber,该函数承受 Number、String 或 BigNumber 类型的值。 ...

August 21, 2023 · 2 min · jiezi

关于openharmony:搭载KaihongOS的工业平板机器人无人机等产品通过32版本兼容性测评持续繁荣OpenHarmony生态

近日,搭载深圳开鸿数字产业倒退有限公司(简称“深开鸿”)KaihongOS 软件发行版的工业平板、机器人、无人机等商用产品均通过 OpenAtom OpenHarmony(以下简称“OpenHarmony”)3.2 Release 版本兼容性测评,获颁 OpenHarmony 生态产品兼容性证书。这标记着 OpenHarmony 生态在新兴行业的继续拓展和重大提高,将在更多的设施与场景中施展价值,为 OpenHarmony 更宽泛的生态倒退奠定硬件生态根底,继续促成生态凋敝。 搭载 KaihongOS 的工业平板、机器人和无人机、开鸿全场景试验箱、开鸿控制器,获颁 OpenHarmony 3.2 Release 兼容性证书 新行业拓展新场景深开鸿作为 3.2 版本后行示范单位、OpenHarmony 发行版厂商,充分发挥生态共建的带头作用,踊跃拓展新行业、新场景,发展新版本在工业平板、机器人、无人机产品上的适配和翻新研发,三个产品既造成各自独立的个性,又能通过 KaihongOS 弹性部署、分布式软总线及原子化服务三大外围能力造成场景互动,充分体现了新版本带来的全新技术能力和深开鸿弱小的技术创新实力!搭载 KaihongOS 的工业平板,具备分布式任务调度、原子化工作散发流转、无屏设施有屏管制、跨设施合作等性能个性,同时,具备多种大带宽低延时通信计划、高防护超耐用结构设计、高效平安人机互动等劣势,可服务于制作管制、设施巡检、品质监控、消防管控等多个行业场景。 搭载 KaihongOS 的工业平板 搭载 KaihongOS 的机器人由深开鸿携手乐聚(深圳)机器人技术有限公司(简称“乐聚”)独特打造,通过 KaihongOS 分布式软总线技术能力,可与周围环境和设施进行更智能的分布式协同,大幅提高机器人的交互体验和能力边界,并可在医疗物流、家庭服务、教育等多行业场景利用。 乐聚联结深开鸿打造的机器人 搭载 KaihongOS 的无人机由深开鸿与浙江科比特翻新科技有限公司(简称“科比特”)独特打造,通过 KaihongOS 可实现一次开发、多端部署、数据共享、多端协同、智慧运维等体验,从而可能全量地管制工业无人机,实现将来一人操控多台无人机的技术冲破。 科比特联结深开鸿打造的无人机 新降级适配新需要OpenHarmony 开源两年多以来,版本疾速迭代,零碎能力不断完善。深开鸿除了继续拓展新行业、新产品、新场景外,公司外围自研产品——开鸿全场景试验箱、开鸿控制器也迅速实现了新版本能力适配,目前已同时通过了 OpenHarmony 3.1 Release、OpenHarmony 3.2 Release 两大主线版本的兼容性测评,能满足不同的商业伙伴和开发者的多样化诉求。 开鸿全场景试验箱是深开鸿为倒退操作系统利用生态及底层开发人才生态,以 KaihongOS 为技术底座,联合深开鸿 AIoT 开发套件和智慧屏开发套件,灵便扩大,柔性组合,专项研发的一款 OpenHarmony 全场景超级设施,目前曾经在信息技术翻新人才培养实训室等畛域中承当重要角色! 开鸿全场景试验箱 开鸿控制器是由深开鸿打造的网络综合设施,预置丰盛的工业协定转换、AI 计算及边侧原子化服务利用,具备超强的设施接入、数据流转、边侧孪生、边云协同、 便捷运维等能力,可升高利用场景对网络与云端的依赖,晋升工作解决实时性,广泛应用于交通、能源、制作、基建等行业,目前已在智慧隧道及地铁建设解决方案中施展了重要作用! 开鸿控制器 兼容性测评是 OpenHarmony 生态建设的重要一环,此次深开鸿在新行业与新场景的摸索和落地,为 OpenHarmony 的生态倒退提供了新的思路,截至目前,深开鸿已有包含软件发行版、开发板、自研及联结合作伙伴推出的商用设施在内的共计 22 款产品通过 OpenHarmony 兼容性测评,获不同版本兼容性测评证书总计 28 张,为 OpenHarmony 生态倒退继续添砖加瓦。 OpenHarmony 的价值不仅仅是一个单设施零碎,也不仅仅是一些典型场景的智慧化晋升。将来,深开鸿将持续深刻参加 OpenHarmony 生态建设,基于 OpenHarmony 打造更多高质量的产品和解决方案,用通用化、规模化解决数字化过程中的基本问题,独特推动 OpenHarmony 生态系统的倒退和壮大,实现真正的万物智联。 ...

August 17, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony-40-Beta1发布邀您体验

初夏之际,OpenAtom OpenHarmony(简称“OpenHarmony”) 4.0 Beta1版本如期而至。4.0 Beta1版本在3.2 Release版本根底上,持续晋升规范零碎的ArkUI、利用框架、图形媒体等子系统能力,并提供首批API Level 10接口。 作为OpenHarmony 4.0的首个Beta版本,推出了系列新个性。期待社区开发者踊跃体验新个性,奉献智慧与力量,独特促成将来 4.0 Release版本的成熟,亲自参加并见证OpenHarmony 4.0版本的倒退历程。 下文介绍下OpenHarmony 4.0 Beta1版本局部新个性。想理解该版本的残缺个性信息,请您返回OpenHarmony 4.0 Beta1 Release Notes理解。生态搭档商用设施或软件发行版通过兼容性测评请应用OpenHarmony 3.2 Release版本。 OpenHarmony 4.0 Beta1 Release Noteshttps://gitee.com/openharmony/docs/blob/master/zh-cn/release-... 利用框架Extension能力最小化治理,反对各类Extension依据业务场景凋谢API,避免敏感API的调用。反对数据或文件的URI长期受权,利用能够把本人文件的读写权限受权给其余利用。反对了UIExtension机制,用于实现有界面的Extension,UIExtension的界面能够嵌入到调用方利用的窗口上显示。目前已构建UIExtension根底能力:● 反对对立的UIExtension模板,接口含意清晰,服务开发标准化。● 反对原生默认的Extension界面展现,不便开发者疾速实现Extension性能,同时也提供界面定制能力。反对原子化服务的分享,利用开发者能够应用UIAbility组件提供的办法,设置要分享的数据。用户能够通过分享框把原子化服务和卡片分享到另外一台终端设备。ArkUI组件属性变动反对过渡动效,如Divider组件配置宰割条色彩和色彩属性时应用过渡动效,晋升组件属性变动时的用户体验。Text/Image/Video/ListItem/GridItem组件反对用户长按组件默认进入拖拽行为,反对开发者敞开默认拖拽,晋升开发者开发效率。自定义弹框反对蒙层色彩、弹出动画自定义(如容许开发者设置弹出动画成果的相干参数),加强弹框的开发者自定义能力。反对文本组件中返回输出字符串宽高的能力,用于字符串折叠显示时,鼠标悬浮可弹出字符串残缺提示框。利用包治理反对利用包不解压装置的个性,优化了系统启动性能和利用装置性能。反对三方生态利用应用零碎利用提供的共享包能力,三方利用不须要在本身的安装包里集成相干内容(包含代码、资源以及.so文件等),从而达到缩小生态利用的集成老本以及更新老本的目标。分布式数据管理支持系统利用通过数据管理服务代理静默拜访其余零碎利用的DataShareExtension数据,反对通过数据管理服务代理拜访Single模式利用DataShareExtension的数据。DataShare客户端提供按URI前缀订阅DataShareExtension数据变动的能力,被订阅的URI前缀下任何DataShareExtension数据发生变化都会告诉DataShare客户端。新增对立数据管理框架(Unified Data Management Framework, UDMF),反对数据标准化模型、设施内数据拖拽、UDMF数据存储适配、权限治理、生命周期治理。文件治理反对文件分类视图治理能力,图库等利用以相册形式治理媒体文件(图片、视频无需关注具体存储地位),提供相册内增加、移除文件等性能不波及具体的FileIO行为。API接口待后续版本凋谢。提供加强的FileIO拜访能力,反对randomAccessFile、moveDir、copyDir、watcher能力。提供基于URI的文件长期受权拜访及勾销受权能力,反对文件的跨利用本地受权或跨设施受权。图形显示反对组件自绘制内容的属性动画,反对组件呈现隐没转场动画。对对立渲染模式进行了性能优化,蕴含IPC性能优化(如通过共享内存形式传递渲染资源升高IPC通信量)、反对控件级别遮挡剔除仅需渲染下层控件升高GPU渲染工作量,使能硬件合成器进步合成能效等。图片编解码反对SVG解码,GIF格局欠缺参数解析,如总帧数、工夫距离等。窗口反对监听窗口的获焦状态:之前版本利用开发者仅能够监听WindowStage的获焦状态,但针对零碎窗口和利用子窗口的获焦事件无奈监听。当初,利用开发者能够通过在window上注册windowEvent的形式,监听单个窗口的获焦、失焦和显示暗藏状态。反对将子窗口z轴程序调整到顶层:之前版本对于利用中创立的多个子窗口,零碎总是将最初显示窗口显示在所有子窗口的最顶层。同时,以后零碎中默认会将用户触摸或者鼠标点击的窗口晋升至所有子窗口的最顶层。当初,通过window对象的raiseToAppTop办法,利用开发者能够自行将某个子窗口调整至WindowStage多个子窗中的最顶层。重构沉迷式实现形式,优化利用关上、退出、跳转下的动画成果:之前版本,利用关上时全屏利用窗口大小默认不蕴含状态栏和导航栏的区域,除非利用调用沉迷式接口(通过setWindowLayoutFullScreen或者setSystemBarEnable)。沉迷式利用在关上的过程中调用上述接口,会导致关上动画呈现跳变,影响利用关上和利用间跳转动画的体验。新版本上,无论是否设置沉迷式显示,全屏显示的利用窗口大小都蕴含状态栏和导航栏的区域,而非沉迷式利用的状态栏、导航栏避让会通过ArkUI限度利用显示区域实现。媒体音频能力 反对通过native接口进行音频播放和录制。反对查问或监听以后优先级最高的播放设施。反对音频焦点,利用播放音频时无需手动申请焦点,零碎会在后盾主动申请焦点,并主动执行焦点策略(如暂停、淡出、淡出复原等);利用仅须要注册焦点事件监听函数,以接管焦点事件并更新状态,如暂停时进行进度条。播控框架 反对媒体提供方和管制方之间传递自定义媒体信息,利用可扩大媒体内容展现形式,如媒体管制方可要求媒体提供方按非凡模式显示歌曲歌词。反对媒体播放列表的框架能力,媒体提供方提供播放列表内容,媒体管制方获取播放列表内容并能够抉择任一媒体内容进行播放。反对播放历史记录的框架能力,媒体会话框架提供查问历史播放利用的列表,列表项按播放先后顺序排序(蕴含以后播放的和已退出的利用)。媒体播放 反对HLS直播以及基于datasource的流式播放能力、反对H.265视频硬解播放能力。反对播放音效、音频属性设置,反对带旋转角度视频的主动旋转播放。反对多音轨获取与切换、反对外挂字幕设置与切换。相机 欠缺ArkTS API的错误码和异样解决机制,使开发者能够通过查问错误码定位错误信息。反对前置预览镜像能力,默认状况下,前置预览画面呈镜像状态。不同相机利用应用同一个摄像头场景下,相机框架具备优先级管控和互斥策略。

July 11, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony社区运营报告2023年6月

本月快讯• 6月12日,以“OpenHarmony共建凋谢,共享将来”为主题的2023凋谢原子寰球开源峰会OpenAtom OpenHarmony(以下简称“OpenHarmony”)分论坛在北京北人亦创国内会展中心第一报告厅圆满闭幕,根深叶茂,聚力前行。• 6月12日,凋谢原子开源基金会携手6家2022年的“百人代码奉献单位”隆重公布了《OpenHarmony 共建地图 2.0》。• OpenHarmony平安委员会在浙江大学杭州国内科创核心举办成立大会,次要负责OpenHarmony社区平安治理工作,从制度、流程及基础设施方面端到端构筑社区平安管理体系,推动OpenHarmony社区衰弱有序倒退。• OpenHarmony我的项目群技术领导委员会在6月27日、6月30日别离为西安电子科技大学OpenHarmony技术俱乐部、湖南大学OpenHarmony技术俱乐部举办成立典礼并正式授牌,西安电子科技大学副校长王泉,湖南大学党委常委、副校长李树涛别离缺席两场典礼。• 6月30日,第三届OpenHarmony城市技术论坛(长沙站)胜利举办,以“机器人技术”为主题,由OpenHarmony我的项目群技术领导委员会主办,湖南大学OpenHarmony俱乐部承办,OpenHarmony我的项目群技术领导委员会——机器人TSG、湖南科技大学和湖南天华科技有限公司协办,蕴含国防科技大学、中国矿业大学、乐聚(深圳)机器人技术有限公司、深圳开鸿数字产业倒退有限公司、上海擎郎智能科技有限公司等单位的7位专家参加。• 本月新增24款产品通过兼容性测评,累计322款产品通过兼容性测评。 一、代码奉献1、截至2023年6月28日,代码共建组协同华为、深开鸿、润和软件、软通能源、开鸿智谷、九联科技、君正、汇思博、诚迈科技、中科院软件所、中软国内等共建单位锁定2023年共建指标,其中,TOP 10为:• 深开鸿:1000+人/月共建工作量• 润和软件:600+人/月共建工作量• 软通能源:500+人/月共建工作量• 开鸿智谷:250+人/月共建工作量• 九联科技:200+人/月共建工作量• 君正:200+人/月共建工作量• 汇思博:100+人/月共建工作量• 诚迈科技:100+人/月共建工作量• 中科院软件所:100+人/月共建工作量• 中软国内:50+人/月共建工作量 2、本月,华为、深开鸿、开鸿智谷、软通能源、九联科技等单位共建下列个性进入骨干:• 蓝牙BR/EDR能力• 测试与认证平台ArkUI布局类XTS套件• 测试与认证平台ArkUI界面一致性测试套件line组件• Sample:针对PC窗口创立治理能力;多屏显示能力加强扩大、镜像能力及GPU反对解决方案;自在窗口反对PC相机窗口比例适配及悬浮窗层级可设置;反对默认激活账号治理和分布式账号能力加强;DistributedRdb示例中减少关系型数据库抵触解决接口的示例 3、6月12日,凋谢原子开源基金会携手6家2022年的“百人代码奉献单位”隆重公布了《OpenHarmony 共建地图 2.0》凋谢原子开源基金会TOC副主席郑伟波,OpenHarmony我的项目群工作委员会委员、华为终端BG软件部副总裁柳晓,深圳开鸿数字产业倒退有限公司OpenHarmony社区开发部部长巴延兴、软通能源信息技术(团体)有限公司高级副总裁、鸿湖万联总经理秦张波,江苏润和软件股份有限公司副总裁刘洋,广东九联科技股份有限公司董事长詹启军,深圳优博终端科技有限公司总经理叶瑞权,隆重公布《OpenHarmony 共建地图 2.0》,聚力前行。在《OpenHarmony 打造下一代智能终端操作系统根社区》演讲中,柳晓见分享了深开鸿、润和软件、鸿湖万联、九联科技、开鸿智谷、中科院软件所践行共建共治共享的共建故事。 来自华为、深开鸿、软通能源、润和软件、九联科技、凌睿智捷、东南大学、宁夏图尔科技等公司的开发者以及独立开发者,共计16名开发者,因为别离在社区代码、文档、ISSUE、开发赋能方面做出突出贡献,被凋谢原子开源基金会授予2023年度开源奉献之星。 二、生态停顿1、新增24款,累计已有130个厂家的322款产品通过兼容性测评。 2、OpenHarmony兼容性工作组加入2023凋谢原子寰球开源峰会OpenHarmony我的项目相干流动• OpenHarmony兼容性工作组在2023凋谢原子寰球开源峰会期间召开技术交换会议,通过现场投票的形式通过东软团体成立测试单干核心的申请。• OpenHarmony兼容性工作组在2023凋谢原子寰球开源峰会OpenHarmony展区部署展现硬件产品与利用开发的兼容性技术与成绩。 3、新增24款产品通过兼容性测评 三、社区治理工委会治理:●OpenHarmony平安委员会成立。生态委员会:●截至6月27日,OpenHarmony我的项目群生态委员会成员单位累计43家。同比上月新增2家,教育专委会新增成员单位科大讯飞股份有限公司,公共安全专委会新增公安部第一研究所。技术领导委员会治理:●高校技术俱乐部:6月27日下午,由OpenHarmony我的项目群技术领导委员会和西安电子科技大学独特举办的“西安电子科技大学OpenHarmony技术俱乐部成立典礼暨OpenHarmony TSC专家进校园”流动在西安电子科技大学南校区会议核心B101报告厅圆满举办。西安电子科技大学副校长王泉,OpenHarmony我的项目群技术领导委员会主席陈海波,OpenHarmony我的项目群技术领导委员会委员、中科院软件所副所长、总工程师武延军,西安电子科技大学党委学生工作部部长林波,计算机科学与技术学院(国家示范性软件学院)执行院长崔江涛、党委书记李青山,人工智能学院党委书记公茂果,网络与信息安全学院执行院长李晖,西安电子科技大学共青团团委书记傅超,计算机科学与技术学院副院长李瑞、党委副书记张莹莹,人工智能学院党委副书记高晖,网络与信息安全学院党委副书记杨寒,OpenHarmony生态委员会负责人陶铭,西安电子科技大学副教授兼OpenHarmony技术俱乐部主任王璐缺席本次流动。 西安电子科技大学OpenHarmony技术俱乐部成立典礼 ●OpenHarmony城市技术论坛:6月30日,第三届OpenHarmony城市技术论坛(长沙站)胜利举办,以“机器人技术”为主题,由OpenHarmony我的项目群技术领导委员会主办,湖南大学OpenHarmony俱乐部承办,OpenHarmony我的项目群技术领导委员会——机器人TSG、湖南科技大学和湖南天华科技有限公司协办,蕴含国防科技大学、中国矿业大学、乐聚(深圳)机器人技术有限公司、深圳开鸿数字产业倒退有限公司、上海擎郎智能科技有限公司等单位的7位专家参加。 OpenHarmony城市技术论坛·长沙站 四、技术倒退初夏之际,OpenHarmony 4.0 Beta1版本如期而至。4.0 Beta1版本在3.2 Release版本根底上,持续晋升规范零碎的ArkUI、利用框架、图形媒体等子系统能力,并提供首批API Level 10接口。 作为OpenHarmony 4.0的首个Beta版本,推出了系列新个性。期待社区开发者踊跃体验新个性,奉献智慧与力量,独特促成将来 4.0 Release版本的成熟,亲自参加并见证OpenHarmony 4.0版本的倒退历程。OpenHarmony 4.0 Beta1 Release Noteshttps://gitee.com/openharmony/docs/blob/master/zh-cn/release-... 五、社区活动1、公共流动6月12日,以“OpenHarmony共建凋谢,共享将来”为主题的2023凋谢原子寰球开源峰会OpenHarmony分论坛在北京北人亦创国内会展中心第一报告厅圆满闭幕。凋谢原子开源基金会理事长孙文龙、华为终端BG软件部总裁龚体缺席论坛并致辞,中国工程院院士沈昌祥作宗旨报告,凋谢原子开源基金会TOC副主席郑伟波,OpenHarmony我的项目群工作委员会委员、华为终端BG软件部副总裁柳晓见,OpenHarmony平安委员会主席、浙江大学网络空间平安学院院长任奎,OpenHarmony兼容性工作组组长、华为图形专家黄然等业界精英发表主题演讲。孙文龙代表峰会组委会对到场嘉宾示意热烈欢迎,对前来参会的宽广专家学者、企业界人士长期给予凋谢原子开源基金会的反对表示感谢。目前,超过5100名开发者在OpenHarmony社区奉献了超过一亿行代码,位居国内代码托管平台活跃度指数第一名,社区吸引了超过150多家行业搭档参加社区共建并基于OpenHarmony发展研发。https://mp.weixin.qq.com/s?__biz=MzkzNTIyNTY3Mg==&mid=2247503... 2、搭档流动有中软国内、开鸿智谷、深开鸿共3家单位提报。在第四届西部数字经济博览会、岳麓峰会、长沙智能教育工作坊研修流动、第三十二届哈洽会中,3家单位共举办/参加4场流动。 3、外联流动6月12日,凋谢原子开源大赛OpenHarmony翻新赛Workshop北京站在2023凋谢原子寰球开源峰会OpenHarmony分论坛期间召开。流动邀请了多位技术专家,为宽广开发者传递赛事信息,解读利用翻新技术。OpenHarmony翻新赛由凋谢原子开源基金会发动,OpenHarmony我的项目群工作委员会、鸿湖万联、润开鸿承办,华为、深开鸿、诚迈科技、九联科技协办,单干单位包含开鸿智谷、万里红、新东方智慧教育,面向企业、集体、高校师生等宽广开发者,下设OpenHarmony利用翻新、商显行业、金融行业三大赛题,让开发者基于优良的分布式操作系统进行利用翻新开发。通过学习OpenHarmony,开发出具备创新性、实用性的开源应用软件及全场景OpenHarmony解决方案,助力开源操作系统生态倒退,促成万物互联产业凋敝。https://mp.weixin.qq.com/s?__biz=MzkzNTIyNTY3Mg==&mid=2247503... 6月12日-13日,OpenHarmony社区平安治理Workshop在2023凋谢原子寰球开源峰会期间召开,业界大咖齐聚一堂,汇集产学研用各畛域劣势资源,独特探讨开源产业前景瞻望和行业落地成绩,助力开源倒退。https://mp.weixin.qq.com/s?__biz=MzkzNTIyNTY3Mg==&mid=2247503... ...

July 10, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony社区运营报告2023年5月

本月快讯● 2023年6月11-13日,2023凋谢原子寰球开源峰会行将在北京北人亦创国内会展中心隆重揭幕。2023凋谢原子寰球开源峰会上,OpenAtom OpenHarmony(以下简称“OpenHarmony”)将通过分论坛与展览等形式,展现生态停顿与最新行业落地成绩,揭示OpenHarmony生态倒退新方向,让宽广企业、开发者理解OpenHarmony最新动静,展现OpenHarmony生态新门路。● 5月11日至14日,由公安部主办的第十一届中国国内警用配备博览会(简称“警博会”)在北京首钢园举办,寰球前沿警用配备及尖端技术集中亮相。推动警务挪动办公平安,北京万里红科技有限公司(简称“万里红”)基于OpenHarmony开发的万里红挪动办公利用解决方案亮相警博会。● 5月8-10日,由工业和信息化部、国家广播电视总局、地方广播电视总台、广东省人民政府主办的2023世界超高清视频产业倒退大会在广州越秀国内会展中心隆重举办。作为全球性超高清行业畛域的盛会,本次大会以“超高清视界 高质量倒退”为主题,次要内容包含一场开幕式、一场高峰会、八场主题会及若干场专题会,同时还有超高清视频产业翻新成绩展现。OpenHarmony超高清专委会受邀加入本次超高清大会,广东九联科技股份有限公司(简称“九联科技”)作为OpenHarmony超高清专委会副会长单位,与秘书处(惠州开鸿数字产业倒退有限公司)及其它会员单位,围绕OpenHarmony+超高清展现最新产品研发停顿与利用落地成绩。● 本月为兰州大学、华中科技大学OpenHarmony技术俱乐部举办成立典礼并正式授牌。● 本月新增15款产品通过兼容性测评,累计297款产品通过兼容性测评。 一、代码奉献1. PMC布局共3000+人/月工作量社区共建需要,包含:内核、编译构建&根底库、泛短距通信和定位、利用开发框架、平安根底平台、媒体平台、语言运行时、测试与认证平台、硬件平台、根底利用、三方库、IDE&工具链、Sample&材料、全球化&DFX。 2. 截至2023年5月27日,代码共建组协同华为、深开鸿、润和软件、软通能源、开鸿智谷、九联科技、君正、汇思博、诚迈科技、中科院软件所、中软国内等共建单位锁定2023年共建指标,其中,TOP 10为:● 深开鸿:900+人/月共建工作量;● 润和软件:600+人/月共建工作量;● 软通能源:500+人/月共建工作量;● 开鸿智谷:250+人/月共建工作量;● 九联科技:200+人/月共建工作量;● 君正:200+人/月共建工作量;● 汇思博:100+人/月共建工作量;● 诚迈科技:100+人/月共建工作量;● 中科院软件所:100+人/月共建工作量;● 中软国内:50+人/月共建工作量; 3、本月,华为、深开鸿、软通能源、九联科技等共建单位下列个性进入骨干● ArkUIk框架测试套件● web wpt套件中Reftests套件自动化适配● 温湿度传感器设施驱动● 利用开发案例—Native开发实际● 欠缺WiFi服务异样复原机制● WiFi反对STA模式随机mac接入● 蓝牙BR/EDR根本能力加强● 蓝牙协定栈架构优化:①反对蓝牙服务的动静加载;②profile服务反对个性化配置,反对SNK&SOURCE裁剪 二、生态停顿1、新增15款,累计已有119个厂家的297款产品通过兼容性测评。 2、OpenHarmony兼容性工作组吸纳新成员,减少4位成员● 东软代表李文库针对OpenHarmony北向利用测试服务奉献,通过申请加入兼容性工作组。● 软通代表袁博文针对兼容性测试套件奉献,通过申请加入兼容性工作组。● 华为代表钟小明\余明星针对OpenHarmony保护分支Maintainer工作、兼容性测试套件保护工作,通过申请加入兼容性工作组。 3、新增15款产品通过兼容性测评 三、社区治理工委会治理:● 上海山源电子科技股份有限公司成为OpenHarmony我的项目群C类成员单位。 生态委员会:● 截至5月26日,OpenHarmony我的项目群生态委员会成员单位累计41家。同比上月新增1家,金融领取专委会新增成员单位武汉天喻信息产业股份有限公司。技术领导委员会治理:● 高校技术俱乐部:本月为兰州大学、华中科技大学OpenHarmony技术俱乐部举办成立典礼并正式授牌。兰州大学党委书记马小洁典礼前热情接待了来访专家;华中科技大学副校长于俊清缺席了成立典礼并致辞。本月成立典礼邀请诸多政企领导缺席,包含:甘肃省科技厅二级巡视员梁云升、甘肃省工信厅两化交融处处长杨勇、甘肃省科技厅高新处一级主任科员郭航旭、海丰科技董事长卢建宙、甘肃挪动打算部总经理边柯宝、中国甘肃网总编辑张振宇、甘肃紫光智能交通与控制技术有限公司总经理张德水,读者出版团体有限公司翻新研究院(信息中心)副院长刘磊、九霄鲲鹏总经理卫强等;此外还邀请外校领导参加:兰州交通大学电子与信息工程学院院长闫光芒。 兰州大学OpenHarmony技术俱乐部成立典礼 华中科技大学OpenHarmony技术俱乐部成立典礼 ● 2023年5月27日,OpenHarmony城市技术论坛——武汉站在武汉市国家网络安全人才培养与翻新基地武汉大学新珈楼胜利举办,本次流动由武汉大学OpenHarmony技术俱乐部承办,面向“终端操作系统十大技术挑战方向”,以“操作系统平安与可信”为主题,邀请13位专家学者进行技术报告。 OpenHarmony城市技术论坛·武汉站嘉宾合影 教育工作组:● 5月22日,由凋谢原子开源基金会与OpenHarmony教育工作组组织,大连东软信息学院大学生守业核心(SOVO)反对的主题为“产创交融技术沙龙-开启OpenHarmony之旅!”的凋谢原子校源行专场讲座流动在大连东软信息学研软件园校区A15-103会议室胜利举办。大连东软信息学院翻新守业学院院长田惠怡、计算机与软件学院副院长郑俊生、智能与电子工程学院副院长鞠尔男、计算机与人工智能系副主任贾宁、凋谢原子开源基金会资深参谋郭晧、OpenHarmony教育工作组组长宋懿嬴、OpenHarmony教育工作组公共资源治理小组组长王超及大连东软信息学院四十余名师生独特参加流动。 “产创交融技术沙龙-开启OpenHarmony之旅!”的凋谢原子校源行专场讲座流动合影 四、社区活动1、公共流动2023年6月11-13日,2023凋谢原子寰球开源峰会行将在北京亦创国内会展中心隆重揭幕。2023凋谢原子寰球开源峰会上,OpenHarmony将通过分论坛与展览等形式,展现生态停顿与最新行业落地成绩,揭示OpenHarmony生态倒退新方向,让宽广企业、开发者理解OpenHarmony最新动静,展现OpenHarmony生态新门路。 5月31日,OpenHarmony翻新赛——赛事宣讲会,为你带来超详尽的赛事攻略!https://mp.weixin.qq.com/s?__biz=MzkzNTIyNTY3Mg==&mid=2247503... 2、搭档流动近期搭档流动共举办9场。 3、外联流动近期外联流动共举办2场:5月11日至14日,由公安部主办的第十一届警博会在北京首钢园举办,寰球前沿警用配备及尖端技术集中亮相。推动警务挪动办公平安,万里红基于OpenHarmony开发的万里红挪动办公利用解决方案亮相警博会。https://mp.weixin.qq.com/s?__biz=MzkzNTIyNTY3Mg==&mid=2247503... 5月8-10日,由工业和信息化部、国家广播电视总局、地方广播电视总台、广东省人民政府主办的2023世界超高清视频产业倒退大会在广州越秀国内会展中心隆重举办。作为全球性超高清行业畛域的盛会,本次大会以“超高清视界 高质量倒退”为主题,次要内容包含一场开幕式、一场高峰会、八场主题会及若干场专题会,同时还有超高清视频产业翻新成绩展现。OpenHarmony超高清专委会受邀加入本次超高清大会,九联科技作为OpenHarmony超高清专委会副会长单位,与秘书处(惠州开鸿数字产业倒退有限公司)及其它会员单位,围绕OpenHarmony+超高清展现最新产品研发停顿与利用落地成绩。https://mp.weixin.qq.com/s?__biz=MzkzNTIyNTY3Mg==&mid=2247503... 五、社区及官网经营1、 本月,OpenHarmony在码云平台Gitee指数第一(Gitee指数的评估维度:综合思考代码活跃度、社区活跃度、团队衰弱、影响力、风行趋势)。 截至2023年5月,OpenHarmony社区共有51家共建单位,累计超过5100名贡献者产生18万多个PR,2.1万多个Star,5万多个Fork,55个SIG。 2、 单干社区官网账号公布内容数据汇总截至2023年5月26日,9个单干社区共公布内容(含技术文章、视频教程)2,086篇,累计取得总PV/UV数1,775,689,同比上月增长6%,账号取得粉丝数1,881人,较上月增幅1%。 3、 OpenHarmony社群直播数据截至2023年5月26日,OpenHarmony社群累计发展直播93场,累计观看量43,275,观看人数22,879;其中72场联结各家单干社区直播,累计238场次,观看次数1,175,291;观看人数321,909;共计OpenHarmony直播所有渠道产生观看次数1,218,566、观看人数344,788。 4、 OpenHarmony社群经营数据截至2023年5月26日,社群共沉淀开发者8,403人,累计社群沟通信息11万,累计与开发者沟通3.8万次,累计触达音讯6.9万条。

June 19, 2023 · 1 min · jiezi

关于openharmony:积聚产业发展新动能2023开放原子全球开源峰会-OpenAtom-OpenHarmony-分论坛圆满落幕

6月12日,以“OpenHarmony共建凋谢,共享将来”为主题的2023凋谢原子寰球开源峰会OpenAtom OpenHarmony(以下简称“OpenHarmony”)分论坛在北京北人亦创国内会展中心第一报告厅圆满闭幕。此次论坛群英荟萃,人才会聚,来自产、学、研的各界翘楚1000余人共话开源产业的落地成绩和前景瞻望,助推开源产业全面降级。凋谢原子开源基金会理事长孙文龙、华为终端BG软件部总裁龚体缺席论坛并致辞。  孙文龙理事长代表组委会对到场来宾示意欢送,对前来参会的宽广专家学者、企业界人士长期以来给予凋谢原子开源基金会的反对表示感谢。他示意,目前,超过5100名开发者在OpenHarmony社区奉献了超过一亿行代码,位居国内代码托管平台活跃度指数第一名,社区吸引了超过150多家行业搭档参加社区共建并基于OpenHarmony发展研发。  龚体在致辞中示意,华为作为OpenHarmony开源我的项目的动摇支持者和重要贡献者,有2000多名研发人员长期投入在OpenHarmony技术共建,聚焦底座能力构建和打造,赋能、使能搭档做好发行版和行业终端。  本次分论坛聚焦产业倒退前沿,就产业机会与倒退动静开展探讨。中国工程院院士、信息系统工程专家沈昌祥就开源产业的前景率先发表精彩演讲。他指出,心愿与所有生态搭档一起致力,推动OpenHarmony生态的凋敝与倒退,也心愿更多搭档参加到OpenHarmony开源我的项目中来,独特打造千行百业松软的数字底座, 共创万物互联的新将来。  论坛上,凋谢原子开源基金会携手华为终端有限公司、深圳开鸿数字产业倒退有限公司、江苏润和软件股份有限公司、广东九联科技股份有限公司、软通能源信息技术(团体)有限公司、深圳市优博终端科技有限公司六家“2022年度百人代码奉献单位”代表,联结隆重公布《OpenHarmony 共建地图2.0》,展现2023年度各共建单位建设的技术方向。  在公布典礼中,凋谢原子开源基金会TOC副主席郑伟波示意,凋谢原子开源基金会提倡共建共治共享,而代码共建是集思广益协同奉献的第一步。期待大家基于《OpenHarmony共建地图2.0》踊跃共建。  在社区建设方面,OpenHarmony我的项目群工作委员会委员、华为终端BG软件部副总裁柳晓见向与会嘉宾分享了OpenHarmony携手搭档打造下一代智能终端操作系统根社区的最新成绩与停顿,同时他还邀请两位社区奉献集体——深圳CA产品研发总监梁珍权和Cocos引擎架构师邱国华分享了基于OpenHarmony 3.2 Release在利用生态上的翻新,充沛验证了该版本曾经齐全反对简单带屏设施的利用开发。  OpenHarmony平安委员会主席、浙江大学网络空间平安学院院长任奎解读了OpenHarmony平安委员会的指标和职责、成员构造和平安治理行动指南。OpenHarmony兼容性工作组组长、华为图形专家黄然对OpenHarmony兼容性业务建设与成绩展现进行了解读。  在行业生态环节,加入本次分论坛的业内大咖、出名专家和生态搭档,也在会上阐释了各自的独到见解,分享了以后OpenHarmony在业内的典型落地案例,为开源产业的将来倒退给出了意见和倡议。 深圳开鸿数字产业倒退有限公司综合BG副总裁刘菁在《“一杆”点亮智慧城市建设新范式——基于OpenHarmony的智慧多功能杆实际》的演讲中提出KaihongOS为传统智慧多功能杆注入了新的血液,将城市感知的数据会集到城市“大脑”中,让城市治理有温度、更智慧,便当民生; 南京天奥智能医疗科技有限公司总经理李陶薇在题为《OpenHarmony为医院药品治理平安保驾赋能》的演讲中示意,基于以OpenHarmony为底座的HiHopeOS面向医疗行业的发行版研发的智慧药品治理翻新计划,为智慧医疗畛域构筑了一座平安护城墙,守护医院麻精类非凡药品的智能化高平安精密治理; 深圳市视美泰技术股份有限公司总裁助理兼营销中心总经理龙壤介绍以OpenHarmony为技术底座的新一代SwanLinkOS智能商显解决方案,多场景OpenHarmony智能商显终端利用落地,为操作系统在万物智联时代的倒退贡献力量; 随锐科技团体轮值执行总裁兼首席产品官仝永波认为,基于OpenHarmony零碎软总线的音视频架构以及不同量级的零碎,可从新设计音视频产品,实现分布式治理,解决现有难题;湖南开鸿智谷数字产业倒退有限公司智慧交通副总经理周凯明介绍基于OpenHarmony打造1+1在鸿平台,构筑数字底座,赋能交通公路行业数字化转型降级; 深圳市证通电子股份有限公司OpenHarmony研究院副院长付庆分享如何以OpenHarmony为底座建设数字经济新基础设施,翻新智慧金融畛域组合转账取款、开户贷款等多个性能,通过终端管理系统实现无忧运维; 新东方教育科技团体智慧教育事业部副总经理张蓓示意,OpenHarmony为科技教育和翻新人才培养带来了全新的设想空间,在青少年心里种下技术创新、凋谢生态的种子,便期待着在将来的某一天,由他们开启更智慧、更美妙的万物智联时代。 专家们详解了OpenHarmony行业落地利用的翻新体验和技术当先性,也让业界同仁看到了OpenHarmony赋能千行百业的蓬勃前景。  现场还举办了OpenHarmony 3.2 Release后行示范典礼。目前该版本已在福建联迪商用设施有限公司智能POS终端AxPOS A8S、江苏思行达信息技术有限公司自助业务办理机、江苏润开鸿数字科技有限公司DAYU200开发平台及DAYU210开发平台、鸿湖万联 (江苏) 科技倒退有限公司扬帆系列“技”开发板、芯海科技(深圳)股份有限公司人体成分分析仪 Pomelo P10 、深圳开鸿数字产业倒退有限公司工业平板、广东九联科技股份有限公司边缘计算机ERK101后行实现落地。  此外,在授牌致谢环节,还进行了兼容性授牌、三方库授牌、平安委员会授牌。本次分论坛特地举办了凋谢原子开源大赛OpenHarmony翻新赛Workshop北京站和OpenHarmony社区平安治理Workshop,邀请OpenHarmony技术专家和平安领域专家到场,别离围绕OpenHarmony翻新赛和OpenHarmony平安治理解决方案,与现场嘉宾和与会开发者们独特作进一步的探讨和交换。  在此次分论坛的举办过程中,OpenHarmony展区也引起了业界、媒体及全社会的宽泛关注。该展区以场景化、交互化的形式,全链路、全方位地展示了OpenHarmony在芯片、开发板、三方库、商用设施、行业利用等方面的阶段性成绩,涵盖智慧金融、超高清、智慧教育、智慧交通、智慧电力、数字政府、公共安全、智慧医疗等诸多畛域,进一步凸显OpenHarmony赋能高质量倒退的实际成绩和良好态势。  以后,OpenHarmony社区已成为“下一代智能终端操作系统根社区”,打造智能终端操作系统作为数字经济的底座,胜利的关键在于生态倒退。随着国家继续加大对开源的投入以及社区共建队伍一直壮大,OpenHarmony将携手更多生态搭档,共筑万物互联的底座,使能千行百业的数字化转型。 

June 12, 2023 · 1 min · jiezi

关于openharmony:开源共建下一代智能终端操作系统根社区-OpenHarmony携手伙伴聚力前行

6月12日,2023凋谢原子寰球开源峰会OpenHarmony 分论坛(以下简称“分论坛”)在北京胜利召开。OpenHarmony共建单位、生态搭档齐聚一堂,独特展示了OpenHarmony在千行百业的落地成绩、凋敝生态与最新技术停顿。OpenHarmony我的项目群工作委员会委员、华为终端BG软件部副总裁柳晓见受邀缺席分论坛,向与会嘉宾分享了OpenHarmony携手搭档打造下一代智能终端操作系统根社区的最新成绩与停顿。 OpenHarmony社区凋敝倒退 已成为下一代智能终端操作系统根社区 柳晓见首先介绍了OpenHarmony社区的最新进展,他提到,OpenHarmony开源两年多以来,版本疾速迭代,从最后只反对轻量无屏设施,到现在反对简单规范带屏设施,其零碎能力不断完善。生态方面,OpenHarmony已有超过150家搭档率先为OpenHarmony生态做出奉献,累计17家厂商31个软件发行版通过兼容性测评,超过140款商业设施落地,笼罩教育、金融、交通、数字政务、工业等多个行业。有51家共建单位、5100多位共建者参加OpenHarmony代码奉献,累计奉献代码1亿多行,位居Gitee活跃度指数第一。 同时,OpenHarmony踊跃在各行各业推动标准规范,让OpenHarmony成为行业优选。目前已成立8个行业标准组织、公布10部白皮书/规范、推出7个测试/认证标准和5个规范利用,笼罩政务、智慧城市、教育、金融/电信、广电、能源/制作、交通等行业。 人才培养方面,OpenHarmony通过产学我的项目单干、课程开发与认证、师资培训等积极参与高校人才共建,助力高校人才培养。三年以来累计单干200多所高校,产学合作项目笼罩超100所高校,为人才培养添砖加瓦。产业政策上,深圳、福州、惠州、北京、南京等城市近期也相继出台了相干政策反对OpenHarmony倒退,从供应侧、需要侧、生态撑持三方面推动生态建设。 “OpenHarmony生态继续凋敝,已成为下一代智能终端操作系统根社区,”柳晓见示意,“根深能力叶茂,只有向下成长的根系扎的足够牢,才有无穷的向上的力量,长出使能千行百业的参天大树。” 共建共治共享 OpenHarmony携手搭档聚力前行 共建共治共享是开源的翻新机制,也是OpenHarmony根社区不断前进的基石。从诞生之初,OpenHarmony就遵循着“共建、共治、共享”的准则,摸索“多方共建,携手共赢”的形式共建OpenHarmony技术代码。 2022年7月,在2022凋谢原子寰球开源峰会上,凋谢原子开源基金会秘书长公布《OpenHarmony共建地图1.0》,在该年度有51家共建单位、超过5100名共建者投入代码建设,共计产出代码2400多万行。其中,华为、深开鸿、软通能源、润和软件、九联科技和优博终端六家单位继续投入人力参加代码共建,每家均有超过100位开发者提交代码,成为“OpenHarmony百人代码奉献单位”。 OpenHarmony开源社区所获得的成绩,离不开一批优良企业与机构的踊跃奉献。现场,柳晓见还分享了深开鸿、润和软件、鸿湖万联、九联科技、开鸿智谷、中科院软件所在共建OpenHarmony过程中的故事。他们积极参与OpenHarmony社区共建,在为OpenHarmony倒退做出卓越贡献的同时,本身也在共建过程中获益良多。 为了感激过来一年在社区代码、社区文档、社区ISSUE和开发者赋能方面做出突出贡献的开发者,来自华为、深开鸿、软通能源、润和软件、九联科技、凌睿智捷、东南大学、宁夏图尔科技等公司的16名开发者,被凋谢原子开源基金会授予2023年度开源奉献之星。 全面反对简单带屏设施和利用 更多搭档实现OpenHarmony开发与适配 在共建搭档和多方力量的继续致力下,OpenHarmony零碎能力进一步欠缺,已全面反对简单带屏设施和利用开发。分论坛上,深圳市电子商务平安证书治理有限公司(以下简称“深圳CA”)研发总监梁珍权以及Cocos引擎架构师邱国华分享了他们基于OpenHarmony最新版本的开发与适配成绩。 梁珍权介绍道,深圳CA 2人月即实现挪动端平安明码利用模块在OpenHarmony 3.2 Release 上的移植适配,为利用开发者和零碎集成商提供一套全栈明码平安套件,让他们在明码评估和明码革新等场景中,便捷并非法合规地实现基于数字证书的商用明码业务平安降级,满足电子政务侧身份认证、数据安全、签名验签、电子印章、电子签章和网络传输平安等全栈业务利用平安需要,共筑OpenHarmony利用平安信赖生态。 邱国华示意,目前Cocos 2D-X曾经实现OpenHarmony 3.2 Release的适配,在LOD场景、反射探针场景、光照场景、Sponza场景均有良好的性能体现,同时基于Cocos游戏引擎打造的《鹰击长空》、《开心消消乐》、《幽灵射手》等游戏也胜利移植到OpenHarmony。将来,Cocos将一直晋升性能,反对更多、更简单的利用场景,从游戏畛域到非游戏畛域,共建OpenHarmony生态。 最初,柳晓见示意接下来OpenHarmony还将在利用开发、零碎能力、芯片反对等方面进一步演进,重点晋升平安框架能力。期待更多搭档退出OpenHarmony共建中来,聚力前行,一起构筑下一代智能终端操作系统根社区。

June 12, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony-40-Beta1发布邀您体验

初夏之际,OpenAtom OpenHarmony(简称“OpenHarmony”) 4.0 Beta1版本如期而至。4.0 Beta1版本在3.2 Release版本根底上,持续晋升规范零碎的ArkUI、利用框架、图形媒体等子系统能力,并提供首批API Level 10接口。 作为OpenHarmony 4.0的首个Beta版本,推出了系列新个性。期待社区开发者踊跃体验新个性,奉献智慧与力量,独特促成将来 4.0 Release版本的成熟,亲自参加并见证OpenHarmony 4.0版本的倒退历程。 下文介绍下OpenHarmony 4.0 Beta1版本局部新个性。想理解该版本的残缺个性信息,请您返回OpenHarmony 4.0 Beta1 Release Notes理解。生态搭档商用设施或软件发行版通过兼容性测评请应用OpenHarmony 3.2 Release版本。 OpenHarmony 4.0 Beta1 Release Noteshttps://gitee.com/openharmony/docs/blob/master/zh-cn/release-... 利用框架1. Extension能力最小化治理,反对各类Extension依据业务场景凋谢API,避免敏感API的调用。2. 反对数据或文件的URI长期受权,利用能够把本人文件的读写权限受权给其余利用。3. 反对了UIExtension机制,用于实现有界面的Extension,UIExtension的界面能够嵌入到调用方利用的窗口上显示。目前已构建UIExtension根底能力:● 反对对立的UIExtension模板,接口含意清晰,服务开发标准化。● 反对原生默认的Extension界面展现,不便开发者疾速实现Extension性能,同时也提供界面定制能力。4. 反对原子化服务的分享,利用开发者能够应用UIAbility组件提供的办法,设置要分享的数据。用户能够通过分享框把原子化服务和卡片分享到另外一台终端设备。 ArkUI1. 组件属性变动反对过渡动效,如Divider组件配置宰割条色彩和色彩属性时应用过渡动效,晋升组件属性变动时的用户体验。2. Text/Image/Video/ListItem/GridItem组件反对用户长按组件默认进入拖拽行为,反对开发者敞开默认拖拽,晋升开发者开发效率。3. 自定义弹框反对蒙层色彩、弹出动画自定义(如容许开发者设置弹出动画成果的相干参数),加强弹框的开发者自定义能力。4. 反对文本组件中返回输出字符串宽高的能力,用于字符串折叠显示时,鼠标悬浮可弹出字符串残缺提示框。 利用包治理1. 反对利用包不解压装置的个性,优化了系统启动性能和利用装置性能。2. 反对三方生态利用应用零碎利用提供的共享包能力,三方利用不须要在本身的安装包里集成相干内容(包含代码、资源以及.so文件等),从而达到缩小生态利用的集成老本以及更新老本的目标。 分布式数据管理1. 支持系统利用通过数据管理服务代理静默拜访其余零碎利用的DataShareExtension数据,反对通过数据管理服务代理拜访Single模式利用DataShareExtension的数据。2. DataShare客户端提供按URI前缀订阅DataShareExtension数据变动的能力,被订阅的URI前缀下任何DataShareExtension数据发生变化都会告诉DataShare客户端。3. 新增对立数据管理框架(Unified Data Management Framework, UDMF),反对数据标准化模型、设施内数据拖拽、UDMF数据存储适配、权限治理、生命周期治理。 文件治理1. 反对文件分类视图治理能力,图库等利用以相册形式治理媒体文件(图片、视频无需关注具体存储地位),提供相册内增加、移除文件等性能不波及具体的FileIO行为。API接口待后续版本凋谢。2. 提供加强的FileIO拜访能力,反对randomAccessFile、moveDir、copyDir、watcher能力。3. 提供基于URI的文件长期受权拜访及勾销受权能力,反对文件的跨利用本地受权或跨设施受权。 图形显示1. 反对组件自绘制内容的属性动画,反对组件呈现隐没转场动画。2. 对对立渲染模式进行了性能优化,蕴含IPC性能优化(如通过共享内存形式传递渲染资源升高IPC通信量)、反对控件级别遮挡剔除仅需渲染下层控件升高GPU渲染工作量,使能硬件合成器进步合成能效等。3. 图片编解码反对SVG解码,GIF格局欠缺参数解析,如总帧数、工夫距离等。 窗口1. 反对监听窗口的获焦状态:之前版本利用开发者仅能够监听WindowStage的获焦状态,但针对零碎窗口和利用子窗口的获焦事件无奈监听。当初,利用开发者能够通过在window上注册windowEvent的形式,监听单个窗口的获焦、失焦和显示暗藏状态。2. 反对将子窗口z轴程序调整到顶层:之前版本对于利用中创立的多个子窗口,零碎总是将最初显示窗口显示在所有子窗口的最顶层。同时,以后零碎中默认会将用户触摸或者鼠标点击的窗口晋升至所有子窗口的最顶层。当初,通过window对象的raiseToAppTop办法,利用开发者能够自行将某个子窗口调整至WindowStage多个子窗中的最顶层。3. 重构沉迷式实现形式,优化利用关上、退出、跳转下的动画成果:之前版本,利用关上时全屏利用窗口大小默认不蕴含状态栏和导航栏的区域,除非利用调用沉迷式接口(通过setWindowLayoutFullScreen或者setSystemBarEnable)。沉迷式利用在关上的过程中调用上述接口,会导致关上动画呈现跳变,影响利用关上和利用间跳转动画的体验。新版本上,无论是否设置沉迷式显示,全屏显示的利用窗口大小都蕴含状态栏和导航栏的区域,而非沉迷式利用的状态栏、导航栏避让会通过ArkUI限度利用显示区域实现。 媒体音频能力1. 反对通过native接口进行音频播放和录制。2. 反对查问或监听以后优先级最高的播放设施。3. 反对音频焦点,利用播放音频时无需手动申请焦点,零碎会在后盾主动申请焦点,并主动执行焦点策略(如暂停、淡出、淡出复原等);利用仅须要注册焦点事件监听函数,以接管焦点事件并更新状态,如暂停时进行进度条。 播控框架1. 反对媒体提供方和管制方之间传递自定义媒体信息,利用可扩大媒体内容展现形式,如媒体管制方可要求媒体提供方按非凡模式显示歌曲歌词。2. 反对媒体播放列表的框架能力,媒体提供方提供播放列表内容,媒体管制方获取播放列表内容并能够抉择任一媒体内容进行播放。3. 反对播放历史记录的框架能力,媒体会话框架提供查问历史播放利用的列表,列表项按播放先后顺序排序(蕴含以后播放的和已退出的利用)。 媒体播放1. 反对HLS直播以及基于datasource的流式播放能力、反对H.265视频硬解播放能力。2. 反对播放音效、音频属性设置,反对带旋转角度视频的主动旋转播放。3. 反对多音轨获取与切换、反对外挂字幕设置与切换。 相机1. 欠缺ArkTS API的错误码和异样解决机制,使开发者能够通过查问错误码定位错误信息。2. 反对前置预览镜像能力,默认状况下,前置预览画面呈镜像状态。3. 不同相机利用应用同一个摄像头场景下,相机框架具备优先级管控和互斥策略。

June 8, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony-32-Release新特性解读之驱动HCS

OpenAtom OpenHarmony(以下简称“OpenHarmony”)开源社区,在往年4月正式公布了OpenHarmony 3.2 Release版本,规范零碎能力进一步欠缺,晋升了零碎的整体性能、稳定性和安全性。此次版本对于驱动也提供了一些新的个性,极大的不便了驱动开发工作。其中针对HCS文件开发提供新的开发思路,本文就简略介绍一下相干内容。 1 、HCS宏式解析1.1 HCS概述HCS(HDF Configuration Source)是HDF驱动框架的配置形容源码,内容以Key-Value为次要模式。它实现了配置代码与驱动代码解耦,便于开发者进行配置管理。 HC-GEN(HDF Configuration Generator)是HCS配置转换工具,能够将HDF配置文件转换为软件可读取的文件格式: ● 在弱性能环境中,转换为配置树源码或配置树宏定义,驱动可间接调用C代码或宏式APIs获取配置。● 在高性能环境中,转换为HCB(HDF Configuration Binary)二进制文件,驱动可应用HDF框架提供的配置解析接口获取配置。 图1 配置应用流程图 HCS通过HC-GEN编译生成HCB文件,HDF驱动框架中的HCS Parser模块会从HCB文件中重建配置树,HDF驱动模块应用HCS Parser提供的配置读取接口获取配置内容。 1.2 HCS宏式解析个性HCS宏式解析次要是为了反对Mini类零碎设施,是一种为Mini零碎提供极小资源占用的HCS配置管理计划。之前的计划HCS文件实现编译之后会生成独立的二进制文件。在宏式解析之后生成一个代码文件,能够和驱动代码一起编译,这样就节俭ROM空间,减少参数调用效率。 极致性能:● 资源占用相比二进制解析升高50%● 解析在编译阶段实现,运行效率晋升70% 开发敌对:● 提供了实用于小型设施驱动软硬件解耦计划● 性能齐备,反对节点和属性的查问、遍历、判断等操作 HCS宏式解析性能的利用,极大的不便了开发者对于不同设施,雷同驱动的移植适配工作,使得多场景、多功能Mini类零碎设施的利用成为事实。 2 、HCS可视化编辑器VScode提供hcsView扩大工具,反对HCS文件的导入、编译、导出性能。编译器工具的推广,很好的不便了HCS文件的适配工作。 图2 HCS配置可视化编辑 ● GUI界面可视化编辑,显示直观,操作敌对● 谬误实时提醒,升高HCS配置办法学习老本● 实现语法查看,HCS文件0谬误 3 、HDF设施驱动开发模板代码生成驱动模板智能化生成,次要利用于内核态驱动开发场景。内核态驱动代码对于不同的设施类型,然而都具备类似的驱动架构框架。对于这部分雷同的反复代码,能够通过智能化自动化生成,不便开发者的调试工作,缩小不必要的反复工作。创立模块名称,通过IDE提供的工具间接生成一个模板。次要包含以下方面: 图3 HDF驱动模板主动生成 驱动模板:开发具体驱动代码;配置模板:hcs模板根本字段生成实现;编译模板:gn文件自动化生成。整体的驱动框架代码主动生成,缩小重复劳动。 4 、总结OpenHarmony 3.2 Release版本驱动框架在原来的HDF架构根底上进行了细化,新增HCS宏式解析,使得零碎ROM空间失去进一步的节俭,减少参数调用效率;新增HCS可视化编辑器,提供hcsView扩大工具,极大的进步了HCS编译效率,升高了门槛,缩小了错误率;新增HDF驱动代码模板自动化生成,减少内核驱动代码的开发效率,缩小重复劳动。

May 31, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony创新赛-赛事宣讲会日期重磅官宣为你带来超详尽的赛事攻略

最近接到很多小伙伴私信发问,比方如何报名凋谢原子开源大赛OpenAtom OpenHarmony(简称:"OpenHarmony")翻新赛?有哪些赛题能够报名参赛?当初,赛事宣讲会来啦~ 5月31日,14:30--16:30,关注OpenHarmony公众号直播,带你理解超详尽的翻新赛报名攻略!

May 25, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony支持HDMI接口声卡适配说明

高清多媒体接口(High Definition Multimedia Interface,HDMI  )是一种全数字化视频和声音发送接口,能够发送未压缩的音频及视频信号。HDMI可用于机顶盒、DVD播放机、集体计算机、电视、游戏主机、综合扩大机、数字音响与电视机等设施。HDMI能够同时发送音频和视频信号,因为音频和视频信号采纳同一条线材,大大简化零碎线路的装置难度。这块是百度百科对HDMI的简略介绍,咱们再看看HDMI不同版本对音频的反对状况: 以后咱们应用最多的是2.0版本,本文介绍了OpenHarmony零碎反对HDMI声卡的适配过程,带有HDMI声卡的设施包含电视、投影仪和一些带有音响的显示器。 1 性能形容OpenHarmony零碎中音频系统应用ADM框架,上面是ADM框架的组成: ADM框架是基于HDF零碎框架开发,Card Manager是用来治理多个声卡链表,Controller是声卡的管制模块蕴含了音量、静音、通路抉择等管制性能。 Audio Control Dispath是管制性能的中转站负责接管HDI下发的管制命令和将管制命令转发给各个声卡组件。Audio Stream Dispatch是数据流的中转站,播放过程中负责接管HDI的数据流,在录音过程中负责上传声卡的录音数据流。 Run Time Device中包含的这些模块就是一个声卡工作须要的驱动服务。其中codec编解码模块驱动服务、dai数字音频接口驱动服务和platform片上零碎也就是DMA模块驱动服务是大多数声卡所必须的。 HDMI声卡和其余声卡一样由三个模块组成codec编解码模块、dai数字音频接口和platform片上零碎也就是DMA模块。HDMI的codec是集成在HDMI转换芯片外部的咱们只须要将PCM音频流给到HDMI转换芯片就能够。DAI这块应用的是I2S总线连贯HDMI芯片和platform。要实现对HDMI声卡的反对,就须要将这几个模块的驱动注册到ADM框架中。 本文基于3月1日的OpenHarmony master分支进行介绍。基于yangfan平台介绍,如适配其余平台相干配置依据具体平台进行批改。 OpenHarmony零碎反对HDMI声卡的插拔辨认,反对HDMI声卡的播放性能,包含启动、进行、暂停、复原性能。 2 筹备工作2.1 查问物理连贯 这是一个HDMI设施模块的逻辑试图,图中能够看到音频数据能够通过两种接口I2S或者SPIDIF将音频数据传给HDMI设施,此处咱们应用的是I2S总线。 首先须要查看芯片手册HDMI模块和SOC是如何连贯的,找到音频数据传输相应的I2S总线,这块是更具rk3568芯片查到的数据,I2S0连贯的是HDMI。 2.2 查问寄存器地址因为咱们应用I2S总线就要对其进行配置所以咱们须要找到I2S总线的基地址和I2S总线的寄存器阐明。查看芯片手册找到I2S总线对应的寄存器基地址。 3 代码介绍HDMI的驱动codec的代码ADM框架中曾经实现了,咱们只须要依据不同的单板平台批改平台上面的配置文件。Dai和platform的驱动代码须要依据各自平台自行开发。yangfan开发板Dai和platform驱动代码门路在device\board\isoftstone\yangfan\kernel\hdf\drivers\audio上面的dai和soc目录上面。 波及到的配置文件如下:vendor/isoftstone/yangfan/hdf_config/khdf/audio$ tree ├── audio_config.hcs // 此配置文件配置声卡信息├── codec_config.hcs // 此配置文件配置codec信息├── dai_config.hcs // 此配置文件配置dai信息└── dma_config.hcs // 此配置文件配置platform信息vendor/isoftstone/yangfan/hdf_config/khdf/device_info/device_info.hcs //此配置文件配置声卡驱动服务信息批改波及的代码仓:device_board_hihope、vendor_isoftstone和kernel_linux_config 4 构建开关OpenHarmony零碎要反对HDMI声卡首先要关上构建开关:在文件kernel/linux/config/linux-5.10/arch/arm64/configs/rockchip_standard_defconfig增加:CONFIG_DRIVERS_HDF_AUDIO_HDMI=y 5 性能配置HCS(HDF Configuration Source)是HDF驱动框架的配置形容源码,内容以Key-Value为次要模式。它实现了配置代码与驱动代码解耦,便于开发者进行配置管理。 5.1 配置文件:device_info.hcs 增加hdmi声卡节点信息。文件门路:vendor/isoftstone/yangfan/hdf_config/khdf/device_info/HDMI声卡插入后零碎会依据此处配置的声卡节点加载HDMI声卡驱动。       audio :: host { hostName = "audio_host"; priority = 110; device_dai :: device {... device_hdmi :: deviceNode { policy = 1; priority = 50; preload = 0; permission = 0666; moduleName = "DAI_RK3568"; serviceName = "hdmi_dai_service"; deviceMatchAttr = "hdf_hdmi_dai_driver"; } } device_codec :: device {... device_hdmi :: deviceNode { policy = 1; priority = 50; preload = 0; permission = 0666; moduleName = "AUDIO_HDMI_CODEC"; serviceName = "codec_service_1"; deviceMatchAttr = "hdf_codec_driver_1"; }... }... device_dma :: device {... device_hdmi :: deviceNode { policy = 1; priority = 50; preload = 0; permission = 0666; moduleName = "DMA_RK3568"; serviceName = "hdmi_dma_service_0"; deviceMatchAttr = "hdf_hdmi_dma_driver"; }... } device_audio :: device {... device_hdmi :: deviceNode { policy = 2; priority = 60; preload = 2; permission = 0666; moduleName = "HDF_AUDIO"; deviceMatchAttr = "hdf_audio_driver_1"; serviceName = "hdf_audio_codec_hdmi_dev0"; }... }... }moduleName 配置组件名称,和驱动代码中的moduleName绝对应,零碎会依据此名称加载驱动。deviceMatchAttr公有配置的属性名称,依据此名称能够找到相应的公有配置。serviceName驱动服务名称,依据此名称能够应用对应的驱动。preload 配置加载形式,2为动静加载,当HDMI声卡插入时加载HDMI声卡驱动。此文件中首先配置了文件首先先配置了HDMI的dai、codec和dma驱动服务,最初配置了HDMI声卡设施。 ...

May 23, 2023 · 4 min · jiezi

关于openharmony:OpenHarmony社区运营报告2023年4月

本月快讯• 2023年4月9日,OpenAtom OpenHarmony(以下简称“OpenHarmony”)3.2 Release新版本公布。相比一年前的OpenHarmony 3.1 Release版本,新版本的零碎能力、零碎整体性能、稳定性和安全性都进一步失去晋升和欠缺;OpenHarmony 3.2 Release版本为利用开发而生,在零碎能力、开发工具和API、硬件调测等将为开发者带来全新体验!• 4月19日,以“开源正过后,共赢新将来”为主题的凋谢原子开源基金会OpenHarmony开发者大会2023胜利举办。• 随着OpenHarmony利用开发能力的逐步完善和丰盛,《开心消消乐》胜利实现OpenHarmony平台移植。• 4月27日西安电子科技大学正式退出OpenHarmony高校技术俱乐部;此外,本月为北京理工大学、北京邮电大学、大连理工大学3所高校技术俱乐部举办成立典礼并正式授牌。• 4月16日在上海黄大年茶思屋胜利举办第一届OpenHarmony城市技术技术论坛(上海站)。• 本月新增21款产品通过兼容性测评,累计282款产品通过兼容性测评。• 3月30日至31日,第二十五届中国高速公路信息化大会在福建福州海峡国内会展中心隆重召开。在30日下午由华为举办的智慧高速建设与倒退论坛上,华为联结搭档公布了包含基于OpenHarmony打造的在鸿控制器等在内的泛滥智慧公路新产品和解决方案,助力高速公路实现更多利用场景的智慧化降级革新。 一、代码奉献1、PMC布局共3000+人/月工作量社区共建需要,包含:内核、编译构建&根底库、泛短距通信和定位、利用开发框架、平安根底平台、媒体平台、语言运行时、测试与认证平台、硬件平台、根底利用、三方库、IDE&工具链、Sample&材料、全球化&DFX。 2、截至2023年4月27日,代码共建组协同华为、深开鸿、润和软件、软通能源、开鸿智谷、九联科技、君正、汇思博、诚迈科技、中科院软件所、中软国内等共建单位锁定2023年共建指标,如下:• 深开鸿:700+人/月共建工作量;• 润和软件:600+人/月共建工作量;• 软通能源:500+人/月共建工作量;• 开鸿智谷:250+人/月共建工作量;• 九联科技:200+人/月共建工作量;• 君正:200+人/月共建工作量;• 汇思博:100+人/月共建工作量;• 诚迈科技:100+人/月共建工作量;• 中科院软件所:100+人/月共建工作量;• 中软国内:50+人/月共建工作量; 3、4月19日,在“OpenHarmony开发者大会2023”的主论坛环节,隆重公布了工作委员会为华为、深开鸿、润和软件、软通能源、九联科技、优博终端六家《百人代码奉献单位》拍摄的宣传片,致谢每一家代码共建单位及开发者。 基金会理事长致谢六家《百人代码奉献单位》 《百人代码奉献单位》宣传片 二、生态停顿1、新增21款,累计已有112个厂家的282款产品通过兼容性测评。 2、OpenHarmony兼容性工作组专家参加2023凋谢原子开源基金会OpenHarmony开发者大会OpenHarmony兼容性工作组专家在OpenHarmony开发者大会的开发工具分论坛进行主题《OpenHarmony利用测试服务摸索与实际》议题分享,重点介绍:• OpenHarmony利用品质要求;• OpenHarmony 利用测试服务; 3、新增21款产品通过兼容性测评(2023年3月26日 - 4月25日) 三、社区治理工委会治理:• 诚迈科技成为OpenHarmony我的项目群B类成员单位。• 孔皆智能成为OpenHarmony我的项目群C类成员单位。 生态委员会:• 九联科技成为OpenHarmony我的项目群生态委员会委员单位。截至4月26日,OpenHarmony我的项目群生态委员会成员单位累计40家。新设立医疗衰弱专委会,新增成员单位江苏润开鸿数字科技有限公司。 技术领导委员会治理:• 高校技术俱乐部:西安电子科技大学正式退出OpenHarmony高校技术俱乐部,本月为北京理工大学、北京邮电大学、大连理工大学3所高校技术俱乐部举办成立典礼并正式授牌。北京理工大学OpenHarmony技术俱乐部成立典礼 北京邮电大学OpenHarmony技术俱乐部成立典礼 大连理工大学OpenHarmony技术俱乐部成立典礼 • OpenHarmony城市技术技术论坛:4月16日在上海黄大年茶思屋胜利举办第一届OpenHarmony城市技术论坛(上海站)OpenHarmony城市技术论坛(上海站) 教育工作组:• 教育工作组作为反对单位参加琼粤港澳深空探海科普嘉年华——中国航天日流动。来自粤港澳大湾区、宝鸡市、温州市、大连市等多个城市的科技专家与迷信老师,在流动中的“深空对话探海”科技翻新教育研讨会上,聚焦开源航天技术与科教产学研深度交融,在“云端”围绕“OpenHarmony探秘火星之旅”、“高校OpenHarmony教育摸索”等内容开展了深度的探讨与交换。 四、技术倒退OpenHarmony 3.2 Release版本带来了泛滥的新个性,使规范零碎能力进一步欠缺。采纳ArkTS语言+Stage利用模型进行大型利用、原子化服务开发;ArkCompiler继续优化,提供Taskpool机制晋升利用运行性能;ArkUI组件能力一直加强,强化图形渲染能力和系统安全能力,丰盛分布式业务开发能力;媒体、电话、通信、Web、平安、调测能力进一步晋升;引入AI框架,HDF外设模型失去进一步丰盛。另外,在OpenHarmony 3.1 Release版本的根底上进一步晋升零碎的整体性能、稳定性和安全性。同时,该版本还提供了API Level 9稳固接口。对于新版本的更多新个性,请您返回OpenHarmony 3.2 Release Notes理解详细信息。 https://mp.weixin.qq.com/s?__biz=MzkzNTIyNTY3Mg==&mid=2247502... 五、社区活动1、公共流动4月19日,以“开源正过后,共赢新将来”为主题的凋谢原子开源基金会OpenHarmony开发者大会2023(以下简称“大会”)胜利举办。 本次大会由凋谢原子开源基金会领导,OpenHarmony我的项目群工作委员会主办,华为、开鸿智谷、万里红、深开鸿、诚迈科技、九联科技、润开鸿、鸿湖万联、优博终端、奥思维等单位独特单干反对。大会现场,来自凋谢原子开源基金会和OpenHarmony我的项目群的领导与专家,以及共建单位、行业搭档和社区开发者们共聚一堂,见证了OpenHarmony 3.2 Release版本的公布,解读了新版本技术个性,分享了搭档的基于OpenHarmony的开发实际、社区生态停顿以及行业发行版和解决方案等方面的落地成绩。https://mp.weixin.qq.com/s?__biz=MzkzNTIyNTY3Mg==&mid=2247502... 4月19日,凋谢原子开源大赛OpenHarmony翻新赛公布。本次大赛由凋谢原子开源基金会发动,OpenHarmony我的项目群工作委员会、鸿湖万联及润开鸿承办,华为、深开鸿、开鸿智谷、诚迈科技、九联科技协办,单干单位包含万里红,新东方智慧教育,是凋谢原子开源大赛下设的翻新赛道,面向宽广开发者设OpenHarmony利用翻新赛题以及各行业赛题,聚焦OpenHarmony利用开发技术,打造竞技交换赛事,旨在进步开发者的入手实际能力以及使用新技术的翻新发明能力。https://mp.weixin.qq.com/s?__biz=MzkzNTIyNTY3Mg==&mid=2247503... 2023年OpenHarmony开源开发者成长打算常识赋能直播将聚焦北向利用开发,为了让开发者更好地理解北向利用开发技术,常识赋能直播第十期特推出DAYU200开发入门的系列直播课程,资深北向技术专家徐建国老师会在直播课上同步实操演练,教你手把手入门OpenHarmony北向技术利用开发,帮忙开发者们能够在常识赋能直播间学习更多、播种更多,在OpenHarmony畛域奉献本人的开源成绩,一起独特成长。 https://mp.weixin.qq.com/s?__biz=MzkzNTIyNTY3Mg==&mid=2247502... 2、搭档流动近期搭档流动共举办8场。 3月30日至31日,第二十五届中国高速公路信息化大会在福建福州海峡国内会展中心隆重召开,本届大会以“翻新﹒交融﹒高质量倒退”为主题,深入探讨了高速公路信息化布局、设计、建设、治理、服务等翻新倒退及新一代信息技术在高速公路利用与倒退等议题。在30日下午由华为举办的智慧高速建设与倒退论坛上,华为联结搭档公布了包含基于OpenHarmony打造的在鸿控制器等在内的泛滥智慧公路新产品和解决方案,助力高速公路实现更多利用场景的智慧化降级革新。 https://mp.weixin.qq.com/s?__biz=MzkzNTIyNTY3Mg==&mid=2247502... 3、外联流动近期外联流动共举办1场:#世界读书日#《科技引领旧式浏览》,江苏润开鸿数字科技有限公司生态技术总监、OpenHarmony龙芯架构SIG组长连志安参加分享。 六、社区及官网经营1、本月,OpenHarmony在码云平台Gitee指数第一(Gitee指数的评估维度:综合思考代码活跃度、社区活跃度、团队衰弱、影响力、风行趋势)。 2023年4月,OpenHarmony社区共有51家共建单位,累计超过5100名贡献者产生超过14万个PR,超过2.1万个Star,超过4.4万个Fork,52个SIG。 2、 单干社区官网账号公布内容数据汇总截至2023年4月26日,9个单干社区共公布内容(含技术文章、视频教程)1,998篇,累计取得总PV/UV数1,667,345,同比上月增长10%,账号取得粉丝数1,836人,较上月增幅3%。 3、 OpenHarmony社群直播数据截至2023年4月26日,OpenHarmony社群累计发展直播88场,累计观看量41,819,观看人数22,156;其中68场联结各家单干社区直播,累计223场次,观看次数1,159,248;观看人数310,798;共计OpenHarmony直播所有渠道产生观看次数1,201,067、观看人数332,954。 4、 OpenHarmony社群经营数据截至2023年4月26日,社群共沉淀开发者8,365人,累计社群沟通信息11万,累计与开发者沟通3.7万次,累计触达音讯6.8万条。 往期回顾OpenHarmony社区经营报告(2023年3月)OpenHarmony社区经营报告(2023年2月)

May 22, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony-Docker移植实践

Docker简介从操作系统诞生之日起,虚拟化技术就一直的演进与倒退,联合目前云原生的倒退态势,容器无疑是其中的重要一环。 Docker是一个开源的软件我的项目,能够在Linux操作系统上提供一层额定的形象,让用户程序部署在一个绝对隔离的运行环境,并提供主动管理机制。 须要额定指出的是,Docker并不等于容器(containers),Docker只是容器的一种,其余品种的容器还有Kata container,Rocket container等。 编译环境搭建筹备一个能够运行Docker的虚拟机操作系统,举荐ubuntu或者openEuler的发行版。 搭建环境[1]:在ubuntu虚拟机上执行以下步骤,下载OpenAtom OpenHarmony(简称“OpenHarmony”)的源码并部署Docker编译环境。 1、装置gitee repo工具[2] mkdir ~/bincurl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o ~/bin/repo chmod a+x ~/bin/repopip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests2、获取OpenHarmony源码(1)在ubuntu虚拟机上创立源码目录: mkdir /home/openharmonycd /home/openharmory(2)应用repo命令获取OpenHarmony v3.2 release源码: repo init -u git@gitee.com:openharmony/manifest.git -b OpenHarmony-3.2-Release --no-repo-verifyrepo sync -crepo forall -c 'git lfs pull'以上步骤实现后,能够获取到OpenHarmony编译所需的残缺的源码,代码目录构造如下图所示: 3、获取Docker编译环境独立Docker编译环境,实用于编译轻量和小型零碎/规范零碎.[3] (1)获取OpenHarmony Docker编译镜像 docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0此Docker编译环境较大,请急躁期待下载实现。 (2)进入源码根目录,启动并进入Docker编译环境。执行以下命令: cd /home/openharmorydocker run --name ohos_build -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0命令参数阐明:-v X:Y 将宿主机的X目录挂载到容器的Y目录下。将以后源码所在目录,挂载到容器编译环境的/home/openharmony目录下。 (3)装置编译依赖通过步骤(2)进入容器的shell后,切换到/home/openharmony门路,执行脚本下载OpenHarmony编译所依赖的组件: cd /home/openharmony./build/prebuilts_download.sh此处须要下载的编译依赖较多,请急躁期待下载实现。 至此OpenHarmony Docker编译环境筹备结束,在执行编译动作之前,须要实现OpenHarmony kernel个性的批改,否则Docker无奈在OpenHarmony零碎上失常运行。 kernel配置批改如何判断源码应用默认配置编译后生成的kernel是否满足Docker的运行依赖呢?开源社区存在查看工具,能够帮忙咱们实现这个工作,大家能够自行获取此工具[4] 。 在此咱们间接进入kernel配置的批改环节。 1、批改OpenHarmony kernel配置文件,开启Docker运行所依赖的内核性能。须要批改的配置文件地位如下: kernel/linux/config/linux-5.10/arch/arm64/configs/rk3568_standard_defconfig针对kernel个性的批改,次要是开启OpenHarmony内核中namespace、cgroup、network、overlay filesystem等性能。在配置文件的开端追加以下内容: # add for DockerCONFIG_POSIX_MQUEUE=yCONFIG_SCHED_WALT=yCONFIG_PSI=yCONFIG_PAGE_COUNTER=yCONFIG_CGROUP_BPF=yCONFIG_MEMCG_KMEM=yCONFIG_MEMCG_SWAP_ENABLED=yCONFIG_BLK_CGROUP=yCONFIG_BLK_DEV_THROTTLING=yCONFIG_RT_GROUP_SCHED=yCONFIG_CGROUP_PIDS=yCONFIG_CGROUP_HUGETLB=yCONFIG_CGROUP_PERF=yCONFIG_NET_CLS_CGROUP=yCONFIG_BPF_SYSCALL=yCONFIG_BINFMT_MISC=yCONFIG_TLS=yCONFIG_IP_MULTIPLE_TABLES=yCONFIG_IP_MROUTE_MULTIPLE_TABLES=yCONFIG_INET_ESP=yCONFIG_IPV6_MIP6=yCONFIG_IPV6_MULTIPLE_TABLES=yCONFIG_IPV6_MROUTE=yCONFIG_IPV6_MROUTE_MULTIPLE_TABLES=yCONFIG_NF_CONNTRACK=yCONFIG_NETFILTER_XT_MARK=yCONFIG_NETFILTER_XT_SET=yCONFIG_NETFILTER_XT_TARGET_CHECKSUM=yCONFIG_NETFILTER_XT_MATCH_ADDRTYPE=yCONFIG_NETFILTER_XT_MATCH_CONNTRACK=yCONFIG_NETFILTER_XT_MATCH_IPVS=yCONFIG_NETFILTER_XT_MATCH_CGROUP=yCONFIG_IP_SET=yCONFIG_IP_SET_HASH_IP=yCONFIG_IP_SET_HASH_NET=yCONFIG_IP_VS=yCONFIG_IP_VS_NFCT=yCONFIG_IP_VS_PROTO_TCP=yCONFIG_IP_VS_PROTO_UDP=yCONFIG_IP_VS_RR=yCONFIG_IP_VS_WRR=yCONFIG_IP_VS_SH=yCONFIG_IP_NF_MATCH_STATE=yCONFIG_IP_NF_MATCH_LIMIT=yCONFIG_IP_NF_TARGET_LOG=yCONFIG_NF_NAT=yCONFIG_IP_NF_FTP=yCONFIG_IP_NF_TARGET_REDIRECT=yCONFIG_IP_NF_CONNTRACK=yCONFIG_IP_NF_IRC=yCONFIG_IP_NF_NAT=yCONFIG_IP_NF_FILTER=yCONFIG_IP_NF_TARGET_MASQUERADE=yCONFIG_BRIDGE=yCONFIG_BRIDGE_NETFILTER=yCONFIG_CGROUP_NET_PRIO=yCONFIG_STREAM_PARSER=yCONFIG_DRIVERS_HDF_LIGHT=yCONFIG_HYPERHOLD=yCONFIG_HYPERHOLD_DEBUG=yCONFIG_HYPERHOLD_ZSWAPD=yCONFIG_HYPERHOLD_FILE_LRU=yCONFIG_HYPERHOLD_MEMCG=yCONFIG_ZRAM_GROUP=yCONFIG_ZRAM_GROUP_DEBUG=yCONFIG_ZLIST_DEBUG=yCONFIG_ZRAM_GROUP_WRITEBACK=yCONFIG_REGMAP_SPI=yCONFIG_MACVLAN=yCONFIG_VXLAN=yCONFIG_AUFS_FS=yCONFIG_VETH=yCONFIG_DRM_DW_HDMI_I2S_AUDIO=yCONFIG_SND_TIMER=yCONFIG_SND_PCM=yCONFIG_SND_PCM_ELD=yCONFIG_SND_PCM_IEC958=yCONFIG_SND_DMAENGINE_PCM=yCONFIG_SND_HWDEP=yCONFIG_SND_SEQ_DEVICE=yCONFIG_SND_RAWMIDI=yCONFIG_SND_JACK=yCONFIG_SND_JACK_INPUT_DEV=yCONFIG_SND_PCM_TIMER=yCONFIG_SND_HRTIMER=yCONFIG_SND_DYNAMIC_MINORS=yCONFIG_SND_MAX_CARDS=32CONFIG_SND_PROC_FS=yCONFIG_SND_VERBOSE_PROCFS=yCONFIG_SND_SEQUENCER=yCONFIG_SND_SEQ_DUMMY=yCONFIG_SND_SEQ_HRTIMER_DEFAULT=yCONFIG_SND_SEQ_MIDI_EVENT=yCONFIG_SND_SEQ_MIDI=yCONFIG_SND_DRIVERS=yCONFIG_SND_HDA_PREALLOC_SIZE=64CONFIG_SND_USB=yCONFIG_SND_USB_AUDIO=yCONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=yCONFIG_SND_SOC=yCONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=yCONFIG_SND_SOC_ROCKCHIP=yCONFIG_SND_SOC_ROCKCHIP_I2S=yCONFIG_SND_SOC_ROCKCHIP_I2S_TDM=yCONFIG_SND_SOC_ROCKCHIP_PDM=yCONFIG_SND_SOC_ROCKCHIP_SPDIF=yCONFIG_SND_SOC_ROCKCHIP_SPDIFRX=yCONFIG_SND_SOC_ROCKCHIP_MAX98090=yCONFIG_SND_SOC_ROCKCHIP_MULTICODECS=yCONFIG_SND_SOC_ROCKCHIP_RT5645=yCONFIG_SND_SOC_ROCKCHIP_HDMI=yCONFIG_SND_SOC_DUMMY_CODEC=yCONFIG_SND_SOC_HDMI_CODEC=yCONFIG_SND_SOC_ES7202=yCONFIG_SND_SOC_ES7243E=yCONFIG_SND_SOC_ES8311=yCONFIG_SND_SOC_ES8316=yCONFIG_SND_SOC_MAX98090=yCONFIG_SND_SOC_RK3308=yCONFIG_SND_SOC_RK3328=yCONFIG_SND_SOC_RK817=yCONFIG_SND_SOC_RK_CODEC_DIGITAL=yCONFIG_SND_SOC_RL6231=yCONFIG_SND_SOC_RT5616=yCONFIG_SND_SOC_RT5640=yCONFIG_SND_SOC_RT5645=yCONFIG_SND_SOC_RT5651=yCONFIG_SND_SOC_SPDIF=yCONFIG_SND_SOC_TS3A227E=yCONFIG_SND_SIMPLE_CARD_UTILS=yCONFIG_SND_SIMPLE_CARD=yCONFIG_ANDROID_PARANOID_NETWORK=yCONFIG_ACCESS_TOKENID=yCONFIG_F2FS_GRADING_SSR=yCONFIG_OVERLAY_FS=yCONFIG_HUGETLBFS=yCONFIG_HUGETLB_PAGE=yCONFIG_CRYPTO_SEQIV=y# end2、批改OpenHarmony配置文件 build/ohos/images/build_image.py 增加Docker运行依赖的目录:'run', 'var', 'opt', 'usr'。 _dir_list = [ 'config', 'dev', 'proc', 'sys', 'updater', 'system', 'vendor', 'data', 'chipset', 'storage', 'mnt', 'tmp', 'sys_prod', 'chip_prod', 'run', 'var', 'opt', 'usr']3、批改OpenHarmony配置文件 base/security/selinux/sepolicy/base/system/file_contexts增加以下内容: ...

May 18, 2023 · 2 min · jiezi

关于openharmony:聚能量赢未来OpenHarmony开发者大会开发工具分论坛圆满落幕

4月19日,以“开源正过后,共赢新将来”为主题的凋谢原子开源基金会OpenHarmony开发者大会2023(以下简称“大会”)在北京举办,“开发工具分论坛”于当天下午召开。在本次论坛上,各位演讲嘉宾重点分享了OpenAtom OpenHarmony(以下简称“OpenHarmony”) 3.2 Release版本的开发工具、开发方法、工程办法及开发者文档相干的技术及内容,心愿帮忙开发者更好地应用工具,晋升开发效率,助力利用翻新。 OpenHarmony开发者大会开发工具分论坛缺席本次开发工具分论坛的演讲嘉宾别离为:华为终端BG IDE技术专家胡林,华为终端BG IDE调优工具高级工程师李勉,华为终端BG方舟工具链架构师翁长成,OpenHarmony测试工具领域专家王俊涛,OpenHarmony常识体系工作组成员马迪欣,华为终端BG IDE编译构建工具高级工程师王瑶,OpenHarmony测试工具领域专家、OpenHarmony兼容性工作组成员任熠,深圳开鸿数字产业倒退有限公司OpenHarmony社区开发部部长、OpenHarmony代码共建组副组长巴延兴,OpenHarmony SIG Docs Leader Neen Yang,诚迈科技高级技术专家陆道。 华为终端BG IDE技术专家胡林主题演讲华为终端BG IDE技术专家胡林提到,华为终端BG开发者平台部始终致力于为开发者提供好用、易用的开发工具。在深刻和开发者交换以及剖析业界IDE工具演进趋势的背景下,DevEco Studio及相干套件在低代码开发,代码编辑,编译构建,调试调优等方面提供了更强的能力,也心愿和所有的开发者一起独特打造性能更强,更加易用的开发工具。 华为终端BG IDE调优工具高级工程师李勉主题演讲华为终端BG IDE调优工具高级工程师李勉介绍了DevEco Insight性能调优工具,他提到:咱们将调优教训交融到IDE调优工具内,并针对性推出了一些场景化Insight,帮忙大家疾速剖析和辨认性能问题的瓶颈点,如函数耗时长、内存调配不合理等性能问题,开发者能够联合IDE间接定位到问题代码行,疾速批改和优化。 华为终端BG方舟工具链架构师翁长成主题演讲 华为终端BG方舟工具链架构师翁长成次要分享了OpenHarmony利用调试调优底层技术。他首先介绍了方舟编译器设计特点和工具链热重载/跨语言调试等新个性,之后具体解说了调试调优工具链的底层设计逻辑与交互框架,同时介绍了标准协议的翻新扩大。将来,方舟工具链会在调试调优方面进行扩大,加强跨语言调试、热重载、内存调配采样等能力,帮忙开发者更高效的进行利用开发。 OpenHarmony测试工具领域专家王俊涛主题演讲 OpenHarmony测试工具领域专家王俊涛现场介绍了SmartPerf性能调测调优工具。他解说到,SmartPerf是OpenHarmony整个性能测试工具一个总称,外面蕴含了各种各样的测试工具,能够实现统和利用实时性能数据采集,也能够对利用和零碎在开发过程中一些性能的调优。将来,新版本的SmartPerf会简化性能剖析门槛、升高SmartPerf-Host在采集相干数据的开销以及反对离线符号化。 OpenHarmony常识体系工作组成员马迪欣主题演讲 OpenHarmony常识体系工作组成员马迪欣次要介绍了OpenHarmony 3.2 Release版本当前,随着新版本DevEco Studio公布,利用开发应用了全新的三方库包管理工具和OpenHarmony核心仓,并分享了在新版本DevEco Studio里开发和应用三方库,以及核心仓里支流的三方库。 华为终端BG IDE编译构建工具高级工程师王瑶主题演讲 华为终端BG IDE编译构建工具高级工程师王瑶在介绍OpenHarmony利用编译构建工具Hvigor时提到,这款工具是基于TS实现的自动化工作流管理工具,具备让构建工作配置更加不便、构建效率更高以及动静扩大的设计特点。之后具体分享了Hvigor工具为了减速构建过程的一些要害个性的底层设计逻辑,比方增量、并行和常驻过程。将来,Hvigor的能力还将取得进一步增强,一方面是减速增量编译的成果,另一方面还会提供构建过程可视化的能力,帮忙开发者进行构建剖析,以更高效的进行利用的编译。 OpenHarmony测试工具领域专家、OpenHarmony兼容性工作组成员任熠主题演讲 OpenHarmony测试工具领域专家、OpenHarmony兼容性工作组成员任熠在解说利用品质要求的同时,也介绍了以后的测试服务的开发进展。他提到,整体实现近20个检测我的项目,包含兼容性的装置、启动、卸载检测;性能的CPU内存检测以及冷热启动检测;稳定性的利用遍历压测;功耗的音视频器件占用、摄像头器件占用和处理器占用检测;UX测试服务的留白检测、截断检测、大图检测;而平安服务目前还正在构建。将来,在不断更新利用品质要求的同时,还会持续将更多的检测项服务工具化,反对开发者本地利用自检。 深开鸿OpenHarmony社区开发部部长、OpenHarmony代码共建组副组长巴延兴主题演讲深圳开鸿数字产业倒退有限公司(简称“深开鸿”)OpenHarmony社区开发部部长、OpenHarmony代码共建组副组长巴延兴以“深开鸿开发工具链晋升全流程开发效率”为主题进行分享。首先,他示意深开鸿既是开发者,也是共建者,始终积极参与社区的开源共建。为了帮忙更多开发者,深开鸿专门开发了研发辅助工具,次要波及动态扫描、框架代码生成、类型转换工具、可视化的配置工具及调测工具,并全副以开源的模式奉献给社区。将来,还会基于大模型的AI技术推出更高效、更智能的开发工具链。 OpenHarmony SIG Docs Leader Neen Yang主题演讲OpenHarmony SIG Docs Leader Neen Yang对OpenHarmony开发者文档新版本进行了介绍。她提到,超过1000多位开发者参加了文档内容建设,3.2 Release版本文档规模是3.1 Release的2.5倍。本版本重点丰盛了ArkTS语言、利用模型、UI开发、Web、媒体、数据管理、文件治理开发指南的概念原理及场景领导,并提供了更丰盛的错误码参考、FAQ。同时,开发者文档涵盖OpenHarmony一些要害能力相干产品领导、IDE使用指南以及各阶段的领导介绍。OpenHarmony SIG Docs十分重视开发者的意见,开发者能够在Gitee Docs仓间接提交Issue反馈材料需要及问题,文档团队将继续晋升文档体验、丰盛和欠缺内容,帮忙开发者更高效地开发。 ...

May 6, 2023 · 1 min · jiezi

关于openharmony:基于ArkUI框架开发图片模糊处理的实现

原文:https://mp.weixin.qq.com/s/vwXVj5vmAxDRG_jTk_8hPA,点击链接查看更多技术内容。 当初市面上有很多APP,都或多或少对图片有含糊上的设计,所以,图片含糊成果到底怎么实现的呢? 首先,咱们来理解下含糊成果的比照 从视觉上,两张图片,有一张是含糊的,那么,在实现图片含糊成果之前,咱们首先须要理解图片含糊的实质是什么? 在此介绍含糊实质之前,咱们来理解下以后支流的两个挪动端平台(Android与iOS)的实现。对Android开发者而言,比拟相熟且欠缺的图片变换三方库以glide-transformations(https://github.com/wasabeef/glide-transformations)为样例,来看看它是基于什么实现的。 Android中有两种实现:1、 FastBlur,依据stackBlur含糊算法来操作图片的像素点实现成果,但效率低,已过期。2、 RenderScript,这个是Google官网提供的,用来在Android上编写一套高性能代码的语言,能够运行在CPU及其GPU上,效率较高。 而对iOS开发者而言,GPUImage(https://github.com/BradLarson/GPUImage/)比拟支流。咱们能够在其中看到高斯含糊过滤器(GPUImageGaussianBlurFilter),它外面是依据OpenGL来实现,通过GLSL语言定义的着色器,操作GPU单元,达到含糊成果。 所以,咱们能够看出,操作GPU来达到咱们所须要的成果效率更高。因而咱们在OpenHarmony上也能通过操作GPU,来实现咱们想要的高性能含糊成果。 回归正题,先来理解下含糊的实质是什么? 实质含糊,能够了解为图片中的每个像素点都取其周边像素的平均值。 上图M点的像素点就是咱们的焦点像素。四周ABCDEFGH都是M点(焦点)四周的像素点,那么依据含糊的概念:M(rgb)  =(A+B+C+D+E+F+G+H)/ 8 咱们依据像素点的r、g、b值,失去M点的像素点值,就这样,一个一个像素点的操作,两头点相当于失去视觉上的焦点,整个图片就产生含糊的成果。但这样一边倒的形式,在含糊的成果上,达不到需要的,所以,咱们就须要依据这个含糊的实质概念,去想想,加一些货色或者更改取平均值的规定,实现咱们想要的成果。故,高斯含糊,一个妇孺皆知的名字,就呈现在咱们背后。 高斯含糊高斯含糊,使用了正态分布函数,进行各个加权均匀,正态分布函数如下: 其中参数:为期望值,为标准差,当=0,=0的时候,为规范的正态分布,其形态参考如下图: 能够看出: 其一,离中心点越近,调配的权重就越高。这样咱们在计算图片的焦点像素值时,将该点当作中心点,当作1的权重,其余四周的点,依照该正态分布的地位,去调配它的权重,这样咱们就能够依据该正态分布函数及其各个点的像素ARGB值,算出通过正态分布之后的像素ARGB值。 其二,离中心点越近,若是设置的含糊半径很小,代表其含糊的焦点四周的像素点离焦点的像素相差就不大,这样含糊的成果就清晰。而含糊半径越大,其四周散布的像素色差就很大,这样的含糊成果就越含糊。 通过图片的宽高拿到每个像素点的数据,再依据这个正态分布公式,失去咱们想要的像素点的ARGB值,之后将解决过的像素点从新写入到图片中,就能实现咱们想要的图片含糊成果。 流程依据下面的论述,就能够梳理出在OpenHarmony中的具体的实现流程:● 获取整张图片的像素点数据● 循环图片的宽高,获取每个像素点的焦点● 在上述循环里,依据焦点依照正态分布公式进行加权均匀,算出各个焦点四周新的像素值● 将各个像素点写入图片 要害依赖OpenHarmony零碎根底能力如下: 第一、获取图片的像素点,零碎有提供一次性获取整张图片的像素点数据,其接口如下。 readPixelsToBuffer(dst: ArrayBuffer): Promise<void>;readPixelsToBuffer(dst: ArrayBuffer, callback: AsyncCallback<void>): void;能够看出,零碎将获取到像素点数据ARGB值,存储到ArrayBuffer中去。 第二、循环获取每个像素点,将其x、y点的像素点当作焦点。 for (y = 0; y < imageHeight; y++) { for (x = 0; x < imageWidth; x++) { //......   获取以后的像素焦点x、y }}第三、循环获取焦点四周的像素点(以焦点为原点,以设置的含糊半径为半径)。 for ( let m = centPointY-radius; m < centPointY+radius; m++) {  for ( let n = centPointX-radius; n < centPointX+radius; n++) {     //......     this.calculatedByNormality(...); //正态分布公式化解决像素点     //......  }}第四、将各个图片的像素数据写入图片中。零碎有提供一次性写入像素点,其接口如下。 writeBufferToPixels(src: ArrayBuffer): Promise;writeBufferToPixels(src: ArrayBuffer, callback: AsyncCallback): void;通过下面的流程,咱们能够在OpenHarmony零碎下,获取到通过正态分布公式解决的像素点,至此图片含糊成果曾经实现。 然而,通过测试发现,这个形式实现模糊化的过程,很耗时,达不到咱们的性能要求。若是一张很大的图片,就单单宽高循环来看,比方1920*1080宽高的图片就要循环2,073,600次,十分耗时且对设施的CPU也有十分大的耗费,因而咱们还须要对其进行性能优化。 含糊性能优化思路如下面所诉,思考到OpenHarmony的环境的特点及其零碎提供的能力,能够思考如下几个方面进行优化: 第一、参照社区已有成熟的图片含糊算法解决,如(Android的FastBlur)。第二、C层性能要比JS层更好,将像素点的数据处理,通过NAPI机制,将其放入C层解决。如:将其循环获取焦点及其通过正态分布公式解决的都放到C层中解决。第三、基于零碎底层提供的OpenGL,操作顶点着色器及片元着色器操作GPU,失去咱们要的含糊成果。 首先,咱们来依据Android中的FastBlur模糊化解决,参照其实现原理进行在基于OpenHarmony零碎下实现的代码如下: let imageInfo = await bitmap.getImageInfo();let size = { width: imageInfo.size.width, height: imageInfo.size.height}if (!size) { func(new Error("fastBlur The image size does not exist."), null) return;}let w = size.width;let h = size.height;var pixEntry: Array<PixelEntry> = new Array()var pix: Array<number> = new Array()let bufferData = new ArrayBuffer(bitmap.getPixelBytesNumber());await bitmap.readPixelsToBuffer(bufferData);let dataArray = new Uint8Array(bufferData);for (let index = 0; index < dataArray.length; index+=4) { const r = dataArray[index]; const g = dataArray[index+1]; const b = dataArray[index+2]; const f = dataArray[index+3]; let entry = new PixelEntry(); entry.a = 0; entry.b = b; entry.g = g; entry.r = r; entry.f = f; entry.pixel = ColorUtils.rgb(entry.r, entry.g, entry.b); pixEntry.push(entry); pix.push(ColorUtils.rgb(entry.r, entry.g, entry.b));}let wm = w - 1;let hm = h - 1;let wh = w * h;let div = radius + radius + 1;let r = CalculatePixelUtils.createIntArray(wh);let g = CalculatePixelUtils.createIntArray(wh);let b = CalculatePixelUtils.createIntArray(wh);let rsum, gsum, bsum, x, y, i, p, yp, yi, yw: number;let vmin = CalculatePixelUtils.createIntArray(Math.max(w, h));let divsum = (div + 1) >> 1;divsum *= divsum;let dv = CalculatePixelUtils.createIntArray(256 * divsum);for (i = 0; i < 256 * divsum; i++) { dv[i] = (i / divsum);}yw = yi = 0;let stack = CalculatePixelUtils.createInt2DArray(div, 3);let stackpointer, stackstart, rbs, routsum, goutsum, boutsum, rinsum, ginsum, binsum: number;let sir: Array<number>;let r1 = radius + 1;for (y = 0; y < h; y++) { rinsum = ginsum = binsum = routsum = goutsum = boutsum = rsum = gsum = bsum = 0; for (i = -radius; i <= radius; i++) { p = pix[yi + Math.min(wm, Math.max(i, 0))]; sir = stack[i + radius]; sir[0] = (p & 0xff0000) >> 16; sir[1] = (p & 0x00ff00) >> 8; sir[2] = (p & 0x0000ff); rbs = r1 - Math.abs(i); rsum += sir[0] * rbs; gsum += sir[1] * rbs; bsum += sir[2] * rbs; if (i > 0) { rinsum += sir[0]; ginsum += sir[1]; binsum += sir[2]; } else { routsum += sir[0]; goutsum += sir[1]; boutsum += sir[2]; } } stackpointer = radius; for (x = 0; x < w; x++) { r[yi] = dv[rsum]; g[yi] = dv[gsum]; b[yi] = dv[bsum]; rsum -= routsum; gsum -= goutsum; bsum -= boutsum; stackstart = stackpointer - radius + div; sir = stack[stackstart % div]; routsum -= sir[0]; goutsum -= sir[1]; boutsum -= sir[2]; if (y == 0) { vmin[x] = Math.min(x + radius + 1, wm); } p = pix[yw + vmin[x]]; sir[0] = (p & 0xff0000) >> 16; sir[1] = (p & 0x00ff00) >> 8; sir[2] = (p & 0x0000ff); rinsum += sir[0]; ginsum += sir[1]; binsum += sir[2]; rsum += rinsum; gsum += ginsum; bsum += binsum; stackpointer = (stackpointer + 1) % div; sir = stack[(stackpointer) % div]; routsum += sir[0]; goutsum += sir[1]; boutsum += sir[2]; rinsum -= sir[0]; ginsum -= sir[1]; binsum -= sir[2]; yi++; } yw += w;}for (x = 0; x < w; x++) { rinsum = ginsum = binsum = routsum = goutsum = boutsum = rsum = gsum = bsum = 0; yp = -radius * w; for (i = -radius; i <= radius; i++) { yi = Math.max(0, yp) + x; sir = stack[i + radius]; sir[0] = r[yi]; sir[1] = g[yi]; sir[2] = b[yi]; rbs = r1 - Math.abs(i); rsum += r[yi] * rbs; gsum += g[yi] * rbs; bsum += b[yi] * rbs; if (i > 0) { rinsum += sir[0]; ginsum += sir[1]; binsum += sir[2]; } else { routsum += sir[0]; goutsum += sir[1]; boutsum += sir[2]; } if (i < hm) { yp += w; } } yi = x; stackpointer = radius; for (y = 0; y < h; y++) { // Preserve alpha channel: ( 0xff000000 & pix[yi] ) pix[yi] = (0xff000000 & pix[Math.round(yi)]) | (dv[Math.round(rsum)] << 16) | (dv[ Math.round(gsum)] << 8) | dv[Math.round(bsum)]; rsum -= routsum; gsum -= goutsum; bsum -= boutsum; stackstart = stackpointer - radius + div; sir = stack[stackstart % div]; routsum -= sir[0]; goutsum -= sir[1]; boutsum -= sir[2]; if (x == 0) { vmin[y] = Math.min(y + r1, hm) * w; } p = x + vmin[y]; sir[0] = r[p]; sir[1] = g[p]; sir[2] = b[p]; rinsum += sir[0]; ginsum += sir[1]; binsum += sir[2]; rsum += rinsum; gsum += ginsum; bsum += binsum; stackpointer = (stackpointer + 1) % div; sir = stack[stackpointer]; routsum += sir[0]; goutsum += sir[1]; boutsum += sir[2]; rinsum -= sir[0]; ginsum -= sir[1]; binsum -= sir[2]; yi += w; }}let bufferNewData = new ArrayBuffer(bitmap.getPixelBytesNumber());let dataNewArray = new Uint8Array(bufferNewData);let index = 0;for (let i = 0; i < dataNewArray.length; i += 4) { dataNewArray[i] = ColorUtils.red(pix[index]); dataNewArray[i+1] = ColorUtils.green(pix[index]); dataNewArray[i+2] = ColorUtils.blue(pix[index]); dataNewArray[i+3] = pixEntry[index].f; index++;}await bitmap.writeBufferToPixels(bufferNewData);if (func) { func("success", bitmap);}从下面代码,能够看出,依照FastBlur的逻辑,还是逃不开下层去解决单个像素点,逃不开图片宽高的循环。通过测试也发现,在一张400*300的图片上,实现图片的含糊须要十几秒,所以第一个优化计划,在js环境上是行不通的。 ...

May 5, 2023 · 8 min · jiezi

关于openharmony:开启新时代承接新使命开放原子开源大赛OpenHarmony创新赛正式启航

凋谢原子开源大赛OpenHarmony翻新赛,正式启动啦! “OpenHarmony翻新赛”是凋谢原子寰球开源大赛下开设的翻新赛道,面向企业、集体、高校师生等宽广开发者,聚焦OpenHarmony利用开发技术,打造竞技交换赛事,旨在进步开发者的入手实际能力以及使用新技术的翻新发明能力。 通过本次大赛,冀望达到以赛促用、以赛促教、以赛促学、以赛促练、以赛促创的成果,开发者通过学习OpenHarmony,开发出具备创新性、实用性的开源应用软件及全场景OpenHarmony解决方案,促成万物互联产业的凋敝倒退。 本大赛面向所有OpenHarmony开发者,只有实现注册,认证即可报名参加OpenHarmony翻新赛,获取OpenHarmony开源我的项目的实际机会,赢取丰富处分及荣誉激励。赛事报名通道曾经开启,敬请关注赛事官网、OpenHarmony官网公众号或增加“官网小助手”微信理解!

April 23, 2023 · 1 min · jiezi

关于openharmony:开源正当时共赢新未来-OpenHarmony开发者大会成功召开

4月19日,以“开源正过后,共赢新将来”为主题的凋谢原子开源基金会OpenHarmony开发者大会2023(以下简称“大会”)胜利举办。 本次大会由凋谢原子开源基金会领导,OpenHarmony我的项目群工作委员会主办,华为、开鸿智谷、万里红、深开鸿、诚迈科技、九联科技、润开鸿、鸿湖万联、优博终端、奥思维等单位独特单干反对。大会现场,来自凋谢原子开源基金会和OpenHarmony我的项目的领导与专家、以及共建单位、行业搭档和社区开发者们共聚一堂,见证了OpenHarmony 3.2 Release版本的公布,解读了新版本技术个性,分享了搭档基于OpenHarmony的开发实际、社区生态停顿以及行业发行版和解决方案等方面的落地成绩。 凋谢原子开源基金会理事长孙文龙在收场致辞中示意:OpenHarmony开源两年多以来,凋谢原子开源基金会组织各方力量对我的项目发展共建,为OpenHarmony我的项目提供更好的倒退平台,目前已获得了飞速的停顿。在宽广开发者的潜心研发下,OpenHarmony零碎版本一直迭代更新,能力继续欠缺。明天大会将首次对外公布并解读OpenHarmony 3.2版本,该版本带来了全新的技术和体验,置信会给行业搭档和开发者带来更强的信念! 中国工程院院士倪光南在致辞中提到:开源是翻新的外围能源,在操作系统体系中施展至关重要的作用。OpenHarmony是中国开源倒退的重要里程碑,自开源以来,生态社区继续倒退,影响力一直攀升。将来,心愿国家给予更多政策疏导,心愿社会各界和更多搭档退出,心愿高校和科研院所做好人才培养,独特推动OpenHarmony生态凋敝,打造千行百业松软的数字底座。 OpenHarmony我的项目群技术领导委员会主席陈海波致辞示意:OpenHarmony从诞生之日起就是面向万物智联而生,始终秉持“生态对立、凋谢共赢”的理念,围绕“架构解耦、弹性部署”、 “自在流转、智慧协同”和“极简开发、统一体验”三大架构特色,构建分布式全场景协同的开源操作系统基座与生态系统。心愿大家围绕OpenHarmony,独特构筑产、学、研、用协同平台,推动智能终端操作系统的技术、商业和人才生态倒退与凋敝。 会集5100+共建者,生态社区飞速发展,OpenHarmony我的项目群致谢捐赠人 OpenHarmony开源两年多以来,在凋谢原子开源基金会以及多方力量的共同努力下,生态继续凋敝倒退。OpenHarmony我的项目群工作委员会主席候培新在发言中介绍道,截至目前,OpenHarmony社区已有51家共建单位,超过5100位共建者,累计代码量1亿多行,领有华为、深开鸿、软通能源、润和软件、九联科技、优博终端6家百人代码奉献单位,超过260多款软硬件产品通过兼容性测评,笼罩教育、交通、金融、家居、安防等多个行业。 OpenHarmony社区生态的倒退离不开每一位参加其中并踊跃奉献的捐赠人,为此大会对多家OpenHarmony我的项目群捐献单位和集体进行了致谢,由凋谢原子开源基金会副秘书长辛晓华为捐献单位及集体进行了授牌,感激他们对开源生态建设所作出的奉献。 OpenHarmony 3.2 Release版本重磅公布,全面晋升简单带屏设施体验 在通过5个Beta版本的迭代之后, OpenHarmony 3.2 Release版本正式公布,该版本零碎能力进一步欠缺,全面晋升了简单带屏设施体验。OpenHarmony项目管理委员会主席任革林从零碎晦涩、零碎性能、利用性能、分布式能力、开发效率五个方面对新版本的技术个性进行了深度解读。 在零碎晦涩度上,OpenHarmony 3.2 Release版本有了“看得见”的晋升。这次要源于架构级的全面优化和引入诸多翻新技术,包含ArkUI最小化更新技术、并行化极速启动架构、RenderService对立渲染架构、高性能ArkTS引擎、根底库性能优化等,达到了交互晦涩、天然棘手,动效丰盛、全局统一。 OpenHarmony 3.2 Release零碎曾经足够晦涩反对各行各业开发简单带屏设施。北京万里红科技有限公司副总经理樊洪光分享了他们基于OpenHarmony打造的平板电脑和多款商用带屏富设施的落地案例,以及基于OpenHarmony打造的政务生态实际,让与会嘉宾感触到了OpenHarmony落地千行百业的微小后劲。 在零碎性能上,新版本也不断完善。其中HDF反对了800多个HDI标准化设施接口,让硬件适配更加便捷;Stage模型进一步欠缺从零碎角度引入了OpenHarmony利用运行规定和后盾运行模型等;零碎完整性爱护、隔离和访问控制的分布式平安和隐衷爱护根底平台也失去了较大晋升,让隐衷平安更加有保障;同时,在反对利用开发方面,新版本API 9领有18000+ ArkTS API,曾经足够反对简单大型利用的开发。 京东批发前端通道委员、Web业余力负责人吴海鑫在现场分享了京东基于OpenHarmony进行利用开发的实际与倒退布局,他示意通过尝试OpenHarmony组件化多工程,大型APP的协同开发效率大幅晋升,整体工程编译工夫缩小70%以上。同时京东自研的JD MCube动态化跨端计划已适配OpenHarmony,将来京东会持续基于OpenHarmony进行大型APP工程化革新,打造京东体系化技术架构。 此外,在对极致高性能利用的反对方面,通过提供NAPI及混合开发能力、丰盛的Native API、TaskPool并行开发框架、DevEco Insight实时性能剖析工具等,OpenHarmony 3.2 Release零碎足够凋谢反对开发极致高性能的框架和利用。Cocos曾经实现游戏开源引擎Cocos 2dx的OpenHarmony适配,基于Cocos-2dx引擎开发的开心消消乐游戏利用已可能晦涩运行。 Unity中国技术副总裁左瑞文分享了Unity中国本地引擎我的项目的开发进度以及在反对国产开源零碎方面的停顿,左瑞文示意,Unity中国本地引擎将在往年推出。本地引擎晋升了渲染性能和品质等,对挪动设施可能深度反对。同时该引擎曾经可能反对OpenHarmony零碎。左瑞文在会上展现了该我的项目Demo,已可能稳固流畅地在OpenHarmony零碎上运行,并且渲染成果和帧率与传统操作系统并驾齐驱。他还示意,将来Unity中国会全力支持国产操作系统OpenHarmony,为开发者带来更多新技术。 分布式技术层面,新版本反对分布式软总线的传输通道主动抉择,并在分布式屏幕能力、分布式数据技术以及一次开发多端部署能力上进一步优化和欠缺。 腾讯输入法部开放平台负责人辜海玻现场分享了腾讯搜狗输入法基于OpenHarmony分布式技术的开发实际与落地案例,他示意随着OpenHarmony的分布式技术倒退,搜狗输入法可实现多端UI适配、跨屏联动,自在流转、算力协同、分布式数据同步、输入法多状态多能力等个性,全新的应用体验将让人耳目一新。 OpenHarmony 3.2 Release版本还大幅晋升了开发效率,DevEco Studio提供了一组全新的开发套件,高效编译构建工具Hvigor反对细粒度并行编译和工作级增量编译;场景化性能调优工具DevEco Insight依据典型性能问题提供场景化调优模版;运行时函数热重载技术节俭开发者等待时间,代码批改即刻浮现;可视化开发和调测能力也失去进一步的晋升。同时,开发者材料通过优化文档架构和内容逻辑,让开发者更易上手;另外,也向开发者提供了丰盛的代码样例和高频三方库等学习资源,OpenHarmony利用开发体系已根本残缺构建。 为了激励开发者施展翻新精力,基于OpenHarmony 3.2版本进行利用和设施翻新开发,大会还发表凋谢原子开源大赛OpenHarmony翻新赛正式启动,赛事设置有利用翻新赛题和各行业赛题,欢送开发者踊跃报名。 共建OpenHarmony生态,构筑使能千行百业的数字底座 随着 OpenHarmony 零碎能力降级、配套开发工具和资源的齐备,越来越多产业链搭档正在退出OpenHarmony生态,独特推动OpenHarmony生态凋敝和商业落地。 华为终端BG软件部副总裁柳晓见在发言中说,以后已有130多家搭档退出OpenHarmony生态共建,华为与其中的30家搭档签约OpenHarmony生态使能协定,通过洞察布局、培训赋能、研发工具、技术支持四个方面赋能搭档,帮忙搭档疾速打造优质产品与解决方案。同时OpenHarmony也踊跃推动各行业标准规范,让OpenHarmony成为行业优选。 人才培养方面,OpenHarmony积极参与高校人才共建,三年以来累计单干208所高校,产学合作项目笼罩超100所高校,为人才的造就添砖加瓦。产业政策上,深圳、福州等城市率先出台了相干政策反对OpenHarmony生态翻新与倒退。 3.2 Release版本的公布,让咱们看到OpenHarmony技术正一直成熟,开发能力继续欠缺、生态倒退也已迈入快车道,OpenHarmony正开启新的征程。期待更多开发者、搭档退出OpenHarmony生态,共建万物互联的数字底座,以根技术创新驱动生态凋敝,一幅千行百业翻新图景正徐徐开展。

April 19, 2023 · 1 min · jiezi

关于openharmony:成长计划知识赋能-第十期DAYU200开发入门秒Get

2021年12月,OpenAtom OpenHarmony(以下简称”OpenHarmony“)开源开发者成长打算开启了第一节OpenHarmony常识赋能直播课程,给宽广开发者搭建了一个业余的学习平台。 在2022年度,OpenHarmony常识赋能直播联结泛滥共建单位、开发者社区的技术专家,围绕OpenHarmony技术个性发展了一系列直播课程,如:规范零碎利用开发、规范零碎HDF开发、多媒体的框架原理、从零上手OpenHarmony智能家居我的项目、手把手教你实现WiFi扫描仪、涂鸦小游戏、渐进式深刻了解OpenHarmony零碎等41节课程,笼罩近10万+开发者。 2023年OpenHarmony开源开发者成长打算常识赋能直播将聚焦北向利用开发,为了让开发者更好地理解北向利用开发技术,常识赋能直播第十期特推出DAYU200开发入门的系列直播课程,资深北向技术专家徐建国老师会在直播课上同步实操演练,教你手把手入门OpenHarmony北向技术利用开发,帮忙开发者们能够在常识赋能直播间学习更多、播种更多,在OpenHarmony畛域奉献本人的开源成绩,一起独特成长。

April 17, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony社区运营报告2023年3月

本月快讯• 《OpenHarmony 2022年度经营报告》于3月正式公布,2022年OpenAtom OpenHarmony(以下简称“OpenHarmony”)开源我的项目潜心求实、深耕倒退,OpenHarmony位居Gitee活跃度指数第一名,已有51家共建单位,130+生态搭档,超过5100位代码共建者,领有超过220款软硬件产品通过兼容性测评,OpenHarmony我的项目群成员单位减少至29家。• 2月25日,以“技术构筑万物智联”为主题的第一届凋谢原子开源基金会OpenHarmony技术峰会(以下简称“技术峰会”)于深圳圆满举办。作为 OpenHarmony开源我的项目在2023年开年的首场大型流动盛会,本次技术峰会向外界分享了OpenHarmony最新的技术、生态停顿与行业实际。• 2023年2月,软件绿色联盟第七届理事会在北京胜利召开。OpenHarmony我的项目群工作委员会、阿里巴巴、百度、华为、腾讯等60+家理事单位代表及相干成员缺席了本次会议。本次会议以“共建·共生·共赢”为主题,围绕“新进展、新业务、新力量”三个方面开展深度研究,会上倡导绿标6.0基于OpenHarmony利用的高质量体验制订规范,并呐喊更多搭档参加到规范制订过程中来。• 本月新增18款产品通过兼容性测评,累计261款产品通过兼容性测评。 一、代码奉献1、 PMC布局共约3K人/月工作量社区共建需要,包含:方舟JS运行时、语言编译运行时、ArkUI、短距、测试与认证平台、平安、投屏、CPU架构适配、ArkTS语言、多媒体、模拟器、驱动、电源、无障碍、C/C++编译器和库、内核、多模输出、Samples&材料、三方库等多个子系统。 2、截至2023年3月30日,代码共建组协同共建单位锁定第一批共建指标,内容如下:●深开鸿:锁定短距、测试与认证平台、投屏等子系统共约600人/月共建工作量;●润和软件:锁定RISC-V、LoongArch约600人/月共建工作量;●软通能源:锁定测试与认证平台、ArkUI、电源等子系统约300人/月共建工作量;●九联科技:锁定投屏、短距、Sample等子系统约300人/月共建工作量;●开鸿智谷:锁定测试与认证平台、三方库、电源等子系统约300人/月工作量;●新大陆:锁定测试与认证平台子系统局部共建个性;●汇思博:指标100人/月共建工作量,锁定具体共建需要中;●君正:锁定MIPS约300人/月共建工作量;●诚迈:指标100人/月共建工作量,锁定具体共建需要中;●中科院软件所:在RISC-V、三方库、Hilog共建的根底上新增方舟运行时、ArkTS语言等子系统共建动向,锁定中。 二、生态停顿1、新增18款,累计已有102个厂家的261款产品通过兼容性测评。 2、OpenHarmony3.2 Release兼容性测评变动点阐明针对行将公布的OpenHarmony 3.2 Release中兼容性业务冲破重点:1) PCS 新增品类定义、加强最小集定义、加强性能/功耗等体验指标等;2) XTS 用例规模 12W+,并新增acts-validator测试套件看护手势、动效、音视频、相机等根底体验指标;3) 兼容性测评新增设施证实束缚,治理生态、看护OpenHarmony品牌;4) 面向社区,公布6大利用测试规范,涵盖UX、兼容性、性能、平安、稳定性、功耗。 3、新增18款产品通过兼容性测评(2023年2月26日 - 3月25日) 三、社区治理工委会治理:•汇思博成为OpenHarmony我的项目群A类候选成员单位,科通成为OpenHarmony我的项目群B类成员单位,星网天合成为OpenHarmony我的项目群C类成员单位。 •3月17日-18日,OpenHarmony 2023年度务虚会召开,会议总结了OpenHarmony 2022年年度工作,听取了各家共建单位的反馈倡议,探讨了OpenHarmony 2023年年度工作方向,并对北向利用生态进行了深刻探讨。 生态委员会:•截至3月27日,OpenHarmony生态委员会成员单位累计40家,同比上月新增3家,别离是:恒银金融科技股份有限公司、深圳市恩孚电子科技有限公司、中国国际航空股份有限公司。技术领导委员会治理:•高校技术俱乐部:新增3家高校正式退出OpenHarmony高校技术俱乐部,别离为:浙江大学、华中科技大学、湖南大学。•TSG:OpenHarmony技术领导委员会正式批准成立并发与协同TSG。 五、社区活动1、公共流动2月25日,以“技术构筑万物智联”为主题的第一届凋谢原子开源基金会OpenHarmony技术峰会于深圳圆满举办。作为OpenHarmony开源我的项目在2023年开年的首场大型流动盛会,本次技术峰会向外界分享了OpenHarmony最新的技术、生态停顿与行业实际。 成长打算常识赋能直播第九期如约而至,面向OpenHarmony初中级开发者,解析OpenHarmony零碎架构和驱动框架,助力开发者疾速上手OpenHarmony零碎开发。 2、搭档流动近期搭档流动共举办8场。 六、社区及官网经营 1、单干社区官网账号公布内容数据汇总截至2023年3月30日,9个单干社区共公布内容(含技术文章、视频教程)1,577篇,累计取得总PV/UV数1,493,576,同比上月增长7%,账号取得粉丝数1429人,较上月增幅2%。 2、OpenHarmony社群直播数据截至2023年3月30日,OpenHarmony社群累计发展直播85场,累计观看量41,463,观看人数21,943;其中66场联结各家单干社区直播,累计213场次,观看次数1,147,920;观看人数302,184;共计OpenHarmony直播所有渠道产生观看次数1,189,383、观看人数324,127。 3、OpenHarmony社群经营数据截至2023年3月30日,社群共沉淀开发者7,710人,累计社群沟通信息10.6万,累计与开发者沟通3.5万次,累计触达音讯6.6万条。

April 14, 2023 · 1 min · jiezi

关于openharmony:未来已来OpenHarmony-32-Release发布迈入发展新阶段

2023年4月9日,在社区开发者的期盼中,在春风送暖万物更新的节令里,咱们迎来了OpenAtom OpenHarmony(以下简称“OpenHarmony”)3.2 Release新版本的公布。相比一年前的OpenHarmony 3.1 Release版本,新版本的零碎能力、零碎整体性能、稳定性和安全性都进一步失去晋升和欠缺;OpenHarmony 3.2 Release版本为利用开发而生,在零碎能力、开发工具和API、硬件调测等将为开发者带来全新体验! OpenHarmony开源两年多以来,吸引了130多家搭档、超过5100名开发者参加共建和奉献,产出超一亿行代码。超260款软硬件产品通过兼容性测评,宽泛笼罩了能源、金融、交通、教育、政务、家居等很多行业。感激各位搭档和开发者的奉献,是大家的反对和奉献,减速了OpenHarmony生态的凋敝倒退。随着OpenHarmony 3.2 Release版本的公布,OpenHarmony社区迈入新的倒退阶段。 OpenHarmony 3.2 Release版本带来了泛滥的新个性,反对采纳ArkTS语言+Stage利用模型进行大型利用、原子化服务开发;ArkCompiler的优化、Taskpool机制晋升利用运行性能;ArkUI组件能力加强,强化图形渲染能力和系统安全能力,丰盛分布式业务开发;引入AI框架,同时,媒体、电话、通信、Web、平安、调测能力进一步晋升;外设模型进一步丰盛。新版本还提供了API Level 9稳固接口。下文形容新版本的局部新个性,请您返回OpenHarmony 3.2 Release Note理解所有新性能的详细信息。 立刻查看所有新性能https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/OpenHarmony-v3.2-release.md OpenHarmony 3.2 Release为开发者带来了什么ArkUI组件能力加强 ●反对XComponent控件,可用于EGL/OpenGL ES和媒体数据写入,并在XComponent组件显示;通过XComponent组件,配合NDK能力,构建C++/ArkTS混合开发能力,反对游戏、媒体利用开发。●反对AbilityComponent控件,反对嵌入其余利用作为控件(Component)显示。●减少根底的ArkTS卡片开发能力:反对卡片交互、能动静更新内容;对立卡片和页面的开发范式,页面的布局能够间接复用到卡片布局中,晋升卡片开发体验和开发效率。● 零碎默认反对纯文本、纯图片复制、粘贴、拖拽,无需开发者解决复制、粘贴、拖拽事件。● 反对多级菜单和分组菜单。● 反对切换深色模式/浅色模式,仅零碎利用反对。 UI界面开发反对一次开发适配多屏幕规格● 交互归一能力加强,交互归一事件对接TP、鼠标、键盘、触摸板、手写笔,ArkUI原生组件反对归一化的操作形式。● 响应式布局能力优化,加强了媒体查问能力,栅格零碎重构且对接自在窗口。● 走焦能力加强,反对Tab键和方向键走焦,反对配置组件是否可获焦。● 反对加强分栏与侧边栏组件能力,反对拖拽自动隐藏等能力。 利用框架● Stage模型,OpenHarmony API 9新增模型,提供了应用程序必备的组件和运行机制。开发者能够基于该模型进行简单利用开发,使利用开发更简略、高效。○ 以类模式提供组件开发,不便开发者基于类扩大。○ 过程内共享虚拟机实例,缩小利用内存占用。○ 反对在过程内共享数据对象,不便开发者在多模块间共享状态。○ Ability生命周期和窗口显示/焦点事件拆散,对立了多设施状态下组件的生命周期,有利于多设施利用开发。○ Ability与UI职责拆散且具备RPC调用能力,原生反对组件级的跨设施迁徙与协同,有利于分布式应用开发。 ● 提供Extension机制,借助Extension,利用在与其余利用或零碎进行交互时向他们提供自定义性能和内容,例如:利用能够作为卡片显示在零碎桌面或者零碎闲时执行后台任务等。以后反对的罕用Extenson有:FormExtensionAbility、WorkSchedulerExtensionAbility、InputMethodExtensionAbility、AccessibilityExtensionAbility等。● 原子化服务反对分包预加载,晋升服务首次加载性能。● 反对HSP(Harmony Shared Package)动静共享包,反对利用内代码和资源的共享。 利用包治理● 反对抉择默认利用,例如用户应用应用程序关上文件或url地址时抉择了默认程序,后续将主动关上该应用程序操作文件。● 反对对局部预置利用如Launcher、SystemUI、Settings等,零碎当时授予权限(如定位、电话联系人等权限)、简化设施开箱后的受权过程,晋升用户体验。● 反对预置利用配置是否可常驻、是否能够多过程,是否容许应用Service类型的ExtensionAbility等能力,增强对预置利用的权限管控。● 反对动静批改和更新应用程序的代码,提供疾速修复程序包便于利用疾速响应需要和修复问题(此能力依赖设施厂商构建利用市场并提供散发能力)。● 反对so基于hap包的隔离,不便开发者在不同的模块中部署so文件,防止了不同模块so重名的问题。 分布式技术反对元服务和卡片跨设施流转,包含:跨设施查问、增加、刷新、删除等。 分布式软总线● 提供基于蓝牙链路的文件传输能力,蓝牙数据传输通道相比OpenHarmony 3.1版本性能晋升约10%。● 通过为每个过程别离建设Message和Byte高低优先级队列,确保在Message和Byte并发的状况下,优先保障音讯队列的数据发送,同时也能保障Byte失去无效传输,解决了在字节数据拥塞的状况下,音讯数据不能及时传输的问题。● 在反对RAW流的根底上,新增COMMON流传输能力,将未加密音视频流交由软总线进行加解密,调用者只须要把原始的音视频流数据传递给软总线,软总线保障数据的平安传输。● 反对传输链路(WLAN/WiFi P2P/蓝牙BR)动静抉择。依据双端设施反对的传输链路以及业务调用软总线传输接口(SendFile、SendSteam、SendMessage、SendBytes)进行链路抉择。例如当须要传输流数据时,优先选择WLAN(5G频段)进行传输,如果WLAN不可用,则抉择其它链路(例如WiFi P2P)进行传输。 分布式硬件● 分布式相机拍照反对设置拍摄地理位置信息和照片品质级别(影响照片的压缩比和画质清晰度)。● 分布式相机反对录像性能。● 设施治理反对将帐号认证信息导入到设施平安认证零碎中,雷同帐号的设施能够主动实现设施认证和组网。 分布式数据管理跨利用数据拜访、本地数据库、数据同步能力进行了优化和加强。● 通过代理形式实现同设施内跨利用数据拜访,防止频繁拉起数据源利用。● 反对同设施内关系型数据库、键值型数据库的跨利用数据拜访。● 反对键值型数据库和关系型数据库。● 反对对数据库文件的加密保留。● 反对数据库的异样损坏检测以及异样重建。● 反对利用通过客户端进行备份和复原数据库。● 反对主动备份键值型数据库。● 反对同利用跨设施对关系型数据库近程查问。● 反对元数据库异样损坏检测和主动重建。● 键值型数据库从对立的零碎沙箱切换到各利用沙箱,放大利用数据的拜访权限,晋升了利用数据的安全性。 ...

April 13, 2023 · 1 min · jiezi

关于openharmony:重磅官宣OpenHarmony开发者大会来了

凋谢原子开源基金会OpenHarmony开发者大会2023将于4月19日在北京召开。 春风送暖万物新,OpenHarmony正过后。诚邀您加入本届大会,凝听行业大咖分享操作系统和开源的最新前沿研究成果,结识同行理解最佳实际,与社区技术专家互动交换,领先取得OpenHarmony零碎、技术和工具的最新动静。 诚邀您继续关注,近期咱们将公布更多更具体的会议信息,4月19日咱们不见不散!

April 12, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony标准系统开机时长优化

简介万物互联时代,产品性能至关重要,而系统启动工夫是零碎性能的重要组成部分,因为用户必须期待系统启动实现后能力应用设施。对于常常须要进行冷启动的汽车等设施而言,较短的启动工夫至关重要(没有人喜爱在期待几十秒后能力输出导航目的地),在金融交易设施、电子商务服务器、实时通信设施同样也有较高的利用场景,那咱们该如何在OpenAtom OpenHarmony(简称OpenHarmony ) 规范零碎现有的能力下,实现秒级开机?本文由深圳市优博终端科技有限公司的研发同学介绍一套对于优化OpenHarmony规范零碎开机时长优化的计划,通过对硬件、Kernel、 Framework的相应优化让零碎开机时长尽量缩短。 成果展现上面给出零碎开机时长优化前后的比照成果视频,优化前的开机时长在18秒左右,优化后的开机工夫在7秒左右。 开发环境硬件平台:RK3588零碎版本:OpenHarmony 3.1 Release开发语言:C、 C++ 四步带你体验OpenHarmony规范零碎开机时长优化一、调整硬件资源使用率调整硬件资源相应配置参数使之尽可能地达到最优运行状态,这里所指的硬件资源是指 RAM、FLASH。 RAM:运存的调优须要依据厂商的领导文档在设施树文件<.dtsi文件>中进行调整,比方设定运存的时钟频率 memory-frequency、设定内存带宽 memory-bandwidth、内存时序 memory-timings 等,Kernel 层能够对 swappiness、dirty_ratio、dirty_background_ratio、min_free_kbytes等相应值进行调整,来达到运存的性能调优。 FLASH:比方对 physical_block_size 项进行调整,目前 OpenHarmony 采纳的文件系统为 ext4,能够在相熟ext4文件系统后,而后对其中缓存、模式、压缩、清理等方向进行调优。缩小KMSG与HiLog 日志输入,调整其输入等级。 二、Kernel 启动时长优化Kernel 启动阶段会进行硬件检测、驱动加载、文件系统挂载、设置网络等,其中耗时比拟长的基本上为驱动加载,因为这两头会有反复尝试跟 Sleep 的工夫,须要重点关注,在 Kernel 启动的过程中能够将一些无用的子系统进行裁剪,比方 bootchart。 三、零碎框架启动时长优化在零碎层启动时,须要启动很多服务,能够采纳并行启动零碎必要服务,提早启动非必要服务,这些服务从加载到启动实现、其中比拟耗时的有 so 加载,可采纳多线程的形式对其进行加载,上面贴出多线程加载多个 so 文件的 Demo 代码; #include <iostream>#include <dlfcn.h>#include <thread>#include <vector>#include <string>void thread_func(void* handle){ // 空函数}int main(){ std::vector<std::string> lib_names = {"mpp1.so", "mpp2.so", "mpp3.so"}; std::vector<void*> handles; for (const auto& lib_name : lib_names) { void* handle = dlopen(lib_name.c_str(), RTLD_LAZY); if (handle == nullptr) { std::cerr << "Error loading library " << lib_name << ": " << dlerror() << std::endl; return 1; } handles.push_back(handle); } std::vector<std::thread> threads; for (const auto& handle : handles) { threads.emplace_back(thread_func, handle); } for (auto& thread : threads) { thread.join(); } for (const auto& handle : handles) { dlclose(handle); } return 0;}如果发现加载的单个so文件过大时,可采纳多线程分段加载此so 文件。 ...

April 10, 2023 · 2 min · jiezi

关于openharmony:开发板如何适配OpenHarmony-32

简介OpenAtom OpenHarmony(以下简称“OpenHarmony”) 3.2 Beta5版本在OpenHarmony 3.1 Release版本的根底上,有以下扭转:性能上有很大的晋升、规范零碎利用开发框架加强、规范零碎分布式能力加强。 本文介绍诚迈科技基于RK3568设计的HCPAD-100开发板以及基于RK3566设计的中控屏HongzPad2022在OpenHarmony 3.2 Beta5版本上的适配过程。 波及到开发板的增加/u-boot /linux-5.10/分区表/根文件系统/显示/触摸/USB的移植过程以及OpenHarmony所依赖的驱动个性介绍。 如何增加新的开发板进行编译参照DAYU200的工程配置文件咱们新建本人的编译命令。1)在device/board/目录新建archermind目录,新建rk3568/rk3588/rk3399目录,并增加相干的工程文件。 2)在vendor目录新建archermind目录。新建以下几个目录,并增加相干的工程文件。 3)批改vendor/archermind/hongzos_rk3568/config.json文件,product_name改成hongzos_rk3568,device_build_path改成第一步新建的目录。 { "product_name": "hongzos_rk3568", "device_company": "rockchip", "device_build_path": "device/board/archermind/rk3568", "target_cpu": "arm", "type": "standard", "version": "3.0", "board": "rk3568",通过./build.sh --product-name hongzos_rk3568来编译出咱们本人开发板的镜像,编译完后对应开发板的image镜像放在out/rk3568/packages/phone/目录。相干代码放在文章最初的参考链接。 U-Boot移植U-boot是通过二进制镜像间接放在device/board/hihope/rk3568/loader目录下的,这个目录下波及到文件如下: 1)下载rk官网公布的uboot源码 git clone https://github.com/rockchip-linux/u-boot.git2)批改make.sh, 指定RKBIN_TOOLS的门路 RKBIN_TOOLS=rkbin/tools 3)减少代码读取ramdisk分区到指定的内存地位,批改cmd/pxe.c #include "boot_rkimg.h"#define BLK_CNT(_num_bytes, _block_size) \ ((_num_bytes + _block_size - 1) / _block_size)static char* load_ramdisk_from_partition(void *buffer){ struct blk_desc *desc = rockchip_get_bootdev(); disk_partition_t part_ramdisk_boot; static char initrd_str[28]; long blk_cnt = 0, blks_read = 0; long blk_start = 0; if (part_get_info_by_name(desc, "ramdisk", &part_ramdisk_boot) < 0) { printf("No ramdisk partition\n"); return NULL; } blk_cnt = part_ramdisk_boot.size; blk_start = part_ramdisk_boot.start; printf("Load from partition ' ramdisk ' to address 0x%p, count: %ld total block(s) by ludao\n", buffer, blk_cnt); blks_read = blk_dread(desc, blk_start, blk_cnt, buffer); if (blks_read != blk_cnt) { return NULL; } printf("Read from partition ' ramdisk ' done, from 0x%lx total block(s) 0x%lx\n", blk_start, blk_cnt); sprintf(initrd_str, "0x%p:0x%lx", buffer, blk_cnt*(part_ramdisk_boot.blksz)); printf("Openharmony ramdisk_addr_r = %s\n", initrd_str); return initrd_str;}static int label_boot(cmd_tbl_t *cmdtp, struct pxe_label *label) if (label->initrd) { if (get_relfile_envaddr(cmdtp, label->initrd, "ramdisk_addr_r") < 0) { printf("Skipping %s for failure retrieving initrd\n", label->name); return 1; } bootm_argv[2] = initrd_str; strncpy(bootm_argv[2], env_get("ramdisk_addr_r"), 18); strcat(bootm_argv[2], ":"); strncat(bootm_argv[2], env_get("filesize"), 9); }else{ void *buffer = (void *)env_get_ulong("ramdisk_addr_r", 16, 0); bootm_argv[2] = load_ramdisk_from_partition(buffer); if(bootm_argv[2]){ printk("initrd = %s \n", bootm_argv[2]); } }4)指定穿插编译器和平台开始编译,编译实现后根目录会生成u-boot.bin ...

April 4, 2023 · 3 min · jiezi

关于openharmony:OpenHarmony社区运营报告2023年2月

本月快讯• 2023年2月25日,以“技术构筑万物智联”为主题的第一届凋谢原子开源基金会OpenAtom OpenHarmony(以下简称“OpenHarmony”)技术峰会(以下简称“技术峰会”)于深圳隆重召开。技术峰会由OpenHarmony我的项目群技术领导委员会(以下简称“技术领导委员会”)主办,华为承办,润和软件、九联科技、软通能源、诚迈科技、优博讯等单位独特反对。 • 2023年1月9日,OpenHarmony生态使能签约典礼在深圳胜利召开。在凋谢原子开源基金会的领导下,华为与24家搭档签订OpenHarmony生态使能单干协定。 • 本月新增23款产品通过兼容性测评,累计243款产品通过兼容性测评。 一、代码奉献1、本月,深开鸿新增锁定蓝牙、Wi-Fi、NFC(约33人/月工作量)的共建需要,软通能源新增锁定多媒体、电源治理、ArkUI(约100人/月工作量)的共建需要,九联新增锁定温湿度传感器驱动(约9人/月工作量)的共建需要;代码共建组继续与各单位沟通锁定中。 2、本月,代码共建组组织协同华为、软通能源、深开鸿共建以下9个个性进入骨干:① Color和ColorMatrix根底能力适配② TextArea组件能力加强③ Toggle组件能力加强④ Slider组件能力加强⑤ GridContainer布局能力加强⑥ Position属性办法能力加强⑦ Flex布局能力加强⑧ JS CSS能力补齐⑨ Wi-Fi热点无连贯时主动敞开能力 3、百人代码奉献单位:2月25日,在技术峰会的共建展台上,展现了6家2022年的《百人代码奉献单位》(华为、深开鸿、软通能源、润和软件、九联科技、优博终端),并被深圳卫视《深视新闻》栏目报道。 为践行凋谢原子开源基金会“共建、共治、共享”的准则,以及OpenHarmony我的项目群“凋谢治理、代码共建”的导向,工作委员会正在为以上6家百人代码共建单位拍摄宣传片,将在首届《OpenHarmony开发者大会》上展播。 2023年,随着生态倒退,将进行《百人代码奉献单位》的资格规范刷新:以共建实现的代码和技术为基准。 4、2023年,代码共建组将协同各共建单位及宽广开发者,为OpenHarmony我的项目共建百万行代码级的技术,提供开源共建攀登的基座;期盼各共建单位和宽广开发者踊跃锁定共建需要,贡献力量。 二、生态停顿1、新增23款,累计已有90个厂家的243款产品通过兼容性测评。 2、OpenHarmony兼容性工作组专家缺席技术峰会2023年2月25日,OpenHarmony兼容性工作组专家在技术峰会的生态与互联分论坛进行主题《OpenHarmony兼容性设计与实际》议题分享,并针对行将公布的OpenHarmony 3.2 Release中兼容性业务突破点做重点介绍: 1) PCS新增品类定义、加强最小集定义、加强性能/功耗等体验指标等;2) XTS用例规模12W+,并新增acts-validator测试套件看护手势、动效、音视频、相机等根底体验指标;3) 兼容性测评新增设施证实束缚,治理生态,看护OpenHarmony品牌;4) 面向社区,公布6大利用测试规范,涵盖UX、兼容性、性能、平安、稳定性、功耗。 3、新增23款产品通过兼容性测评(统计周期:2022年12月25日~2023年2月25日) 三、社区治理工委会治理:• OpenHarmony我的项目群工作委员会批准九联科技和开鸿智谷成为OpenHarmony我的项目群A类成员单位。 技术领导委员会治理:• 高校技术俱乐部:2023年2月25日,技术领导委员会主席陈海波和高校嘉宾独特启动星光打算,并为首批参加该打算的12所高校(复旦大学、上海交通大学、武汉大学、兰州大学、北京理工大学、大连理工大学、东南大学、重庆大学、中国科学技术大学、浙江大学、北京邮电大学、深圳大学)授予了留念证书。 • 技术愿景及理念:2023年2月25日,在技术峰会上,技术领导委员会主席陈海波提出了“面向万物智联世界,构建分布式全场景协同的开源操作系统基座与生态系统”的技术愿景,并进一步提出了“生态对立、凋谢共赢”的理念。 • 终端OS十大技术挑战方向:2023年2月25日,在技术峰会上,基于长期在操作系统畛域的实际,以及对万物智联趋势的钻研,技术领导委员会公布《终端操作系统十大技术挑战方向》。 四、社区活动1、公共流动2023年2月25日,第一届凋谢原子开源基金会OpenHarmony技术峰会于深圳隆重召开。本次技术峰会由OpenHarmony技术领导委员会主办,华为承办,润和软件、九联科技、软通能源、诚迈科技、优博讯等单位独特反对,以“技术构筑万物智联”为主题,汇聚学术界、产业界前沿技术,分享当下技术成绩,摸索下一代技术方向,共绘将来开源生态新蓝图。 2023年1月9日,OpenHarmony生态使能签约典礼在深圳胜利召开。在凋谢原子开源基金会的领导下,华为与24家搭档签订OpenHarmony生态使能单干协定,笼罩金融、教育、交通、能源、政务、安平、制作、卫生、广电、电信等行业,独特推动OpenHarmony生态的凋敝与倒退。 2、搭档流动近期共举办5场搭档流动。 五、社区及官网经营1、单干社区官网账号公布内容数据汇总截至2023年2月24日,9个单干社区共公布内容(含技术文章、视频教程)1550篇,累计取得总PV/UV数646871,同比上月增长7%,账号取得粉丝数1401人,较上月增幅2%。 2、OpenHarmony社群直播数据截至2023年2月28日,OpenHarmony社群累计发展直播85场,累计观看量41463,观看人数21943;其中66场联结各家单干社区直播,累计213场次,观看次数1147920;观看人数302184;共计OpenHarmony直播所有渠道产生观看次数1189383、观看人数324127。 3、OpenHarmony社群经营数据截至2023年2月24日,社群共沉淀开发者7730人,累计社群沟通信息10万,累计与开发者沟通3.2万次,累计触达音讯6.1万条。

March 28, 2023 · 1 min · jiezi

关于openharmony:成长计划知识赋能-第九期渐进式深入理解OpenHarmony系统

成长打算常识赋能直播第九期如约而至,面向OpenHarmony初中级开发者,解析OpenHarmony零碎架构和驱动框架,助力开发者疾速上手OpenHarmony零碎开发。 详情见海报内容,资深软件开发工程师梁开祝老师带你一起学习提高。

March 27, 2023 · 1 min · jiezi

关于openharmony:2022-OpenHarmony年度运营报告

March 21, 2023 · 0 min · jiezi

关于openharmony:ArkUI中的线程和看门狗机制

一、前言本文次要剖析ArkUI中波及的线程和看门狗机制。 二、ArkUI中的线程利用Ability首次创立界面的流程大抵如下: 阐明:• AceContainer是一个容器类,由前端、工作执行器、资源管理器、渲染管线、视图等聚合而成,提供了生命周期对接、性能调度接口和UI渲染的各项能力。• Ability在FA模型中理论为AceAbility,和AceContainer容器类搭配治理界面。在AceAbility的生命周期函数AceAbility::OnStart(const Want& want)中创立AceContainer实例。• 对于Stage模型,在UIContentImpl::CommonInitialize()函数中创立AceContainer实例。AceContainer在构造函数中创立工作执行器,用于执行ArkUI相干工作。 void AceContainer::InitializeTask(){ auto flutterTaskExecutor = Referenced::MakeRefPtr<FlutterTaskExecutor>(); flutterTaskExecutor->InitPlatformThread(useCurrentEventRunner_); taskExecutor_ = flutterTaskExecutor; // No need to create JS Thread for DECLARATIVE_JS if (type_ == FrontendType::DECLARATIVE_JS) { GetSettings().useUIAsJSThread = true; } else { flutterTaskExecutor->InitJsThread(); }}工作有如下几种类型,每种类型(BACKGROUND工作除外)的工作会由一个fml::TaskRunner去执行。TaskRunner代码在三方库third_party\flutter\engine\flutter\common\task_runners.h中,实现原理和EventRunner,EventHandler机制类似。 enum class TaskType : uint32_t { PLATFORM = 0, UI, IO, GPU, JS, BACKGROUND, UNKNOWN, };FlutterTaskExecutor类图如下: 阐明:• 工作执行器能够用于执行异步(PostTask)和同步(PostSyncTask)工作。• 异步工作:把工作丢给指定类型的线程解决,不会阻塞以后线程。• 同步工作:把工作丢给指定类型的线程解决并阻塞以后线程,直到工作执行完后持续以后线程。• 比方触摸事件的解决,会以异步工作的模式被丢到UI线程中解决。 auto&& touchEventCallback = [context = pipelineContext_, id = instanceId_]( const TouchEvent& event, const std::function<void()>& markProcess) { ContainerScope scope(id); context->GetTaskExecutor()->PostTask( [context, event, markProcess]() { context->OnTouchEvent(event); CHECK_NULL_VOID_NOLOG(markProcess); markProcess(); }, TaskExecutor::TaskType::UI); };三、各种类型的TaskRunner如何初始化?platformRunner_在InitPlatformThread函数中初始化。 ...

March 15, 2023 · 3 min · jiezi

关于openharmony:触觉智能RK3568使用体验NAPI-类对象导出及其生命周期管理下

4. 样例工程源码分析工程的模板是Native C++,模型是Stage。源码分析次要围绕以下几个文件4.1. NAPI导出对象和生命周期治理具体实现4.1.1. 定义NapiTest类及办法Napi.h文件内容如下: #ifndef __NAPI_TEST_H__#define __NAPI_TEST_H__#include "napi/native_api.h"#include <js_native_api_types.h>#include <iostream>#define NAPI_CLASS_NAME "NapiTestClass"class NapiTest {public:NapiTest() : mEnv(nullptr), mRef(nullptr) {} NapiTest(napi_env env) : mEnv(env), mRef(nullptr){}~NapiTest(); // 创立NapiTest类的实体,并将实体返回到利用端,该办法为js创立一个类实体,因而须要将该接口对外导出static napi_value Create(napi_env env, napi_callback_info info); // 初始化js类并设置对应属性并将其导出 static napi_value Init(napi_env env, napi_value exports); private: // 设置数据,此办法给到js间接调用,因而须要将该接口对外导出 static napi_value SetMsg(napi_env env, napi_callback_info info); // 获取数据,此办法给到js间接调用,因而须要将该接口对外导出 static napi_value GetMsg(napi_env env, napi_callback_info info); // 定义js构造体时理论的构建函数 static napi_value Constructor(napi_env env, napi_callback_info info); // 开释资源的函数(相似类的析构函数) static void Destructor(napi_env env, void *nativeObject, void *finalize); // 生命周期变量 static napi_ref sConstructor_; // 设置和获取数据的变量 static std::string _msg; // 记录环境变量 napi_env mEnv = nullptr; // 记录生命周期变量 napi_ref mRef = nullptr; };#endif /* __NAPI_TEST_H__ */4.1.1.1 napi_valueNode.js Node-API的值用napi_value类型示意。OpenHarmony NAPI将ECMAScript规范中定义的Boolean、Null、Undefined、Number、BigInt、String、Symbol和Object八种数据类型,以及函数对应的Function类型,对立封装成napi_value类型,下文中表述为JS类型,用于接管ArkUI利用传递过去的数据及返回数据给ArkUI利用。这是一个不通明的指针,用于示意JavaScript值。4.1.1.2 napi_ref这是用来援用napi_value的形象。这容许用户治理JavaScript值的生命周期,包含显式地定义它们的最小生命周期。https://nodejs.org/docs/latest-v14.x/api/n-api.html#n_api_nap...4.1.1.3 napi_envnapi_env用于示意上下文,底层的Node-API实现能够应用该上下文长久放弃VM-specific的状态。https://nodejs.org/docs/latest-v14.x/api/n-api.html#n_api_nap...4.1.2 将NapiTest类定义为js类4.1.2.1在定义js类之前,须要先设置js类对外导出的办法 // 在定义js类之前,须要先设置类对外导出的办法 napi_property_descriptor desc[] = { { "getMsg", nullptr, NapiTest::GetMsg, nullptr, nullptr, nullptr, napi_default, nullptr }, { "setMsg", nullptr, NapiTest::SetMsg, nullptr, nullptr, nullptr, napi_default, nullptr }, { "create", nullptr, NapiTest::Create, nullptr, nullptr, nullptr, napi_default, nullptr } };4.1.2.1.1 napi_property_descriptor参考 https://nodejs.org/docs/latest-v14.x/api/n-api.html#n_api_nap... ...

March 13, 2023 · 4 min · jiezi

关于openharmony:OpenHarmony设备开发修改屏幕-DPI像素密度

一、OpenHarmony源码中DPI配置在源码foundation/window/window_manager/resources/config/rk3568/display_manager_config.xml中有rk3568的默认配置rk3568开发板默认的DPI配置为240,范畴为80-640。 <!--Window display dpi, valid range is 80~640, use 0 if no configuration is requeired--> <dpi>240</dpi>以下为触觉智能开发板在不同DPI时屏幕的显示状况 DPI为240时DPI为100时DPI为600时二、更改开发板的DPI办法一:更改源码编译烧录固件在源码foundation/window/window_manager/resources/config/rk3568/display_manager_config.xml文件中批改dpi,编译后烧录固件。 <!--Window display dpi, valid range is 80~640, use 0 if no configuration is requeired--> <dpi>240</dpi>办法二:发送display_manager_config.xml文件至设施etc/window/resourcesOpenHarmony固件编译烧录进入设施后,display_manager_config.xml文件会被预编译打包至设施端etc/window/resources目录下,什么,为什么只有window/resources字段,因为ohos_prebuilt_etc就是把文件放进设施的etc文件夹foundation/window/window_manager/resources/config/BULID.gn文件如下,上面代码的意思是源码foundation/window/window_manager/resources/config/rk3568/display_manager_config.xml会真正装置在设施中的etc/window/resources文件地位,ohos_prebuilt_etc("display_manager_config") { if (device_name == "rk3568") { source = "//foundation/window/window_manager/resources/config/rk3568/display_manager_config.xml" install_enable = true······ relative_install_dir = "window/resources"}步骤如下 # 进入sdk\版本号\toolchain输出cmd关上命令行,从新加载零碎为可读写D:\DevEco Studio\sdk\9\toolchains>hdc_std shell mount -o remount,rw /# 替换/etc/window/resources中的display_manager_config.xml文件D:\DevEco Studio\sdk\9\toolchains>hdc_std file send C:\Users\jjh\display_manager_config.xml /etc/window/resources而后重启开发板让设置失效知识点附送为ohos_prebuilt_XXX类指标增加反对指定output属性的能力以该pr学习 https://gitee.com/openharmony/build/pulls/822/files 为ohos_prebuilt_XXX类指标增加反对指定output属性的能力。ohos_prebuilt_XXX类指标是指ohos_prebuilt_executable、ohos_prebuilt_shared_library、ohos_prebuilt_static_library、ohos_prebuilt_etc。这类指标只反对指定source属性,拷贝到out目录时指标文件名与源文件名是一样的,无奈另行指定名字。该pr解决了此限度,增加了output这个可选属性用于指定指标文件名,不指定的状况下默认与源文件名是一样的(与原逻辑保持一致)。OpenHarmony编译构建子系统是基于Gn和ninja的,而gn自身是有原生模板(source_set,shared_library, static_library, action, executable,group)。gn也反对用户自定义编译模板,OpenHarmony编译子系统提供了一系列自定义的模板(ohos_shared_library、ohos_prebuilt_executable、ohos_prebuilt_shared_library等) 自定义模板的源码位于 https://gitee.com/openharmony/build/tree/master/templatesohos_prebuilt_executable、ohos_prebuilt_shared_library、ohos_prebuilt_static_library、ohos_prebuilt_etc预编译模板在prebuilt.gni中定义,它们通过调用ohos_copy模板实现。 ...

March 13, 2023 · 1 min · jiezi

关于openharmony:见山见路见天地OpenHarmony的开源共建攀登

自诞生之日起,OpenHarmony就引起着各方的关注,堪称是盛况空前。但一款开源操作系统的胜利,艰难不在第一步,而是第一步前面的一万步。 那么,踏出开源第一步之后的OpenHarmony,前面的故事如何倒退了呢? 如果用一个状态来形容,那就是OpenHarmony正在翻山。回首此前,OpenHarmony曾经走过了一段足够惊人,也值得自豪的路;放眼将来,还有更多挑战和难题在期待解答,期待各界退出新一代开源操作系统的建设。 2月25日,由OpenHarmony我的项目群技术领导委员会(TSC)主办,华为承办,润和软件、九联科技、软通能源、诚迈科技、优博讯等单位独特反对的凋谢原子开源基金会OpenHarmony技术峰会在深圳召开。这次技术峰会向外界分享了OpenHarmony最新的技术、生态、行业停顿,展现了OpenHarmony曾经实现的旅程。峰会期间公布了终端操作系统十大技术挑战方向,探讨了下一代操作系统的架构与技术演进方向,则是为接下来的旅程划定了坐标。 借此机会,咱们能够具体理解OpenHarmony在开源共建畛域的攀山之旅。 这是一次见山,见路,见天地的旅行。 见山:万物智联时代,“昆虫纲悖论”召唤兼顾通用与共性的新型操作系统 一款开源软件、开源操作系统的胜利,注定要与时代的需要相符合,必须要有需要,有挑战,能力让相应的答案具备吸引力。这种引力会将更多开发者、参与者带到开源生态,最终造成势不可挡的合力。 OpenHarmony的旅程,开始于见到山的那一刻:当咱们不可逆地驶入万物互联时代,多终端带来越来越多的操作系统成为了万物互联时代中无奈回避的问题。 这会带来“昆虫纲悖论”问题,就如同东京大学的坂村健(Ken Sakamura)传授给出形象的比喻:地球上的哺乳动物大概有5000多种,好比传统的服务器、集体计算机(PC);昆虫大略有100多万种,好比万物智联时代的多样化设施。一方面,数量更大的万物智联设施带来的累计价值,远大于服务器和PC的市场;但另一方面,因为不足可大批量复制的软硬件和利用,没有批量也就难以有低成本,也就不会有微小的市场空间。 解决这个问题的外围在于万物互联时代正在须要操作系统新基座,既而应答万物智联时代两个大的变动:一是用户更加关注场景化的体验,比方智能家居、智能出行等;另一方面是生态系统更加宏大。 有了山,就要有跋山涉水的路。万物智联的难题,让OpenHarmony的核心技术能力变得亮堂起来。“架构解耦、弹性部署”、“自在流转、智慧协同”和“极简开发、统一体验”的OpenHarmony三大架构特色,让OpenHarmony能够买通手机、平板、PC、智能家居、物联网设施、行业终端等的界线,实现真正的分布式全场景、跨终端协同。 综合比拟下来,OpenHarmony或者能够说是跨场景、跨终端难题的最优解。既然这是一条正确的路,即便很难,也终会走通。 见路:OpenHarmony曾经登上了半山 依据Linux等操作系统的倒退教训,有人提出一款开源操作系统或者开源底层软件的是否存续,须要用两年左右的工夫来进行回头测验。那么现在,OpenHarmony的成长应该曾经到了值得被好好扫视的阶段。 经验了两年多工夫的倒退,咱们会看到OpenHarmony最外围的成熟标记,是其作为规范设施操作系统的根底能力曾经逐渐构建成熟。其多设施、跨终端操作系统的技术愿景,曾经被认定是具备说服力的。峰会现场的OpenHarmony生态成绩展区,即是这种成熟的一个缩影。 在展区当中,咱们能够看到OpenHarmony在芯片、开发板、三方库、商业设施、行业利用等方面的阶段性成绩。其中在共建展区,展出了来自21家共建单位、机构以及集体的40款展品,包含24款开发样例,16款开发板。在开发样例方面,能够看到利用了OpenHarmony的即时通讯、UI显示、音视频数据处理等一系列技术。在开发板层面,笼罩了家居、交通、教育、安防、工业、新能源、制作等畛域。 在这次集中出现背地,是OpenHarmony走过的开源共建之路。从生态上看,其社区曾经汇聚5100+共建者,51家共建单位, 近亿行代码。OpenHarmony生态委员会曾经设立了9个专委会,向重点行业迈进、浸透。而从产业上看,2022年OpenHarmony迭代更新了5个版本,撑持29款简单带屏设施商用,曾经有238款基于OpenHarmony的产品落地,笼罩教育、交通、金融、家居、安防等多个行业。  操作系统是有滚雪球效应的,初期倒退之后,会进入更快、规模更大的指数级增长。明天OpenHarmony曾经展现出这一特色,适宜更多人、更多力量在此时参加进来。 从技术倒退上看,OpenHarmony的分布式、跨终端倒退方向曾经成为各界共识,成为新一代“元操作系统”的可能性十分大。适宜产、学各界关注和推动,继续投入力量。 从利用空间上看,OpenHarmony在诸多畛域展现出了不可代替的经济价值。比如说隧道、矿山、海港等,无效的利用空间激活了产业生态的倒退空间,适宜更多开发者投入其中,播种胜利。 从产学一体的角度看,OpenHarmony关注度高,社会价值大,正在失去更宽泛的学界反对,不仅适宜高校、学术机构利用这一机会实现技术摸索,也非常适合学生进行学习,把握时代时机。 OpenHarmony走过的这条路,既展示着开源事业的艰苦,也稀释着中国开源畛域的热诚与凝聚力。好在,OpenHarmony曾经登上了半山,而向着更高处的路,也曾经展示在眼前。 见方向:挑战,即是登顶之路 OpenHarmony并不是一项“实现时”的操作系统,它有着凋谢倒退空间,也面对着直观、具象的倒退挑战。换言之,它并不是曾经成熟,而是有待摸索,也恰好是这种个性,让OpenHarmony富裕生机,让更多企业、开发者、学子可能参加进来。 技术峰会期间,OpenHarmony我的项目群技术领导委员会主席陈海波公布了终端操作系统十大技术挑战方向,心愿凝聚产业界与学术界智慧,独特面对将来终端操作系统的挑战。 整体而言,终端操作系统十大挑战方向分为三类。 第一类是“极致体验”,这一类挑战间接关乎在万物智联时代用户应用终端设备的体验,也是咱们普通人最期待实现的一类挑战,让咱们在从触摸交互走向时空天然交互的过程中,打消语义鸿沟,带来更加沉迷式、无缝流转的多设施协同体验。 第二类是“污浊平安”,随着多终端、全场景时代到来,数据会在不同的设施之间流转,数据也须要分享,能力产生价值,特地是对于身份的数据,更是与用户的财产平安非亲非故。以后,无论是消费者还是企业,都更加器重操作系统的平安与隐衷爱护,逐渐构建起万物智联时代百亿级智能终端和连贯的数字信赖体系。 第三类是“极简开发”,直面开发者进行多终端开发时的痛点与需要,提出了将来利用和设施向开发平台的倒退方向,帮忙软硬件厂商和开发者实现从单场景开发到全场景开发的转变,满足海量智能硬件和反对跨端流转的新形态利用开发需要,实现一次开发、多端部署。 咱们能够开展其中一些具体的挑战方向,看看终端操作系统十大挑战方向如何牵引下一代技术倒退。比如说,终端操作系统十大挑战首先提出,要构建以用户为核心、场景感知的应用软件新形态。咱们曾经可能感觉到多设施合作带来的魅力,但对于消费者来说仍旧不够敌对,不够智能。一方面,多终端设备无奈被动、间接将服务提供给用户,而是须要用户大量、频繁触发;另一方面,随着工夫与空间的变动,用户需要也会发生变化,但服务却不会进行相应调整。这种状况下,如何精准的感知用户需要变动以及精准的举荐模型,实现服务间接举荐给客户,并感知客户的变动主动举荐做适合的服务,来达到体验的跃迁。 现在,OpenHarmony已构建分布式软总线及原子化服务框架,初步具备跨APP合作、多设施协同的能力,支流操作系统也具备肯定的APP智能举荐能力,但精准度还不高。在将来,构建一个跨设施无缝合作,可能按需生成服务的这么一个新的软件状态,既是宽广开发者的挑战,同时也是一个机会。 再比方,多设施场景的协同操控,仍旧是用户的次要痛点。用户交互界面宽泛存在于智能手机、平板、电脑、智能穿戴、电视、车机和XR终端,但操作形式仍旧以触屏为主,很容易造成操作效率低、用户体验差等问题,是否能够联合语音,甚至眼神、空间、姿势等交互方式来进行操作降级,也是一项具备无穷魅力的挑战。 终端操作系统十大挑战方向,是将来终端操作系统次要的倒退方向与次要工作,能够说指明了继续上山的路。OpenHarmony也会汇合产业界、学术界各位开发者、高校的力量倒退出一个面向未来的高体验、高平安、高开发效率的终端操作系统。 1.逾越消费者与企业场景,将生产终端体验降级与产业数字化降级联合起来,驱动OpenHarmony成为真正的新一代操作系统。 2.器重隐衷平安、数据安全等工作,让OpenHarmony成为具备足够平安能力的底层软件,让万物智联时代从根基处即是平安、友善、隐衷的时代。 3.既器重操作系统的开发、部署,同时也器重其利用体验与商业价值,关注开源操作系统的全栈倒退,为不同畛域的开发者、参与者洞开通路。 见到山,于是登程;见到山后的山,于是步履不停。OpenHarmony曾经标清了将来,那是一个与生态参与者同见天地的将来。 见天地:咱们一起越过平地 随着技术继续积攒,产业一直倒退以及门路逐步清晰,OpenHarmony曾经进入了新的阶段,成为了更多开发者、参与者、研究者的机会。 对于开发者来说,逐步完善的OpenHarmony,曾经能够让开发者的重心从如何利用OpenHarmony个性,转变到如何开发属于本人的OpenHarmony商业版,或者合乎本人需要的OpenHarmony产品。更多畛域的软件参与者,尤其是内核、视窗、平安、框架、编程语言等畛域的开发者,将在曾经逐步完善的OpenHarmony中取得更大的机会。 而对于高校师生来说,OpenHarmony的技术先进性正在从产业界向学术界辐射。终端操作系统十大挑战方向这样的前沿课题,就能够看作OpenHarmony一次从产业向学界连接的摸索与尝试。OpenHarmony生态当中,既有适宜钻研团队倒退的方向,适宜高校、钻研机构参加的工作,同时也是适宜年轻人学习、理解、洞察将来的时机。 更重要的是,OpenHarmony是一个确定性的将来。一个家中所有终端能懂我所需,矿井中所有设施能互相谈话,工厂里所有安装能凝聚成数字化生产力的将来。 咱们在明天有机会去摸索这样的将来,又如何可能回绝时代的馈赠呢? 戴尔·卡耐基在《兽性的弱点》中说:“明天太贵重,不应该为酸苦的忧愁和辛涩的懊悔所消蚀。把下巴贬低,使思维焕发出荣耀,像春阳下跳跃的山泉。抓住明天,它不再回来。” OpenHarmony的开源共建,就是像“春阳下跳跃山泉”般的明天。 使劲把握它,参加它,建设它吧,去取得万物互联时代,富裕无穷可能性的将来。

March 2, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony-32-Beta-Audio音频渲染

一、简介Audio是多媒体子系统中的一个重要模块,其波及的内容比拟多,有音频的渲染、音频的采集、音频的策略管理等。本文次要针对音频渲染性能进行具体地剖析,并通过源码中提供的例子,对音频渲染进行流程的梳理。 二、目录foundation/multimedia/audio_framework audio_framework├── frameworks│ ├── js #js 接口│ │ └── napi│ │ └── audio_renderer #audio_renderer NAPI接口│ │ ├── include│ │ │ ├── audio_renderer_callback_napi.h│ │ │ ├── renderer_data_request_callback_napi.h│ │ │ ├── renderer_period_position_callback_napi.h│ │ │ └── renderer_position_callback_napi.h│ │ └── src│ │ ├── audio_renderer_callback_napi.cpp│ │ ├── audio_renderer_napi.cpp│ │ ├── renderer_data_request_callback_napi.cpp│ │ ├── renderer_period_position_callback_napi.cpp│ │ └── renderer_position_callback_napi.cpp│ └── native #native 接口│ └── audiorenderer│ ├── BUILD.gn│ ├── include│ │ ├── audio_renderer_private.h│ │ └── audio_renderer_proxy_obj.h│ ├── src│ │ ├── audio_renderer.cpp│ │ └── audio_renderer_proxy_obj.cpp│ └── test│ └── example│ └── audio_renderer_test.cpp├── interfaces│ ├── inner_api #native实现的接口│ │ └── native│ │ └── audiorenderer #audio渲染本地实现的接口定义│ │ └── include│ │ └── audio_renderer.h│ └── kits #js调用的接口│ └── js│ └── audio_renderer #audio渲染NAPI接口的定义│ └── include│ └── audio_renderer_napi.h└── services #服务端 └── audio_service ├── BUILD.gn ├── client #IPC调用中的proxy端 │ ├── include │ │ ├── audio_manager_proxy.h │ │ ├── audio_service_client.h │ └── src │ ├── audio_manager_proxy.cpp │ ├── audio_service_client.cpp └── server #IPC调用中的server端 ├── include │ └── audio_server.h └── src ├── audio_manager_stub.cpp └── audio_server.cpp三、音频渲染总体流程 ...

March 2, 2023 · 4 min · jiezi

关于openharmony:带你玩转OpenHarmony-AI基于海思NNIE的AI能力自定义

简介置信大家从玩转OpenAtom OpenHarmony(简称“OpenHarmony”)AI系列专题的其余文章中,曾经拓展了OpenHarmony AI在智慧出行、智慧办公等多场景下的AI自动检测、辨认和判断的新体验,对于OpenHarmony平台上的AI开发有了肯定意识。 如果你曾经有了一个AI创意,怎么训练出相干模型?怎么在你的OpenHarmony设施上部署你的AI模型?接下来以OpenHarmony Hi3516dv300小型零碎为例,率领大家应用Hi3516dv300 NNIE硬件单元实现手势检测与分类性能。 NNIE是Neural Network Inference Engine的简称,是上海海思媒体SoC中专门针对神经网络特地是深度学习卷积神经网络进行减速解决的硬件单元,反对现有大部分的公开网络,如相干分类网络、检测网络、宰割网络等。(详细资料见文末参考链接:《Hi3516dv300平台NNIE开发指南文档》) 开发流程上面以手势分类这一需要为例,梳理一下相干AI需要在Hi3516dv300开发板端落地的开发步骤: 1) 数据采集:针对构想的手势场景,录制相干场景素材。其中必须思考到样本的丰富性和可靠性; 2) 数据集制作和标注:对步骤1中的素材抽取生成数据集,同时还必须对数据集进行相应数据荡涤和数据标注动作; 3) 算法模型设计:你能够参考相干开源算法模型,并针对于利用场景做相应批改。相干模型抉择请参考《Hi3516dv300平台NNIE开发指南文档》3.3公开模型下载章节;本实例中,须要实现手势的检测和分类,其中对于手势检测选用了Yolov2模型,对于手势的分类则选用Resnet18模型; 4) 模型训练:利用算法模型和相应数据集训练出指标模型。模型训练能够部署在本地或者云平台上; 5) 模型转换:目前Hi3516dv300 NNIE配套软件及工具链仅反对Caffe框架,应用其余框架的网络模型须要转化为Caffe框架下的模型。所以必须有相干模型转换步骤; 6) 模型量化仿真:利用RuyiStudio的Runtime wk性能和仿真NNIE性能一直优化模型文件,最终生成部署所需的wukong文件(文件后缀为.wk) ; 7) 板端推理:通过Hi3516dv300摄像头获取的实时图片,加载相干WK文件来实现相干推理动作。(具体开发流程见参考文档:《分类网相干开发流程文档》) 板端推理要害代码Hi3516dv300板端推理的要害代码,依照执行步骤分成如下三局部: 1) 实时图片获取 获取实时图片的前提须要保障Hi3516dv300相干视频输出VI(Video In)、视频解决子系统VPSS(Video Process Sub-System)、视频输入VO(Video Out)模块做好相应初始化动作和实现模块之间的绑定动作。(具体初始化流程见参考文档:《Hi3516dv300平台HiMPP媒体解决软件开发参考文档 ret = HI_MPI_VPSS_GetChnFrame(g_aicMediaInfo.vpssGrp, g_aicMediaInfo.vpssChn0, &frm, s32MilliSec); // 获取通道中一帧图像的数据 if (ret != 0) { ret = HI_MPI_VPSS_ReleaseChnFrame(g_aicMediaInfo.vpssGrp, g_aicMediaInfo.vpssChn0, &frm); // 如获取图像失败,需做图像开释操作 if (ret != HI_SUCCESS) {SAMPLE_PRT("Error(%#x),HI_MPI_VPSS_ReleaseChnFrame failed"}; } }2) 模型文件加载 本实例中,须要实现手势的检测和分类,须要加载相干两个模型文件。 HI_S32 Yolo2HandDetectResnetClassifyLoad(uintptr_t* model){ SAMPLE_SVP_NNIE_CFG_S *self = NULL; ret = CnnCreate(&self, MODEL_FILE_GESTURE); // 加载手势相干分类模型 *model = ret < 0 ? 0 : (uintptr_t)self; HandDetectInit(); // 加载手势检测模型 SAMPLE_PRT("Load hand detect claasify model success\n"); return ret;}int CnnCreate(SAMPLE_SVP_NNIE_CFG_S **model, const char* modelFile){ s32Ret = SAMPLE_COMM_SVP_NNIE_LoadModel((char*)modelFile, &g_stCnnModel); // NNIE框架加载模型文件 s32Ret = SampleSvpNnieCnnParamInit(self, &g_stCnnNnieParam, &g_stCnnSoftwareParam); // 初始化cnn相干参数}int Yolo2Create(SAMPLE_SVP_NNIE_CFG_S **model, const char* modelFile){ s32Ret = SAMPLE_COMM_SVP_NNIE_LoadModel((char*)modelFile, &g_stCnnModel); // NNIE框架加载模型文件 s32Ret = SampleSvpNnieYolov2ParamInit(self, &g_stYolov2NnieParam, &g_stYolov2SoftwareParam); // 初始化Yolov2相干参数}3) 输入推理后果 ...

March 1, 2023 · 1 min · jiezi

关于openharmony:触觉智能RK3568指定单个OpenHarmony镜像进行独立编译

一、OpenHarmony master最新分支提供反对独立编译镜像的性能OpenHarmony master最新分支提供反对独立编译镜像的性能。反对独立编译的镜像有chip_prod.img、sys_prod.img、system.img、usedata.img、vendor.img、ramdisk.img、updater.img。 例如./build.sh --product-name rk3568 --ccache --build-target system_image能够独自编译出system.img镜像OpenHarmony Beta4和5编译构建过程中,只能够在编译命令./build.sh --product-name rk3568 --ccache指定--build-target images或者--build-target make_images对所有镜像进行编译。无奈通过指定单个镜像进行独立编译,同时单个镜像与platform关联,无奈间接指定单个镜像的名称。 out/rk3568/packages/phone/images下镜像文件:MiniLoaderAll.bin boot_linux.img chip_prod.img config.cfg parameter.txt ramdisk.img resource.img sys_prod.img system.img uboot.img updater.img userdata.img vendor.img二、批改OpenHarmonyBeta4源码新增独立编译镜像的性能1、在OpenHarmonyBeta4源码build/ohos/images/BUILD.gn第48行增加如下内容 group("chip_prod_image") {deps = []if (is_standard_system) { deps += [ "//third_party/e2fsprogs:e2fsprogs_host_toolchain", "//third_party/f2fs-tools:f2fs-tools_host_toolchain", ]}foreach(_platform, target_platform_list) { deps += [ ":${_platform}_chip_prod_image" ]}}group("sys_prod_image") {deps = []if (is_standard_system) { deps += [ "//third_party/e2fsprogs:e2fsprogs_host_toolchain", "//third_party/f2fs-tools:f2fs-tools_host_toolchain", ]}foreach(_platform, target_platform_list) { deps += [ ":${_platform}_sys_prod_image" ]}}group("system_image") {deps = []if (is_standard_system) { deps += [ "//third_party/e2fsprogs:e2fsprogs_host_toolchain", "//third_party/f2fs-tools:f2fs-tools_host_toolchain", ]}foreach(_platform, target_platform_list) { deps += [ ":${_platform}_system_image" ]}}group("userdata_image") {deps = []if (is_standard_system) { deps += [ "//third_party/e2fsprogs:e2fsprogs_host_toolchain", "//third_party/f2fs-tools:f2fs-tools_host_toolchain", ]}foreach(_platform, target_platform_list) { deps += [ ":${_platform}_userdata_image" ]}}group("vendor_image") {deps = []if (is_standard_system) { deps += [ "//third_party/e2fsprogs:e2fsprogs_host_toolchain", "//third_party/f2fs-tools:f2fs-tools_host_toolchain", ]}foreach(_platform, target_platform_list) { deps += [ ":${_platform}_vendor_image" ]}}group("ramdisk_image") {deps = []if (is_standard_system) { deps += [ "//third_party/e2fsprogs:e2fsprogs_host_toolchain", "//third_party/f2fs-tools:f2fs-tools_host_toolchain", ]}foreach(_platform, target_platform_list) { if (enable_ramdisk) { deps += [ ":${_platform}_ramdisk_image" ] }}}group("updater_ramdisk_image") {deps = []if (is_standard_system) { deps += [ "//third_party/e2fsprogs:e2fsprogs_host_toolchain", "//third_party/f2fs-tools:f2fs-tools_host_toolchain", ]}foreach(_platform, target_platform_list) { if (enable_ramdisk) { deps += [ ":${_platform}_updater_ramdisk_image" ] }}}group("updater_image") {deps = []if (is_standard_system) { deps += [ "//third_party/e2fsprogs:e2fsprogs_host_toolchain", "//third_party/f2fs-tools:f2fs-tools_host_toolchain", ]}foreach(_platform, target_platform_list) { if (!enable_ramdisk) { deps += [ ":${_platform}_updater_image" ] }}}2、镜像独自编译前须要执行一次全量编译./build.sh --product-name rk3568 --ccache生成全副镜像3、而后在./build.sh --product-name rk3568 --ccache 后指定--build-target chip_prod_image、sys_prod_image、system_image、userdata_image、vendor_image、updater_image/updater_ramdisk_image、ramdisk_image别离生成对应的独自镜像 ...

February 28, 2023 · 2 min · jiezi

关于openharmony:如何使用DevEco-Studio创建Native-C应用

简介本篇次要介绍如何应用DevEco Studio for OpenAtom OpenHarmony (以下简称“OpenHarmony”)创立一个Native C++利用。利用采纳“Native C++”模板,实现了通过Node-API调用C规范库的性能。本示例通过调用C规范库接口来演示调用过程,具体接口是C规范库的计算两个给定数和,并将后果返回到页面展现。通过这个利用咱们能够把握OpenHarmony零碎的ArkTS/JS与C/C++混合开发。ArkTS/JS与C/C++ 混合开发是OpenHarmony零碎中的一套原生模块扩大开发框架,它基于Node.js N-API标准开发,为开发者提供了ArkTS/JS与C/C++模块之间互相调用的交互能力。这套机制对于OpenHarmony零碎开发的价值有两方面:1、OpenHarmony零碎能够将框架层丰盛的模块性能通过js接口凋谢给下层利用应用。2、利用开发者也能够抉择将一些对性能、底层零碎调用有要求的外围性能用C/C++封装实现,再通过js接口应用,进步利用自身的执行效率。 效果图实现成果如下图所示: 通过ArkTS编写界面,依据界面展现点击输入框输出两个数,再点击计算按钮调用接口,将数据传入到C++端,C++端计算后再作为返回值到ArkTS端。 环境搭建咱们首先要实现利用开发环境的搭建,本示例运行RK3568开发板上。 1、 搭建利用开发环境1.1、开始前请参考利用开发疾速上手链接,实现DevEco Studio的装置和开发环境配置:参考链接 1.2、开发环境配置实现后,创立工程(模板抉择“Native C++”),抉择JS或者eTS语言开发。 2、利用调测工程创立实现后,抉择应用真机进行调测。2.1、将搭载OpenHarmony规范零碎的开发板与电脑连贯。2.2、点击File> Project Structure... > Project>SigningConfigs界面勾选“Automatically generate signature”,期待主动签名实现即可,最初点击“OK”。如下图所示: 在编辑窗口右上角的工具栏,点击""按钮运行。 源码构造代码构造剖析,整个工程的代码构造如下: 文件阐明如下: ├── cpp:// C++代码区│ ├── types:// 接口寄存文件夹│ │ └── libadd │ │ ├── index.d.ts // 接口文件│ │ └── package.json // 接口注册配置文件│ ├── CmakeList.text // Cmake打包配置文件│ └── add.cpp // C++源代码└── ets // ets代码区 └── Application │ └── AbilityStage.ts // Hap包运行时类 ├── MainAbility │ └── MainAbility.ts //对Ability生命周期治理 └── pages └── index.ets // 主页面C++端办法实现C++端办法源码是工程的entry/src/main/cpp/add.cpp文件。 ...

February 22, 2023 · 2 min · jiezi

关于openharmony:行业大咖云集-多元观点碰撞-OpenHarmony技术峰会与你相约深圳

2023年2月25日,第一届凋谢原子开源基金会OpenHarmony技术峰会(以下简称技术峰会)将于深圳隆重召开。本次技术峰会由OpenAtom OpenHarmony(以下简称OpenHarmony)技术领导委员会主办,华为承办,润和软件、九联科技、软通能源、诚迈科技、优博讯等单位独特反对,以“技术构筑万物智联”为主题,汇聚学术界、产业界前沿技术,分享当下技术成绩,摸索下一代技术方向,共绘将来开源生态新蓝图。 OpenHarmony是由凋谢原子开源基金会(OpenAtom Foundation)孵化及经营的开源我的项目,指标是面向全场景、全连贯、全智能时代、基于开源的形式,搭建一个智能终端设备操作系统的框架和平台,促成万物互联产业的凋敝倒退。 操作系统畛域前沿停顿、关键技术深度探讨 技术是科技翻新的第一生产力。近年来,OpenHarmony始终致力推动产品技术创新,一直晋升科技赋能程度。为了进一步推动国内开源操作系统畛域的技术创新、人才倒退、生态建设,让宽广技术首领、学者、开发者、高校技术导师等可能纵情地进行观点交换和技术研究,本次技术峰会将设置一场主论坛,六大分论坛,为与会嘉宾带来一场别开生面的技术盛宴。 其中主论坛将邀请多位在业界具备宽泛号召力的科研工作者、权威技术大咖、寰球开源操作系统技术首领等代表,独特探讨操作系统相干畛域的前沿技术方向与实际,面向寰球展现OpenHarmony操作系统的技术革新与生态停顿。置信通过技术首领的演讲与交换,宽广开发者、科技行业从业者、学生群体以及技术爱好者们将可能更加全面地理解操作系统畛域的前沿技术停顿、最新开发个性以及商业利用前景。 六大分论坛则别离从OpenHarmony高校技术俱乐部、OS内核及视窗、生态与互联、平安及秘密计算、编程语言及利用框架、开发者工具6大主题登程,探讨操作系统人才教育、外围技术创新等内容,多位高校技术导师、企业技术专家、以及开源布道师将为大家带来主题演讲和技术案例分享,精彩干货不容错过。 OpenHarmony生态成绩集中亮相 除了干货满满的主题演讲与技术分享,本次技术峰会还设置了互动展区,将集中展现OpenHarmony生态社区的阶段性成绩,多款基于OpenHarmony打造的行业落地产品和解决方案将集中亮相。届时,与会嘉宾能够现场体验,更全面地理解OpenHarmony的生态停顿,感触OpenHarmony的丰盛个性和有限可能! 此外,技术峰会还将公布OpenHarmony高校技术俱乐部星光打算等更多精彩内容,敬请独特期待。2月25日,让咱们相聚深圳,在技术盛宴中独特摸索操作系统畛域的下一代技术方向!期待更多的搭档、开发者与贡献者退出OpenHarmony生态社区,独特构筑万物智联的美好世界。

February 21, 2023 · 1 min · jiezi

关于openharmony:大咖齐聚OpenHarmony技术峰会豪华嘉宾阵容揭晓

第一届凋谢原子开源基金会OpenHarmony技术峰会行将来袭重量级嘉宾和行业大咖高能集结展现OpenHarmony操作系统技术革新1场主论坛、6场分论坛干货拉满2月25日,一起解锁更多精彩!

February 21, 2023 · 1 min · jiezi

关于openharmony:触觉智能RK3568使用体验NAPI-类对象导出及其生命周期管理上

写在结尾: OpenHarmony 中的 N-API组件定义了由ArkTS (JS/ETS)语言编写的代码和 native 代码(应用 C/C++ 编写)交互的形式,由 Node.js Node-API 框架扩大而来。 什么是Node.js Node-API 框架Node.js Node-API为开发者提供了一套C/C++ API用于开发Node.js的Native扩大模块。从Node.js 8.0.0开始,Node-API以实验性个性作为Node.js自身的一部分被引入,并且从Node.js 10.0.0开始正式全面反对Node-API。本文以OpenHarmony 3.2beta3源码中的node.js三方库为例,从third_party/node/README.OpenSource中可得悉3.2beta3移植的node版本为14.19.1,因而可参考的Node.js N-API链接为14.19.1版本,如下:https://nodejs.org/docs/lates...接口名方面,OpenHarmony 中的 N-API 组件提供的接口名与三方库Node.js统一,目前反对局部接口,详情见libnapi.ndk.json文件。本篇是该系列文章的第5篇上半局部。有离北况归的中央就肯定会有样例源码,本文提供了一个IDE开发的NAPI工程用来学习本篇知识点,下半局部将对源码进行解析。通过本文您将相熟: NAPI 导出类对象NAPI 对象生命周期治理往期回顾:[三方库移植之NAPI开发[1]—Hello OpenHarmony NAPI](https://ost.51cto.com/posts/1...) [三方库移植之NAPI开发[2]C/C++与JS的数据类型转换](https://ost.51cto.com/posts/1...) [三方库移植之NAPI开发[3]通过IDE开发NAPI工程](https://ost.51cto.com/posts/1...) [三方库移植之NAPI开发[4]异步调用:Callback&Promise](https://ost.51cto.com/posts/1...) @toc 1.NAPI 类对象导出OpenHarmony NAPI提供了一种“包装”C ++类和实例的办法,以便JS利用能够调用类的构造函数和办法。Node.js Node-API中对于导出类对象的内容,参考链接 : https://nodejs.org/docs/lates...1.1. NAPI导出类对象流程通过napi_define_class定义一个JS类 它蕴含了与 C++ 类对应的构造函数、动态属性、办法、实例属性和办法。通过napi_wrap将 C++ 实例绑定在 JS对象中 当 JS代码调用构造函数时,构造函数回调会应用napi_wrap将一个新的 C++ 实例绑定在 JS对象中,而后返回绑定的C++ 实例。通过napi_unwrap获取作为调用指标的C++ 实例 当 JS调用C++ 类 的办法或属性时,会调用相应的napi_callback C++ 函数。对于实例回调,napi_unwrap获取作为调用指标的 C++ 实例 。这里的napi_callback C++ 函数是指被 Node.js Node-API调用的C++ 函数2. NAPI 对象生命周期程序的生命周期是指程序从启动,运行到完结的整个过程。NAPI 对象的生命周期代表着从对象创立到开释的整个过程,如下图所示: ...

February 10, 2023 · 2 min · jiezi

关于openharmony:OpenHarmony-32-Beta多媒体系列视频录制

一、简介媒体子系统为开发者提供了媒体相干的很多性能,本文针对其中的视频录制性能做个具体的介绍。首先,我将通过媒体子系统提供的视频录制Test代码作为切入点,给大家梳理一下整个录制的流程。 二、目录foundation/multimedia/camera_framework ├── frameworks│ ├── js│ │ └── camera_napi #napi实现│ │ └── src│ │ ├── input #Camera输出│ │ ├── output #Camera输入│ │ └── session #会话治理│ └── native #native实现│ └── camera│ ├── BUILD.gn│ ├── src│ │ ├── input #Camera输出│ │ ├── output #Camera输入│ │ └── session #会话治理├── interfaces #接口定义│ ├── inner_api #外部native实现│ │ └── native│ │ ├── camera│ │ │ └── include│ │ │ ├── input│ │ │ ├── output│ │ │ └── session│ └── kits #napi接口│ └── js│ └── camera_napi│ ├── BUILD.gn│ ├── include│ │ ├── input│ │ ├── output│ │ └── session│ └── @ohos.multimedia.camera.d.ts└── services #服务端 └── camera_service ├── binder │ ├── base │ ├── client #IPC的客户端 │ │ └── src │ └── server #IPC的服务端 │ └── src └── src三、录制的总体流程 ...

February 9, 2023 · 6 min · jiezi

关于openharmony:稀疏镜像在OpenHarmony上的应用

一、稠密镜像降级背景罕用零碎镜像格局为原始镜像,即RAW格局。镜像体积比拟大,在烧录固件或者降级固件时比拟耗时,而且在挪动设施降级过程时比拟消耗流量。为此,将原始镜像用稠密形容,能够大大地缩减镜像体积,省时省流量。 二、稠密镜像原理1、稠密镜像的概念原始镜像:即raw image,残缺的ext4分区镜像,蕴含很多全零的有效填充区稠密镜像:即sparse image,将raw ext4进行稠密形容,因而尺寸比拟小,制作目录有多少文件就计算多少,没有全零填充 2、稠密镜像格局 稠密镜像数据格式:首先是sparse_header占用28byte,而后是12byte的chunk_header,同样这chunk_header的类型决定了前面跟着的数据,如果读到数据是0xCAC1意味着前面是自身的raw_data,如果是0xCAC3,则前面num为0,接着再0xCAC2意味着前面填充4byte的内容。 三、实现稠密镜像降级计划版本基线:OpenAtom OpenHarmony(以下简称“OpenHarmony”) 3.1 Release代码门路:https://gitee.com/openharmony... 1、稠密镜像烧录(1)生成稠密格局镜像有2种办法能够生成稠密镜像:1)批改文件build/ohos_var.gni中,sparse_image=true 2)编译命令减少--sparse-image字段,如./build.sh --product-name=xxx --sparse-image (2)减少稠密格局转换工具在目录build/ohos/images/mkimage中减少文件img2simg,该工具用于编译实现后将raw镜像转换为sparse格局,并设置权限为777。 (3)编译后的镜像比照 编译出的镜像格局为sparse格局,镜像大小相比raw格局显著变小。 (4)烧录稠密镜像 烧录稠密镜像办法和烧录原始镜像办法统一。 稠密镜像自身是不能间接挂载的,在烧录过程中通过uboot将稠密格局镜像还原为原始镜像,而后写到磁盘中,系统启动后可挂载对应的镜像。 2、稠密镜像降级升级包采纳稠密镜像制作。(1)批改升级包制作工具官网升级包工具不反对生成稠密镜像的升级包,批改升级包工具,生成稠密格局的升级包。.\base\update\packaging_tools\image_class.py 依照上图所示正文代码 (2)生成稠密镜像升级包和全量镜像升级包制作方法统一。参考:https://gitee.com/openharmony... (3)适配updater组件中稠密镜像性能 ● 减少写稠密镜像分支.\base\update\updater\services\applypatch\data_writer.cpp 写数据函数CreateDataWriter减少写稠密镜像分支 case WRITE_SPARSE:{ std::unique_ptr<SparseWriter> writer(std::make_unique<SparseWriter>(partitionName)); return std::move(writer);}● 减少稠密镜像类申明.\base\update\updater\services\applypatch\raw_writer.h减少稠密镜像类申明及相干变量定义 typedef struct sparse_header { uint32_t magic; /* 0xed26ff3a */ uint16_t major_version; /* (0x1) - reject images with higher major versions */ uint16_t minor_version; /* (0x0) - allow images with higer minor versions */ uint16_t file_hdr_sz; /* 28 bytes for first revision of the file format */ uint16_t chunk_hdr_sz; /* 12 bytes for first revision of the file format */ uint32_t blk_sz; /* block size in bytes, must be a multiple of 4 (4096) */ uint32_t total_blks; /* total blocks in the non-sparse output image */ uint32_t total_chunks; /* total chunks in the sparse input image */ uint32_t image_checksum; /* CRC32 checksum of the original data, counting "don't care" */ /* as 0. Standard 802.3 polynomial, use a Public Domain */ /* table implementation */} sparse_header_t; #define SPARSE_HEADER_MAGIC 0xed26ff3a #define CHUNK_TYPE_RAW 0xCAC1#define CHUNK_TYPE_FILL 0xCAC2#define CHUNK_TYPE_DONT_CARE 0xCAC3#define CHUNK_TYPE_CRC32 0xCAC4 typedef struct chunk_header { uint16_t chunk_type; /* 0xCAC1 -> raw; 0xCAC2 -> fill; 0xCAC3 -> don't care */ uint16_t reserved1; uint32_t chunk_sz; /* in blocks in output image */ uint32_t total_sz; /* in bytes of chunk input file including chunk header and data */} chunk_header_t; class SparseWriter : public DataWriter {public: virtual bool Write(const uint8_t *addr, size_t len, WriteMode mode, const std::string &partitionName); explicit SparseWriter(const std::string partitionName) : offset_(0), fd_(-1), partitionName_(partitionName) {} virtual ~SparseWriter() { offset_ = 0; if (fd_ > 0) { fsync(fd_); close(fd_); } fd_ = -1; }private: int WriteInternal(int fd, const uint8_t *data, size_t len, const std::string &partitionName); SparseWriter(const SparseWriter&) = delete; const SparseWriter& operator=(const SparseWriter&) = delete; off64_t offset_; int fd_; std::string partitionName_;};● 减少稠密镜像类实现.\base\update\updater\services\applypatch\raw_writer.cpp减少稠密镜像类实现及相干变量定义,原有代码不变 ...

February 8, 2023 · 3 min · jiezi

关于openharmony:OpenHarmony标准系统内核学习2CPU轻量级隔离特性

CPU轻量级隔离个性基本概念CPU轻量级隔离个性提供了依据零碎负载和用户配置来抉择适合的CPU进行动静隔离的能力。 内核会将被隔离CPU上的工作和中断迁徙到其余适合的CPU上执行被隔离的CPU会进入ilde状态,以此来达到功耗优化的指标。同时提供用户态的配置和查问接口来实现更好的零碎调优。ilde状态: 古代处理器通常可能进入这样的状态——程序的执行被暂停,而且属于它的指令不从内存中提取或执行。参考文档:https://www.kernel.org/doc/ht...配置领导使能CPU轻量级隔离个性启用CPU轻量级隔离,须要通过编译内核时关上相应的配置项及依赖,相干CONFIG如下:rk3568芯片组件config:kernel/linux/config/linux-5.10/arch/arm64/configs/rk3568_standard_defconfigCONFIG_CPU_ISOLATION_OPT=yCONFIG_SCHED_CORE_CTRL=y# 另有局部CONFIG被依赖CONFIG_SMP=yCONFIG_SCHED_WALT=y引入动静核隔离的内核基础设施以及对应的用户态接口CPU轻量级隔离个性与kernel_linux_5.10引入动静核隔离的内核基础设施以及对应的用户态接口相干。反对隔离核场景和解除隔离核场景。 隔离核:内核依据接口配置值对隔离核上非绑定在本核上的工作进行迁徙,放到affinity中其它隔离核上执行。解除隔离核:内核依据接口配置值以及零碎负载解除核隔离,工作能够在该核上执行。合入的相干issues如下:https://gitee.com/openharmony... 合入的内核局部代码如下:https://gitee.com/openharmony... 波及文件如下 相干接口CPU轻量级隔离提供了一些接口用于管制CPU隔离核的个数以及记录以后状态,反对以CPU cluster层级进行配置,这些接口位于每个CPU cluster的首个CPU设施信息目录中,如/sys/devices/system/cpu/cpu0/core_ctl 性能分类接口名形容管制接口enable性能开关,1示意开启,0示意敞开 min_cpus设置沉闷(未隔离)CPU最小核数 max_cpus设置沉闷(未隔离)CPU最大核数,其中最大值为CPU cluster蕴含的CPU个数状态接口active_cpus显示CPU cluster最终计算须要的CPU核数 need_cpus显示以后须要解隔离的CPU核数 global_state记录零碎所有CPU cluster的状态信息,蕴含CPU 隔离状态,online状态以及负载信息等。应用CPU轻量级隔离接口应用hdc_std工具进入rk3568开发板终端,RK3568 CPU为四核A55 查看CPU轻量级隔离性能开关状态 cat /sys/devices/system/cpu/cpu0/core_ctl/enable 开关CPU轻量级隔离性能 echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/enableecho 1 > /sys/devices/system/cpu/cpu0/core_ctl/enable 设置沉闷CPU最小核数和最大核数 echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpusecho 4 > /sys/devices/system/cpu/cpu0/core_ctl/max_cpus 显示以后曾经动静隔离的CPU核 cat /sys/devices/system/cpu/core_ctl_isolated 显示以后未隔离和CPU cluster最终计算须要的CPU核数 cat /sys/devices/system/cpu/cpu0/core_ctl/active_cpus cat /sys/devices/system/cpu/cpu0/core_ctl/need_cpus 显示零碎记录的所有CPU cluster的状态信息 cat /sys/devices/system/cpu/cpu0/core_ctl/global_stateOpenHarmony规范零碎内核反对的其它个性OpenHarmony规范零碎内核反对统计各个过程的dma-buf占用数据收集:在dmabuf export的时候(创立时),记录exporter(申请者)的pid、过程名等信息。展现:新增以下两个内核节点用于展现,显示每个过程占用的dmabuf objects信息:包含dmabuf object的大小、对应inode、申请者、exp_name等所需信息。 /proc/process_dmabuf_info 与 /sys/kernel/debug/dma_buf/process_bufinfo 两个节点性能雷同。 OpenHarmony规范零碎内核反对Blackboxrk3568上DFX反对了Blackbox性能,大部分状况下,能够记录重启前最初时刻的内核日志,门路为/data/log/bboxBlackbox的性能会在设施挂掉的时候保留现场,内核相干的config: 内核编译选项查看:zcat /proc/config.gz /proc/config.gz 就是规范零碎内核配置文件,用 gzip 格局压缩过。只有当内核配置 CONFIG_IKCONFIG 和 CONFIG_IKCONFIG_PROC 为 y,才会在 /proc 中呈现 config.gz 文件。相干issues:https://gitee.com/openharmony...trace目录/sys/kernel/debug/tracingcpuset与cpu热插拔解耦https://gitee.com/openharmony... ...

February 7, 2023 · 1 min · jiezi

关于openharmony:如何让OpenHarmony编译速度狂飙

OpenHarmony有两种编译形式,一种是通过hb工具编译,一种是通过build.sh脚本编译。本文笔者将晋升build.sh形式编译速度的办法整顿如下: 因为笔者只用build.sh脚本编译,没用过hb工具,如同上面的选项也能够用于hb工具在OpenHarmony源码中执行./build.sh --h,会打印出./build.sh中能够增加的所有选项 $ ./build.sh -h++++++++++++++++++++++++++++++++++++++++The system shell is bash 4.4.20(1)-release++++++++++++++++++++++++++++++++++++++++2023-02-07 12:58:04-hUsage: entry.py [options]Options:-h, --help show this help message and exit--source-root-dir=SOURCE_ROOT_DIR--product-name=PRODUCT_NAME--device-name=DEVICE_NAME--target-cpu=TARGET_CPU--target-os=TARGET_OS--compile-config=COMPILE_CONFIG-T BUILD_TARGET, --build-target=BUILD_TARGET--gn-args=GN_ARGS --ninja-args=NINJA_ARGS-v, --verbose --keep-ninja-going --sparse-image --jobs=JOBS --export-para=EXPORT_PARA--build-only-gn --ccache --fast-rebuild --disable-package-image--disable-post-build --disable-part-of-post-build=DISABLE_PART_OF_POST_BUILD--log-level=LOG_LEVEL--device-type=DEVICE_TYPE--build-variant=BUILD_VARIANT--share-ccache=SHARE_CCACHE=====build successful=====晋升OpenHarmony编译速度的选项build.sh脚本编译rk3568形式命令如下: ./build.sh --product-name rk3568 --ccache通过在该命令后增加如下选项晋升编译速度 增加 --disable-post-build 参数:勾销Postbuild过程,最初的ninja trace解析、每个子系统(不包含源码中的third_party局部)的rom size统计等动作会没有(每个子系统部件形容文件名称为bundle.json,外面定义了子系统的名称。)提供反对disable post build参数是怎么做的 https://gitee.com/openharmony..../build.sh --product-name rk3568 --disable-post-build 增加 --disable-package-image参数勾销最初所有的image镜像文件压缩成tar包的动作tar包地位 out\rk3568\images.tar.gz./build.sh --product-name rk3568 --disable-package-image增加 --ccache 参数:ccache会缓存c/c++编译的编译输入,下一次在编译输出不变的状况下,间接复用缓存的产物。用来缓存编译过的.o文件等执行sudo apt-get install ccache命令装置ccache再在 --ccache后增加export CCACHE_NOHASHDIR="true" 和 export CCACHE_SLOPPINESS="include_file_ctime" (设置ccache在做hash的时候不hash门路、不查看文件的change time)./build.sh --product-name rk3568 --ccache export CCACHE_NOHASHDIR="true" export CCACHE_SLOPPINESS="include_file_ctime" ...

February 7, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony社区运营报告2022年12月

本月快讯• 本月新增22款产品通过兼容性测评,累计220款产品通过兼容性测评。• 12月28日,OpenAtom OpenHarmony(以下简称“OpenHarmony”)凭借其翻新的技术个性和开源生态建设成绩,荣膺“InfoQ 2022年度十大开源新锐我的项目”。• 12月28日,OpenHarmony凭借在开发者社区畛域所做出的突出贡献,荣获“CSDN年度开发者社区”奖项。• 2022年12月9-10日,第十届中国互联网测试开发大会圆满举办。OpenHarmony兼容性工作组组长黄然与OpenHarmony兼容性工作组专家参加了本次大会,与开发者探讨了如何构筑开源操作系统的质量体系并高效运行。 一、代码奉献1、本月,华为、深开鸿、软通能源等代码奉献单位共建下列个性进入骨干• XTS OPENGL测试套件• GN脚本转换工具• HCS可视化生成工具• 驱动Codec HDI1.0编码器、Codec HDI2.0编码器• 软总线WiFi DHCP设置IP个性• TextInput组件能力加强• TextPicker组件能力加强• Swiper组件能力加强 二、生态停顿1、累计已有76家厂商的220款产品通过兼容性测评,本月新增22款。 2、OpenHarmony兼容性工作组专家参加了第十届中国互联网测试开发大会 2022年12月9-10日,第十届中国互联网测试开发大会圆满举办。OpenHarmony兼容性工作组组长黄然与OpenHarmony兼容性工作组专家参加了本次大会,与开发者探讨了如何构筑开源操作系统的质量体系并高效运行。 3、新增22款产品通过兼容性测评(统计周期:11月25日~12月24日) 三、社区治理工委会治理:• OpenHarmony我的项目群:经凋谢原子开源基金会TOC投票及凋谢原子开源基金会理事会审核,OpenHarmony我的项目群正式成立。 技术治理:• TSC评审通过西安交通大学、重庆大学、北京邮电大学的申请,成立OpenHarmony技术俱乐部。截至12月30日,累计10所高等院校成立OpenHarmony技术俱乐部。 生态倒退:• 截至12月31日,OpenHarmony 生态委员会成员单位累计37家,本月新增7家,别离是:艾体威尔电子技术(北京)有限公司、宝宝巴士股份有限公司、北京搜狗科技倒退有限公司、福州市凌睿智捷电子有限公司、广州朗国电子科技股份有限公司、惠尔丰信息系统有限公司、深圳康佳电子科技有限公司(依照中文首字母排序)。 四、技术倒退2022年11月30日公布OpenHarmony 3.2 Beta4:以后版本在OpenHarmony 3.2 Beta3的根底上,更新反对或优化加强的能力如下: ①规范零碎根底能力加强• 程序访问控制子系统反对前向CFI、API异样解决优化等;• 内核子系统反对Hyperhold内存扩大个性加强、F2FS末端性能加强优化;• 多模输出子系统反对键盘性能按键使能去使能、输出设施相干的多热区反对;• 图形子系统反对基于共享内存机制传输图形数据、反对YUV图层、RS侧反对GPU合成、虚构屏反对旋转和动静分辨率等;• 降级子系统反对AB热降级性能、flashd降级反对AB分区设施降级、SD/OTG降级反对AB分区设施降级;• 全球化子系统反对设施治理事件按需订阅、系统资源反对overlay差分、资源管理反对跨OS平台能力;• Misc软件子系统反对PUT形式上传文件、下载治理反对配置下载工作、输入法框架优化和加强,反对打印服务框架;• DFX子系统反对功耗数据采集、零碎事件数据采集、perf数据采集等;• ArkTS API新增反对错误码的上报,帮忙开发者疾速捕获异样,晋升异样解决的效率。 ②规范零碎利用开发框架加强• 反对动静库隔离,运行治理反对待处理利用拦挡;• 反对窗口属性设置、反对ArkTS卡片交互、XComponent提供容器组件能力等;• 反对配置利用的依赖关系,反对对利用装置及卸载的名单进行增、删、查操作,反对对禁止运行的利用名单进行增、删、查操作。 ③规范零碎分布式能力加强• 分布式硬件反对同账号凭据参数申请和导入。https://gitee.com/openharmony... 五、社区活动近期共举办5场流动。 六、社区及官网经营1、单干社区官网账号公布内容数据汇总 截至2022年12月30日,9个单干社区的官网经营账号“OpenHarmony开发者”共公布内容(含技术文章、视频教程)1457篇,累计取得总PV/UV数595478,同比上月增长6%,账号取得粉丝数1366人,较上月增幅2%。 2、OpenHarmony社群直播数据 截至2022年12月30日,OpenHarmony社群累计发展直播78场,累计观看量38511,观看人数20649;其中66场联结各家单干社区直播,累计213场次,观看次数1147920;观看人数302184;共计OpenHarmony直播所有渠道产生观看次数1186431、观看人数322833。 3、OpenHarmony社群经营数据 截至2022年12月30日,社群共沉淀开发者7672人,累计社群沟通信息9.9万,累计与开发者沟通3.2万次,累计触达音讯6.1万条。

January 28, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony如何切换横竖屏

前言在日常开发中,大多APP可能依据理论状况间接将APP的界面方向固定,或竖屏或横屏。但在应用过程中,咱们还是会遇到横竖屏切换的性能需要,可能是通过物理重力感应触发,也有可能是用户手动触发。所以本文次要带大家理解在OpenAtom OpenHarmony(以下简称“OpenHarmony”)利用开发的过程中,如何在Stage模型和FA模型下应用对应的接口去实现横竖屏的切换。 本文中OpenHarmony版本为3.2 Beta4,API版本为9。开发板为DAYU200。 FA模型FA模型下,setDisplayOrientation和setDisplayOrientation是切换横竖屏的接口。 文档:https://gitee.com/openharmony... context.setDisplayOrientationsetDisplayOrientation(orientation:bundle.DisplayOrientation, callback: AsyncCallback<void>): void 设置以后能力的显示方向(callback模式)。 零碎能力:SystemCapability.Ability.AbilityRuntime.Core 参数: 示例: import featureAbility from '@ohos.ability.featureAbility';import bundle from '@ohos.bundle';//FA模型下获取contextvar context = featureAbility.getContext();var orientation = bundle.DisplayOrientation.UNSPECIFIED;context.setDisplayOrientation(orientation, (err) => { console.info("setDisplayOrientation err: " + JSON.stringify(err));});残缺代码 import bundle from '@ohos.bundle';import featureAbility from '@ohos.ability.featureAbility';@Entry@Componentstruct Index { @State message: string = '横竖屏切换 ' @State portrait: boolean = true build() { Row() { Column() { Text(this.message) .fontSize(30) .fontWeight(FontWeight.Bold).onClick(() => { var context = featureAbility.getContext(); if (this.portrait) { // 横屏 var orientation = bundle.DisplayOrientation.LANDSCAPE; context.setDisplayOrientation(orientation, (err) => { this.portrait = !this.portrait console.info("setDisplayOrientation err: " + JSON.stringify(err)); }); } else { //竖屏 var orientation = bundle.DisplayOrientation.PORTRAIT; context.setDisplayOrientation(orientation, (err) => { this.portrait = !this.portrait console.info("setDisplayOrientation err: " + JSON.stringify(err)); }); } }) } .width('100%') } .height('100%') }}Stage模型从API 9开始,能够应用setPreferredOrientation来切换横竖屏。 ...

January 18, 2023 · 2 min · jiezi

关于openharmony:润和软件发布基于高性能RISCV芯片的OpenHarmony标准系统平台

新年伊始,从中国(南京)软件谷就传来振奋人心的音讯,记者12日在基于高性能RISC-V芯片的OpenHarmony规范零碎平台发布会上获悉,由江苏润和软件股份有限公司(以下简称“润和软件”)旗下江苏润开鸿数字科技有限公司(以下简称“润开鸿”)适配研发的、基于平头哥SoC原型”曳影1520“的OpenHarmony规范零碎开发平台HH-SCDAYU800开发套件正式公布。中国科学院软件研究所高级工程师、OpenHW亚洲工作组领导委员会主席、OpenCV RISC-V畛域主席邢明杰认为:这标记着“OpenHarmony+RISC-V指令集”已造成开源合力并在规范零碎高算力设施开发方面实现寰球新冲破,将来基于二者的软硬件底层能力进行开源翻新必将迎来全力减速。 突破国内垄断,争取在寰球科技翻新畛域中更多的话语权 RISC-V对于一般公众来说,可能并不非常分明含意,但对于中国突破多数国内巨头在芯片核心技术垄断、争取在寰球科技翻新畛域增大话语权、全面推动中国千行百业数字化转型有着重要的作用。 芯片是“集成电路”的俗称。要在芯片上执行软件程序,必须先将软件/程序语言翻译成硬件指令,这套标准规范即芯片架构/指令集。目前,寰球芯片架构格局由Intel和ARM统领。美国公司英特尔的x86架构称霸个人电脑和服务器两大市场,英国公司ARM架构通行于智能手机和物联网市场。过来几十年,英特尔与微软结盟,ARM与苹果、谷歌结盟,成为各自市场的事实标准。采纳哪种指令集,不仅须要其专利受权,IP受权费用动辄上百万、千万美元,而且,还要看人脸色。 RISC-V采纳开源凋谢的模式,由 RISC-V国内基金会保护,不属于任何公司,目前有70多个国家3000多家企业入驻。国内企业对RISC-V的布局很早,中国工程院院士倪光南曾预测,在CPU畛域,将来将造成英特尔(x86)、ARM、RISC-V三分天下的格局。以后国内RISC-V基金会80%以上最高会员均为中国企业,包含华为、阿里巴巴、紫光展锐、中兴通讯、中科院等。把握此先发劣势,联结业界聚焦RISC-V架构,一直发展壮大RISC-V的产业生态,倒退中国支流CPU芯片产业,我国将可能在CPU核心技术上把握主动权。 开源软硬件能力的集大成者—HH-SCDAYU800 HH-SCDAYU800开发套件是由润和软件推出的OpenHarmony智能硬件,基于集成四核高性能RISC-V处理器玄铁C910的平头哥曳影1520,AI算力达4TOPs,搭载润开鸿HiHopeOS操作系统,反对OpenHarmony规范零碎。HH-SCDAYU800反对蓝牙、Wi-Fi、音频、视频和摄像头等性能,反对多种视频输入输出接口,并提供丰盛的扩大接口,可用于工控平板、智慧大屏、智能NVR、信息公布零碎、云终端、车载中控等场景,反对医疗成像、视频会议、家用机器人和无人机等中高端利用,宽泛用于边缘计算、人工智能、图像识别、多媒体等畛域。 HH-SCDAYU800面向行业与开发者,搭建出一个对立底层的智能终端设备操作系统开发平台,实现OpenHarmony分布式、全场景、全连贯、全智能等性能个性。在开源共建成绩的出现上,一方面,凋谢的RISC-V架构已成为国内芯片厂商强化芯片自主设计能力的重要方向;另一方面,OpenHarmony是面向全场景的开源智能终端设备操作系统,而HH-SCDAYU800作为软硬件两端开源的技术能力集大成者,将启迪“OpenHarmony+RISC-V”高性能规范零碎产品生态的开源翻新,使能千行百业、助推万物互联。 凋谢原子开源基金会业务发展部部长朱其罡认为:OpenHarmony与RISC-V的强强联合所拧成的开源合力,将无效助推整个中国开源社区生态的倒退,促成成员奉献越来越多元化翻新,服务于中国千行百业的数字化转型大潮。润开鸿基于高性能RISC-V芯片的OpenHarmony规范零碎平台HH-SCDAYU800的公布则可间接助推生态企业的“OpenHarmony+RISC-V”高性能产品翻新开发,扩充OpenHarmony规范零碎的设施反对面,助力开源共建搭档造成可闭环商业模式,造成短暂而继续的倒退。润开鸿生态技术总监连志安示意:将来,润开鸿将继续联结各行业跨界搭档,协力倒退开源生态,融入寰球科技翻新网络,在软硬件两端奉献中国力量。

January 12, 2023 · 1 min · jiezi

关于openharmony:带你玩转OpenHarmony-AI基于海思NNIE的AI能力自定义

简介置信大家从玩转OpenAtom OpenHarmony(简称“OpenHarmony”)AI系列专题的其余文章中,曾经拓展了OpenHarmony AI在智慧出行、智慧办公等多场景下的AI自动检测、辨认和判断的新体验,对于OpenHarmony平台上的AI开发有了肯定意识。 如果你曾经有了一个AI创意,怎么训练出相干模型?怎么在你的OpenHarmony设施上部署你的AI模型?接下来以OpenHarmony Hi3516dv300小型零碎为例,率领大家应用Hi3516dv300 NNIE硬件单元实现手势检测与分类性能。 NNIE是Neural Network Inference Engine的简称,是上海海思媒体SoC中专门针对神经网络特地是深度学习卷积神经网络进行减速解决的硬件单元,反对现有大部分的公开网络,如相干分类网络、检测网络、宰割网络等。(详细资料见文末参考链接:《Hi3516dv300平台NNIE开发指南文档》) 开发流程上面以手势分类这一需要为例,梳理一下相干AI需要在Hi3516dv300开发板端落地的开发步骤: 1) 数据采集:针对构想的手势场景,录制相干场景素材。其中必须思考到样本的丰富性和可靠性; 2) 数据集制作和标注:对步骤1中的素材抽取生成数据集,同时还必须对数据集进行相应数据荡涤和数据标注动作; 3) 算法模型设计:你能够参考相干开源算法模型,并针对于利用场景做相应批改。相干模型抉择请参考《Hi3516dv300平台NNIE开发指南文档》3.3公开模型下载章节;本实例中,须要实现手势的检测和分类,其中对于手势检测选用了Yolov2模型,对于手势的分类则选用Resnet18模型; 4) 模型训练:利用算法模型和相应数据集训练出指标模型。模型训练能够部署在本地或者云平台上; 5) 模型转换:目前Hi3516dv300 NNIE配套软件及工具链仅反对Caffe框架,应用其余框架的网络模型须要转化为Caffe框架下的模型。所以必须有相干模型转换步骤; 6) 模型量化仿真:利用RuyiStudio的Runtime wk性能和仿真NNIE性能一直优化模型文件,最终生成部署所需的wukong文件(文件后缀为.wk) ; 7) 板端推理:通过Hi3516dv300摄像头获取的实时图片,加载相干WK文件来实现相干推理动作。(具体开发流程见参考文档:《分类网相干开发流程文档》) 板端推理要害代码Hi3516dv300板端推理的要害代码,依照执行步骤分成如下三局部: 1) 实时图片获取获 取实时图片的前提须要保障Hi3516dv300相干视频输出VI(Video In)、视频解决子系统VPSS(Video Process Sub-System)、视频输入VO(Video Out)模块做好相应初始化动作和实现模块之间的绑定动作。(具体初始化流程见参考文档:《Hi3516dv300平台HiMPP媒体解决软件开发参考文档》) ret = HI_MPI_VPSS_GetChnFrame(g_aicMediaInfo.vpssGrp, g_aicMediaInfo.vpssChn0, &frm, s32MilliSec); // 获取通道中一帧图像的数据 if (ret != 0) { ret = HI_MPI_VPSS_ReleaseChnFrame(g_aicMediaInfo.vpssGrp, g_aicMediaInfo.vpssChn0, &frm); // 如获取图像失败,需做图像开释操作 if (ret != HI_SUCCESS) {SAMPLE_PRT("Error(%#x),HI_MPI_VPSS_ReleaseChnFrame failed"}; } }2) 模型文件加载本实例中,须要实现手势的检测和分类,须要加载相干两个模型文件。 HI_S32 Yolo2HandDetectResnetClassifyLoad(uintptr_t* model){ SAMPLE_SVP_NNIE_CFG_S *self = NULL; ret = CnnCreate(&self, MODEL_FILE_GESTURE); // 加载手势相干分类模型 *model = ret < 0 ? 0 : (uintptr_t)self; HandDetectInit(); // 加载手势检测模型 SAMPLE_PRT("Load hand detect claasify model success\n"); return ret;}int CnnCreate(SAMPLE_SVP_NNIE_CFG_S **model, const char* modelFile){ s32Ret = SAMPLE_COMM_SVP_NNIE_LoadModel((char*)modelFile, &g_stCnnModel); // NNIE框架加载模型文件 s32Ret = SampleSvpNnieCnnParamInit(self, &g_stCnnNnieParam, &g_stCnnSoftwareParam); // 初始化cnn相干参数}int Yolo2Create(SAMPLE_SVP_NNIE_CFG_S **model, const char* modelFile){ s32Ret = SAMPLE_COMM_SVP_NNIE_LoadModel((char*)modelFile, &g_stCnnModel); // NNIE框架加载模型文件 s32Ret = SampleSvpNnieYolov2ParamInit(self, &g_stYolov2NnieParam, &g_stYolov2SoftwareParam); // 初始化Yolov2相干参数}3) 输入推理后果后果推理过程中,先判断是否检测到手势动作,随后对这个手势动作进行分类检测。 ...

January 12, 2023 · 1 min · jiezi

关于openharmony:一文总结ACE代码框架

一、前言ACE_Engine框架是OpenAtom OpenHarmony(简称“OpenHarmony”)的UI开发框架,为开发者提供在进行利用UI开发时所必须的各种组件,以及定义这些组件的属性、款式、事件及办法,通过这些组件能够不便进行OpenHarmony上UI利用的开发。 ACE_Engine提供的组件分为两种类型,即类Web开发范式类型和申明式开发范式类型。其中类Web开发范式中定义一个页面须要三个文件,html,css和js文件。html文件负责页面布局,css文件负责定义组件的款式,js文件负责业务逻辑实现。而申明式范式仅须要1个ets文件,页面布局和组件的款式以及业务逻辑实现都在此文件中。如图: 二、ACE_Engine框架模块划分对于类Web开发范式组件,依据组件从前端到后端的过程,能够将整个框架划分为JsFrameWork、DomNode、ComPonent、RenderNode四个模块。其作用别离如下: • JsFrameWork:负责解析前端html和css文件,创立出DomNode树。该树的构造和前端页面是一一对应的。 • DomNode:负责将Dom树转换为Component树。留神一个Dom节点转换过后的Component节点实际上并不是一个独自的节点,而是一棵以rootComponent为根节点的组件树。该树中逐层包裹了对应的性能组件,最外部才是真正的主节点(这样的作用是性能解耦合,将某一特定的性能放到对应的组件中去)。如BoxComponet负责组件的边框绘制,DisplayComponent负责组件透明度绘制,TouchComponent负责组件触摸工夫的解决等,一个具体过程见DOMNode::GenerateComponentNode函数。 • ComPonent:负责将Component树中所有继承自RenderComponent的节点(可绘制节点)创立对应的RendNode节点,生成对应的RendNode树。见RenderComponent ::CreateRenderNode虚函数。 • RenderNode:RenderNode即可绘制的节点,负责组件的最终布局和绘制。其中布局函数为PerformLayout虚函数,由每个组件对应的实现类Render类来实现。绘制函数为Paint虚函数,由每个组件对应的子类FlutterRender类来实现。 对于申明式开发范式组件,依据组件从前端到后端的过程,能够将整个框架划分为EtsLoader、JsView、ComPonent、RenderNode四个模块。其作用别离如下: • EtsLoader负责解析ets页面,依据组件的tag标签创立对应的JsView对象,生成jsView树。• JsView负责解决组件的属性,办法和事件。并通过Create函数创立对应的Component树。• ComPonent:同Web开发范式组件中的Component• RenderNode:同Web开发范式组件中的RenderNode 各模块创立示意图如下图所示: 各模块间的调用关系及次要函数如下: 三、组件的属性和款式的传递过程组件的属性和款式是保留在前端页面的,通过JsframeWork解析页面,并调用JsEngine的CreateDomNode接口创立Dom节点的同时传递新节点属性和款式。如果页面中属性款式发生变化,则独自调用SetAttr或SetStyle来更新属性和款式。DomNode收到属性和款式之后,会将通用属性保留在Declaration类中,将组件特有的属性通过SetSpecialAttr和SetSpecialStyle函数保留在本身。DomNode调用对应Component类的Set*函数,将所有属性和款式设置到Component中。RenderNode创立后,会调用其Update函数。该函数内调用对应Component的Get*函数,来接管组件的所有属性和款式。在PipeLine中会遍历每个RenderNode进行布局和绘制,此时,就根据RenderNode中接管的属性和款式,进行布局并绘制。 四、总结ACE_Engine框架整体代码较简单,波及的类别也比拟多。本文介绍了一个ACE组件从前端的页面形容,到中间层三棵树的创立和属性传递,以及最终进行UI布局和绘制的整个过程。该过程总结一下就是:JS页面 —> Dom树 —> Component树 —> Render树,最初绘制Render树。大家只有了解这个根本过程,再联合代码关注重点流程,就可能对ACE_Engine框架的代码有整体的了解。在此基础上能够进行ACE组件的加强性能开发,包含新增一个ACE组件等。 参考新增一个类Web范式组件开发指南https://gitee.com/yan-shuifen...前端新增组件开发指南%EF%BC%9A以新增MyCircle组件为例_ver1.0.md 新增一个申明式范式组件开发指南https://gitee.com/yan-shuifen...前端新增组件开发指南%EF%BC%9A以新增MyCircle组件为例_ver1.0.md

January 10, 2023 · 1 min · jiezi

关于openharmony:OpenHarmony系统使用gdb调试init

前言OpenAtom OpenHarmony(简称“OpenHarmony”)适配新的开发板时,启动流程init大概率会呈现问题,其为内核间接拉起的第一个用户态过程,问题定位伎俩只能依赖代码走读和减少调试打印,初始化过程中零碎解体的问题就更难定位了。如果能应用gdb调试init,会极大进步定位效率。本文将具体阐释二次启动的规范零碎如何应用gdb调试init。 1. 编译出带debug信息的调试版本 将gdb打包到零碎镜像中。init不失常的状况下,零碎无奈失常启动工作,无奈应用hdc工具加载gdb工具,所以间接在制作镜像时,将其打包到零碎镜像bin目录下。批改device\board\hihope\rk3568\cfg\BUILD.gn打包脚本如下,留神保障gdb工具已搁置在此本目录下。 调试版本镜像带符号,须要批改镜像配置文件,批改其大小限度,尤其是system.img,编译失败时不会提醒理论镜像大小,须要批改到5G以上。 编译调试版本,关上版本调试开关./build.sh --product-name=XXX --gn-args="is_debug=true use_unstripped_as_runtime_outputs=true" 上述debug版本只能调试一般性能而不能调试init,还须要对init服务的源码进行局部适配批改,init性能调试失常后,需将源码复原。 首先,在init挂载好system、vendor等镜像,并将根目录切换到system镜像后,在启动第二阶段init时,切换到shell下,进行init初始化流程,见下图B处。源码详见base\startup\init\ services\init\standard\init.c。 留神:A处的CloseStdio()须要正文掉。 思考用gdb启动init第二阶段,init绝大部分解决流程都在这一阶段,从这里开始就能够用gdb调试了,init第一阶段解决相对而言流程简略一些,代码走读和调试打印根本就能解决问题。 在init主函数中去掉“不等于过程1就返回的解决”,因为用gdb起init第二阶段时,其过程非1。源码详见base\startup\init\services\init\main.c。 init过程中不初始化Paramworkspace,后面pid=1的判断,在gdb调试init时条件不成立,所以此处减少判断init名就间接退出的解决。源码详见base\startup\init\services\param\base\param_base.c。 做好了上述筹备,就能够用gdb调试init: 把系统启动,革新后的init初始化第一阶段实现后,会停在shell下,此时应用下述命令启动init第二阶段: gdb --args /bin/init --second-stage 为了调试init的子过程,还须要gdb下述命令 set follow-fork-mode child 总结本文章针对OpenHarmony零碎在调试init初始化流程时,短少高效的问题定位伎俩这一痛点,引入了嵌入式零碎开发的支流调试工具——gdb,详细描述了这一办法波及到的版本编译、适配点批改以及调试命令操作等细节解决,领导开发者进步定位init问题的效率。 须要留神,以后gdb调试init办法有局限,不实用轻量级零碎、小型零碎和一次启动的规范零碎。

January 5, 2023 · 1 min · jiezi

关于openharmony:玩转OpenHarmony社交场景即时通讯平台

一、简介本样例是基于即时通讯(Instant messaging,简称IM)服务实现的OpenAtom OpenHarmony(简称“OpenHarmony”)利用,容许两人或多人应用互联网即时地传递文字、图片、文件、语音、emoji等讯息,可利用于各类聊天场景,为人们带来更加及时高效的通信体验。 此外即时通讯平台具备较高的定制化特点,实用于多种行业,客户能够依据本人的需要来定制,实现即时通讯的外部私有化。 设施端:DAYU200(RK3568)开发板,OpenHarmony 3.1 release零碎。 二、即时通讯实现原理 想要实现多个设施之间的无障碍即时通讯,须要多台终端设备、终端利用和服务器配合一起应用。首先应该将终端利用装置到终端设备上,用户通过利用向服务器申请注册账号。随后,用户能够通过账号进行查找,增加其余好友,并向好友发送文字、图片、文件、语音、emoji等讯息。用户发送的讯息会先送达服务器,由服务器判断其好友的状态(离线/在线),而后抉择发送或者临时缓存音讯等操作。最初,好友的终端利用接管到音讯。 实现即时通讯的设施需要:装置利用的终端设备、网络环境和云端服务器。 前提条件:用户将利用装置在终端设备上,并且领有注册账号,且须要通信的用户也胜利注册了账号并且增加了好友。 通信原理:用户在装置了利用的终端设备上编辑信息(文字、图片、文件、语音、emoji等),通过网络将音讯发送至云端服务器。当对方用户在线时,云端服务器将把音讯推送给对方用户,对方用户装置了利用的终端设备也将接管到信息。当对方用户不在线时,信息将被临时缓存在云端服务器。 三、4步实现多人即时通讯(1) 通信性能通信性能是通过TCP协定实现的,咱们将通信接口connect()、send()、receive()的实现搁置在CPP文件中,通过NAPI的形式对JS层裸露接口。 • connect():客户端和服务器建设连贯;• send():音讯发送性能• receive():音讯接管性能; //建设TCP连贯if (connect(sock_cli, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0) { napi_create_int32(env, 0, &result);} else { napi_create_int32(env, 1, &result); OH_LOG_INFO(LOG_APP,"C++ 接管线程启动"); startRec();} //发送音讯if(send(sock_cli, data, strlen(data),0) == -1) { OH_LOG_INFO(LOG_APP,"zjf == send() : -1"); napi_create_int32(env, 0, &result);} else { OH_LOG_INFO(LOG_APP,"zjf == send() : !-1"); napi_create_int32(env, 1, &result);}//接管音讯getStep(queue0,sharedMessage); //取出一条音讯const char *c_s=sharedMessage.c_str();//换为char*模式解决napi_value result;napi_create_string_utf8(env, c_s, sharedMessage.length(), &result);std::string().swap(sharedMessage);//清空字符串(2) 文件音讯的发送与接管 ...

January 3, 2023 · 2 min · jiezi

关于openharmony:OpenHarmony数据转码应用开发实战下

背景对于刚入门OpenHarmony开发的小伙伴来说,如果有一个适合的实战我的项目来练手,对本身的技术能力晋升是十分有帮忙的,本文将以一个小我的项目——数据转码利用,来解说利用开发全流程。在《OpenHarmony数据转码利用开发实战(中)》咱们讲述了外围解转码工具包的实现,以及UI组件数据绑定,那么接下来将讲述我的项目的国际化适配、调测和公布。 国际化适配OpenHarmony利用框架原生提供了十分欠缺的国际化性能反对,咱们只需创立如下目录构造文件,即可实现国际化性能。en保留英文翻译,zh保留中文翻译翻译json以name、value形式定义,通过$r(‘app.string.btnClean’)办法应用 "string": [ { "name": "entry_desc", "value": "description" }, { "name": "MainAbility_desc", "value": "description" }, { "name": "MainAbility_label", "value": "label" }, ……}{ "string": [ { "name": "entry_desc", "value": "进制转换工具" }, { "name": "MainAbility_desc", "value": "进制转换工具" }, { "name": "MainAbility_label", "value": "进制转换工具" }, ……}利用调试数据线连贯开发板,装置好驱动点击右上角运行或者调试,DevEco Studio会将工程push到开发板中,并主动拉起利用运行成果如下图:关上IDE下方Log,能够查看开发板日志,输出过滤项关键词能够筛选出咱们须要的日志能够通过console打印不同级别的日志我在开发板上运行利用开发,对照需要进行自测试。在输入框输出待转码字符串,点击两头按钮,在转码后果框中验证是否能正确转码。另外,咱们也能通过console输入过程变量来查看程序逻辑是否正确。这里有一个小窍门,咱们能够在每个文件申明一个TAG常量,用于日志输入,比方:const JS_TAG: string = 'MainAbility/utils/numConvertUtil: ';1.复制这样咱们在查看日志时,能够通过TAG来精确过滤咱们须要的日志。 打包公布调试时咱们能够用IDE提供的主动签名正式公布时咱们应用官网提供的工具进行签名,developtools_hapsigner,https://gitee.com/openharmony...签名实现后,咱们应用点击 Build -> Build Hap(s)/APP(s) -> Build Hap(s),执行编译打包咱们在entry/build/default/outputs/default/目录下失去hap包接下来能够间接将hap包装置到零碎中或者预置到零碎镜像。 总结OpenHarmony利用框架原生提供了十分欠缺的国际化性能反对,咱们通过string.json配置文件即可便捷实现多语言配置,无需导入额定的三方库。利用调试是一项重要技能,咱们能够通过console输入过程变量来调试。最初,打包公布是容易遇到问题的中央,举荐应用官网提供的签名工具能够比拟容易的实现release打包。

January 3, 2023 · 1 min · jiezi

关于openharmony:玩转OpenHarmony智能家居如何实现树莓派碰一碰设备控制

一、简介“碰一碰”设施管制,依靠NFC短距通信协议,通过碰一碰的交互方式,将OpenAtom OpenHarmony(简称“OpenHarmony”)规范零碎设施和全场景设施连接起来,解决了利用与设施之间接续慢、传输难的问题,实现一碰拉起利用,为用户带来无缝切换的晦涩体验。 二、“碰一碰”设施管制场景 (1)应用成果当树莓派开发板凑近小熊派开发板,树莓派中应用程序被拉起,进入LED小灯管制界面。而后,管制端和设施端实现配网通信连贯,点击关上小熊派LED小灯点亮,点击敞开LED小灯燃烧。 (2)操作流程• 在小熊派的NFC被动贴片中写入管制端利用信息• 将树莓派的PN532被动板凑近小熊派NFC贴片,读取贴片中的利用信息,拉起对应的小灯管制利用• 管制端和设施端实现配网通信连贯• 点击关上小熊派LED小灯点亮,点击敞开LED小灯燃烧 三、NFC拉起利用性能实现近场通信(Near Field Communication,简称NFC),是一种新兴的技术,应用了NFC技术的设施能够在彼此凑近的状况下进行数据交换,是由非接触式射频辨认(RFID)演变而来。 NFC技术在事实场景中被宽泛应用,通过在繁多芯片上集成感应式读卡器、感应式卡片和点对点通信的性能,利用挪动终端实现挪动领取、门禁、挪动身份辨认、防伪等利用。NFC的点对点模式须要被动板和被动板两个模块,该案例中树莓派的PN532模块是被动板用于读取信息,小熊派开发板的NFC贴片是被动板用于保存信息。 int main(int argc, char **argv) { uint8_t buff[255]; uint8_t uid[MIFARE_UID_MAX_LENGTH]; int32_t uid_len = 0; PN532 pn532; PN532_I2C_Init(&pn532); if (PN532_GetFirmwareVersion(&pn532, buff) == PN532_STATUS_ERROR) { return -1; } PN532_SamConfiguration(&pn532); while (1) { while (1) { // 判断NFC模块是否凑近 if (PN532_ReadPassiveTarget(&pn532, uid, PN532_MIFARE_ISO14443A, 1000) != PN532_STATUS_ERROR) { break; } usleep(100); } HILOGI("开始调起利用\r\n"); pthread_t id1; int ret = pthread_create(&id1, NULL, (void *)mythread1, NULL); if (ret) { HILOGE("创立线程失败\r\n"); } sleep(4); }}/* *拉起设施管制利用的线程*/void *mythread1(void) { char arg[500] = "aa start -d 1 -a com.huawei.ohos_car_controller.default -b ohos.samples.jshelloworld"; system(arg); return NULL;}上述代码中,NFC性能的实现须要调用驱动文件中相应的接口函数。I2C_Init函数实现树莓派PN532模块的初始化。PN532_ReadPassiveTarget函数用于实现循环读取NFC贴片的UID信息,当读到小熊派NFC贴片信息时,创立新的线程拉起对应的LED灯利用。 ...

December 27, 2022 · 1 min · jiezi

关于openharmony:带你玩转OpenHarmony-AI打造智能语音子系统

简介AI时代,智者当先,判断一个终端设备是否智能,语音能力是必不可缺的。智能家居、智慧厨房、智能汽车等等,所有衣食住行都在往智能方向倒退,那咱们该如何在OpenAtom OpenHarmony(简称“OpenHarmony”)零碎现有的能力下,搭建一套残缺的语音子系统呢? 本文介绍了博泰车联网的研发同学如何搭建一套属于OpenHarmony的语音子系统CarVoiceAssistant,并以车载交互的状态研发语音助理我的项目的过程。 成果展现 开发环境硬件平台:DAYU200零碎版本:OpenHarmony 3.1 Release开发语言:C++,JS,eTSIDE:VS Code、DevEco Studio 性能介绍 交互流程介绍本样例蕴含两个要害能力库:QGWebRTCVAD,用作无效音频检测和截取;QGPocketSphinx,用作唤醒词训练和辨认,次要流程如下: 设施唤醒之后,须要继续采集用户音频数据,并传输给博泰QingAI云端,做继续辨认和最终语义辨认,辨认之后客户端依据语义做具体动作执行 。 两步带你实现语义助理集成1.语音子系统集成(1)下载语音助理我的项目代码(2)解压【data.zip】文件(../../dev/team_x/PATEO_CarVoiceAssistant/data.zip)(3)应用hdc工具将data中的文件发送到OpenHarmony零碎中 #1. 将动静库和资源文件发送到OpenHarmony零碎中 # 如果提醒Read only system;进入OH零碎后执行:"mount -o rw,remount /"命令后再发送文件 hdc_std.exe file send voice_assistant_service.xml /system/profile/ hdc_std.exe file send libcarvoiceassistant.z.so /system/lib/module/libcarvoiceassistant.z.so hdc_std.exe file send libvoiceassistant_service.z.so /system/lib/libvoiceassistant_service.z.so hdc_std.exe file send libpocketsphinx.z.so /system/lib/module/libpocketsphinx.z.so hdc_std.exe file send libps_vad.z.so /system/lib/module/libps_vad.z.so hdc_std.exe file send libvoicecloud.z.so /system/lib/libvoicecloud.z.so hdc_std.exe file send voice_assistant_service.cfg /system/etc/init/ #在零碎/system/etc/下,创立目录pocketsphinx; 创立目录命令: mkdir /system/etc/pocketsphinx hdc_std.exe file send voice_tip.mp3 /system/etc/pocketsphinx/ hdc_std.exe file send zh.tar /system/etc/pocketsphinx/ #在OpenHarmony零碎中解压zh.tar tar xvf zh.tar #确保/system/etc/pocketsphinx/下文件目录构造如下: ├── zh │ ├── zh │ │ ├── feat.params │ │ ├── feature_transform │ │ ├── mdef │ │ ├── means │ │ ├── mixture_weights │ │ ├── noisedict │ │ ├── transition_matrices │ │ └── variances │ ├── zh_cn.dic │ └── zh_cn.lm.bin ├── voice_tip.mp3 #重启零碎2.语音助理App集成(1)引入语音助理申明文件 ...

December 23, 2022 · 1 min · jiezi

关于openharmony:带你玩转OpenHarmony-AI基于Seetaface2的人脸识别

简介随着时代的提高,全民刷脸曾经成为一种新型的生存形式,这也是寰球科技进步的又一阶梯,人脸识别技术曾经成为一种大趋势,无论在智慧出行、智能家居、智慧办公等场景均有较宽泛的利用场景,本文介绍了基于SeetaFace2人脸识别引擎在OpenAtom OpenHarmony(以下简称“OpenHarmony”)上实现人脸识别的AI能力。 什么是SeetaFace2SeetaFace2是由中科视拓(北京)科技有限公司开发并应用BSD开源协定开源进去的一款人脸识别引擎库,其搭建了一套全自动人脸识别零碎所需的三个外围模块,即:人脸检测模块FaceDetector、面部关键点定位模块 FaceLandmarker 以及人脸特征提取与比对模块FaceRecognizer。除了三个外围模块外,它还提供了两个辅助模块FaceTracker和QualityAssessor用于人脸跟踪和品质评估。下图是SeetaFace2人脸识别算法组件: SeetaFace2能做什么SeetaFace2采纳规范C++开发,全副模块均不依赖任何第三方库,反对x86架构(Windows、Linux)和ARM架构,能够轻松地移植到OpenHarmony上。SeetaFace2反对的下层利用包含但不限于人脸门禁、无感考勤、人脸比对等。如下图展现了SeetaFace2反对的利用矩阵: SeetaFace2人脸识别原理SeetaFace2人脸识别引擎搭建了一套全自动人脸识别零碎所需的三个外围模块: 人脸检测(FaceDetector)在图像中首先定位出人脸的地位,而后裁剪(crop)出蕴含人脸地位的矩形框,个别还会进行填充、缩放到指定尺寸,还可能会对人脸图像进行标准化normalize;面部关键点定位(FaceLandmarker)提取人脸关键点坐标,而后应用喷射变动或类似变换等进行人脸对齐变换。面部关键点定位的指标就是把所有的人脸图片对立到一个固定的正脸姿势大小,从而进步模型对人脸姿势变动的鲁棒性。人脸特征提取与比对模块(FaceRecognizer)次要应用深度学习等办法提取人脸的特色,而后通过特色比照,计算人脸的类似度。SeetaFace2人脸识别的具体过程如下图所示: 两步带你实现人脸识别对于SeetaFace2的如何移植到OpenHarmony移植请参照文档:SeetaFace2移植开发文档(请参考文章开端相干文档链接),这里咱们次要剖析通过SeetaFace2如何实现人脸识别。 从下面人脸识别的流程图能够晓得人脸识别次要蕴含2个大块:人脸注册和人脸识别。 人脸注册人脸注册首先须要对传入的图片进行人脸检测,当检测到人脸后会提取对应的人脸信息,并将信息保留用于比照。人脸信息检测实现: std::vector<SeetaFaceInfo> DetectFace(const SeetaImageData &image){ auto faces = FD.detect(image); return std::vector<SeetaFaceInfo>(faces.data, faces.data + faces.size);}其中FD是三大模块中的人脸检测模块(FaceDetector),其加载了人脸检测模型: seeta::ModeStting FD_model("fd_2_00.dat", seeta::ModeStting::CPU, 0);而返回SeetaFaceInfo数据则是检测到的人脸信息,其中蕴含了人脸个数,人脸区域坐标以及人脸置信度得分数据。而后通过人脸信息检测返回的数据进行面部关键点定位。 面部关键点定位实现: std::vector<SeetaPointF> DetectPoints(const SeetaImageData &image, const SeetaRect &face){ std::vector<SeetaPointF> points(PD.number()); PD.mark(image, face, points.data()); return std::move(points);}其中的PD是三大模块中的关键点定位模块(FaceLandmarker),关键点定位须要依据面部特色模型进行比照剖析的,SeetaFace2提供2种面部特色模型。别离是通过5点定位和通过81点定位,此实例中咱们应用的是81点定位模型: seeta::ModeStting PD_model("pd_2_00_pts81.dat", seeta::ModeStting::CPU, 0);获取完面部特色数据后,SeetaFace2提供了一个人脸数据库进行保留对应的人脸信息数据,以此来实现人脸信息的注册: int64_t Register(const SeetaImageData &image){ auto faces = DetectFace(image); auto points = DetectPoints(image, faces.pos); return FDB.Register(image, points.data());} 其中FDB是SeetaFace2实现的FaceDatabase数据库治理。该数据库也为人脸识别提供面部特色数据的比照后果,面部特色比照也须要一个人脸数据模型: seeta::ModeStting FDB_model("fr_2_00.dat", seeta::ModeStting::CPU, 0);通过以上步骤,咱们就曾经实现了人脸的注册。 ...

December 21, 2022 · 1 min · jiezi

关于openharmony:玩转OpenHarmony-PID教你打造两轮平衡车

简介此次为大家带来的是OpenAtom OpenHarmony(以下简称“OpenHarmony”)零碎与PID控制算法相结合并落地的均衡车我的项目。 PID控制算法是一种经典的,并被广泛应用在管制畛域的算法。相似于这种:须要将某一个物理量保持稳定的场合,比方维持均衡,稳固温度、转速等,PID都会实用。在四轴飞行器,均衡小车、汽车定速巡航、温度控制器等场景均有利用。 通过本样例的学习,开发者可能对OpenHarmony零碎设施端开发有进一步的意识,还可能把握PID控制算法的应用。本样例应用OpenHarmony 3.2 Beta1操作系统,硬件平台采纳小熊派BearPi-HM Nano(Hi3861)开发板。 本样例成果动图: 硬件配置资源两轮均衡小车次要硬件资源:主控CPU:小熊派BearPi-HM Nano(Hi3861)开发板;陀螺仪:MPU6050六轴陀螺仪传感器;左右轮:带有霍尔传感器的直流电机;小车平台及结构件资源能够自行在相干网站取得。 原理概括 小时候都玩过上图游戏吧:木杆立在手指上,尽量放弃木杆直立不倒。 当木杆向前歪斜时,咱们会往前行走,以用来对消木杆的前倾;往后歪斜时,咱们会往后倒退。对的!没错!你猜对了。均衡车的管制原理就是这样: PID算法介绍均衡车的管制离不开对PID算法的利用。那么什么是PID算法?它能解决什么问题? PID算法:就是“比例(proportional)、积分(integral)、微分(derivative)”,是一种常见的“保持稳定”控制算法。 联合两轮均衡车的场景,对PID参数的意识如下: P比例参数:该参数可能疾速让小车达到均衡状态,然而因为管制是滞后的,以及是惯性零碎,容易带来超调,即小车会呈现前后摇晃的景象。所以P参数不能太大; I积分参数:小车因为摩擦力或者风阻力,并且P不能太大,只靠P管制有可能达不到稳固状态,所以须要退出I积分参数,打消稳态误差; D微分参数:均衡小车维持的是歪斜角度要为均衡角度,因为PI参数使小车振荡,小车会呈现前后摇晃景象,退出D微分参数可能打消小车的振荡。 两步搭建样例工程在OpenHarmony源码根底上,两步构建均衡小车代码。(OpenHarmony源码下载门路及BearPi-HM Nano(Hi3861)开发板代码烧录,请参考文章开端相干链接) 第一步:拷贝Balance_car文件夹到源码门路下:\device\board\bearpi\bearpi_hm_nano\app\ (Balance_car文件获取门路,请参考文章开端相干链接)如图文件夹目录: 第二步:批改BUILD.gn,在源码门路下:\device\board\bearpi\bearpi_hm_nano\app\BUILD.gn增加编译依赖:"Balance_car:balance_car",如下图: 要害算法解说两轮均衡车的管制次要波及三个PID环的串联应用,它们别离是直立环(均衡管制)、速度环(速度管制)、转向环(方向管制)。三个管制成果合成,管制轮子运行。 直立环控制算法:直立环控制算法是均衡小车维持均衡的次要算法。直立环采纳了PD算法环节,即只有比例与微分环节。 歪斜角度大小以及角加速度大小决定了轮子的速度大小。能够了解为歪斜角度越大,管制轮子顺着歪斜的方向的速度越大;歪斜的角加速度越大,管制轮子速度也要越大。 float g_middleAngle = 1.0;//均衡角度float g_kpBalance = -85800.0;float g_kdBalance = -400;static int ControlBalance(float angle, short gyro){ int outpwm = 0; float angleBias = 0.0; float gyroBias = 0.0; float tempAngle = 0.0; float tempGyro = 0.0; tempAngle = 0 - angle;//极性管制 tempGyro = 0 - gyro; angleBias = g_middleAngle - tempAngle; gyroBias = 0 - tempGyro; outpwm = (g_kpBalance / 100 * angleBias + g_kdBalance * gyroBias / 100); return outpwm;}速度环控制算法:速度环控制的目标是让机器以恒定速度后退或后退,该恒定速度能够为0速度,即要让均衡车静止。速度环采纳了PI环控制,只有比例与积分环节。 ...

December 16, 2022 · 1 min · jiezi

关于openharmony:OpenHarmony-32-Beta多媒体系列音视频播放gstreamer

一、 简介多媒体播放框架次要的实现在PlayerServer服务中,这个服务提供了媒体播放框架所须要的实现环境,持续跟踪代码剖析发现,PlayerServer次要通过gstreamer适配层,对gstreamer进行调用。gstreamer属于更加具体的实现,所以本篇文章次要是剖析PlayerServer通过适配层调用到gstreamer的过程。 此前,我在《OpenHarmony 3.2 Beta多媒体系列-音视频播放框架》一文中,次要剖析了多媒体播放的框架层代码,本地接口通过服务端的proxy代理类进行IPC调用,最终调用到PlayerServer服务端。本篇次要剖析了多媒体gstreamer的调用,波及到从PlayerServer到gstreamer的整体流程。 二、 目录gstreamer ├── BUILD.gn ├── common │ ├── BUILD.gn │ ├── playbin_adapter │ │ ├── i_playbin_ctrler.h │ │ ├── playbin2_ctrler.cpp │ │ ├── playbin2_ctrler.h │ │ ├── playbin_ctrler_base.cpp │ │ ├── playbin_ctrler_base.h │ │ ├── playbin_msg_define.h │ │ ├── playbin_sink_provider.h │ │ ├── playbin_state.cpp │ │ ├── playbin_state.h │ │ ├── playbin_task_mgr.cpp │ │ └── playbin_task_mgr.h │ ├── state_machine │ │ ├── state_machine.cpp │ │ └── state_machine.h ├── factory │ ├── BUILD.gn │ └── engine_factory.cpp └── player ├── BUILD.gn ├── player_codec_ctrl.cpp ├── player_codec_ctrl.h ├── player_engine_gst_impl.cpp ├── player_engine_gst_impl.h ├── player_sinkprovider.cpp ├── player_sinkprovider.h ├── player_track_parse.cpp └── player_track_parse.h目录次要是多媒体子系统中的engine局部,波及到了gstreamer的适配层,gstreamer具体的实现是在third_party/gstreamer目录中。 ...

November 24, 2022 · 4 min · jiezi

关于openharmony:OpenHarmony-32-Beta多媒体系列音视频播放框架

一、简介媒体子系统为开发者提供一套接口,不便开发者应用零碎的媒体资源,次要蕴含音视频开发、相机开发、流媒体开发等模块。每个模块都提供给下层利用对应的接口,本文会对音视频开发中的音视频播放框架做一个具体的介绍。 二、目录foundation/multimedia/media_standard ├── frameworks #框架代码│ ├── js│ │ ├── player│ ├── native│ │ ├── player #native实现│ └── videodisplaymanager #显示治理│ ├── include│ └── src├── interfaces│ ├── inner_api #外部接口│ │ └── native│ └── kits #内部JS接口├── sa_profile #服务配置文件└── services ├── engine #engine代码 │ └── gstreamer ├── etc #服务配置文件 ├── include #头文件 └── services ├── sa_media #media服务 │ ├── client #media客户端 │ ├── ipc #media ipc调用 │ └── server #media服务端 ├── factory #engine工厂 └── player #player服务 ├── client #player客户端 ├── ipc #player ipc调用 └── server #player服务端三、播放的总体流程 ...

November 22, 2022 · 4 min · jiezi

关于openharmony:OpenHarmony社区运营报告2022年10月

本月快讯● 《深圳市推动软件产业高质量倒退的若干措施》于10月24日公布。● 社区共倒退逾5000位贡献者累计为社区提交超过11万个PR,深圳市优博终端科技有限公司(以下简称“优博终端”)成为第六家《OpenAtom OpenHarmony(以下简称“OpenHarmony”)百人代码奉献单位》。● 本月新增32款产品通过兼容性测评,累计173款产品通过兼容性测评。● OpenHarmony受邀缺席由凋谢原子开源基金会、北京经开区国家信创园、CSDN主办的源聚一堂开源技术沙龙(北京站)。另外,本月OpenHarmony举办1场公共流动,社区举办3场流动,搭档举办6场流动。● 武汉大学成立OpenHarmony技术俱乐部。 一、代码奉献社区辨认共建个性166个,在凋谢原子开源基金会、共建单位及贡献者的厚爱与反对下,其中73%已锁定奉献单位,其中已奉献个性61个。感激各共建的单位及贡献者脚踏实地奉献,社区共倒退了逾5000位贡献者,累计为社区提交了超过11万个PR,下载社区代码达11300万次。 余下27%未锁定的共建个性次要在分布式模拟器HAL、驱动和多媒体3个子系统,期待更多感兴趣或在该技术域有深厚积攒的单位及贡献者能踊跃报名,参加建设。 在此致谢以下单位:华为、深开鸿、优博终端、神州数码、博泰、Cocos、九联科技、京东、美的、软通能源、中科院软件所等单位,本月在各单位的大力支持下,新增共建个性锁定状况如下:● 深开鸿:GN生成工具和API扫描工具等工具链共建个性,新增锁定多媒体子系统反对MIDI声音合成个性。● 优博终端:零碎利用的文件管理器和中文输入法。● 神州数码:NAPI框架生成工具的IntelliJ的独立插件。● 博泰、Cocos、九联、京东、美的、润和、软通能源、深开鸿、中科院软件所9家单位锁定车载语音场景、游戏娱乐场景、高清播放等共9个场景下的24个依赖组件建设。 经《OpenHarmony我的项目工作委员会第17次会议》决定,为感激外围共建单位的奉献,使收费被迫投入社区代码建设的工作能被公众看得见,将由OpenHarmony工作委员会启动为“锁定共建个性并奉献靠前的单位和《百人代码奉献单位》”拍摄宣传片。 以上,是依据本月变动,刷新后的共建地图。 二、《OpenHarmony百人代码奉献单位》截至2022年10月25日,OpenHarmony工作委员会的成员单位深圳市优博终端科技有限公司有超过100位雇员向OpenHarmony社区提交代码且被合入,成为了继华为终端有限公司、深圳开鸿数字产业有限公司、江苏润和软件股份有限公司、软通能源信息技术(团体)股份有限公司、广东九联科技股份有限公司之后的第六家《OpenHarmony百人代码奉献单位》。 优博终端主营业务为生产l类电子和行业设施软硬件一体化解决方案,笼罩手机、智能硬件、OpenHarmony生态等整机研发全链条,80%以上员工在手机行业耕耘10年+,具备资深的产品研发能力和丰盛的项目管理教训。 该单位,2个月内三款开发板通过兼容性测评,别离为UB-RK3568工控开发板、UB-RK3568商显开发板和UB-RK3588青鸾开发板,青鸾开发板是通过兼容性测评的基于RK3588芯片的开发板。 在零碎共建个性层面,该单位设计了文件管理器和中文输入法,在PMC及架构Sig的领导下,于9月底,已在systemapplications Sig下建设对应的applications_filemanager和applications_inputmethod仓库,开始代码的耕耘。这两个零碎利用的设计将遵循OpenHarmony UX规范,积淀通用能力,架构上前向反对多设施状态、跨设施输出。 三、生态停顿1、累计已有173款产品通过兼容性测评,波及61个厂家 注:数据截至2022年10月27日 2、OpenHarmony生态兼容性测评工作进展正在建设兼容性测试实验室,建成后,新实验室将有能力提供50+款产品同时测评的能力。目前已实现兼容性测评实验室设施部署,目前在测试环境调测中,打算11月30日正式经营。 已倒退联结测试认证实验室1家:实现国家金融科技测评核心资质审核,作为第一家兼容性单干测评核心导入,撑持生态厂商测评。 初步建设利用测试规范&自动检测工具能力,保障利用生态根底品质和兼容性。已实现稳定性、功耗、兼容性测试服务开发,目前调测中。 兼容性测试实验室照片 3、本月新增32款产品通过兼容性测评(统计周期:9月25日~10月25日) 4、芯片停顿:累计14家厂商的21款芯片进入OpenHarmony社区骨干。其中:规范7款、小型2款、轻量12款 四、社区治理技术治理:PMC,受权版本评审组负责社区版本评审公布,通过《OpenHarmony版本公布评审标准》;《OpenHarmony社区代码仓治理规定》上线:https://i.openharmony.cn/2GCX...。 TSC,10月份新增成立IDE、机器人两个TSG,武汉大学OpenHarmony技术俱乐部成立。 工作委员会工作组:工作委员会批准成立代码共建筹备组,感兴趣退出请与林志南分割。工作委员会批准成立社区平安治理工作筹备组,感兴趣退出请与王荣泽分割。 五、技术倒退2022年9月30日,公布OpenHarmony 3.2 Beta3在OpenHarmony 3.2 Beta2的根底上更新反对或优化加强的能力包含: 1、 规范零碎根底能力加强编译运行时新增严格模式的ES2021、模块化、Runtime调试调优加强、字节码热重载等;内核子系统新增内存压力告诉AMS、回收优先级治理能力丰盛,媒体子系统新增反对音视频编解码、反对音画同步,分布式音频、相机预览、拍照和录像,设施状态治理、监听和投播性能。账号服务新增用户身份认证服务;权限服务新增反对精准定位或含糊定位,新增隐衷治理服务。泛sensor提供马达优先级治理能力;多模输出能力丰盛;Misc服务新增根底个性能力;DFX的hilog、hisysevent、hiappeventssh、hidumper等能力加强。测试框架能力优化。 2、 规范零碎利用开发框架加强包含:事件和告诉新增适配DLP;反对根底音视频播放、https双向认证等能力;元能力,包治理能力,零碎服务治理能力,ArkUI组件能力加强,资源、媒体查问能力,DFX能力,工具链能力等都有不同水平的加强。 3、 规范零碎分布式能力加强分布式数据库反对跨设施跨利用分享、RDB反对近程查问/数据库加密个性、反对利用分身,KVDB反对备份复原/按条件同步/设施上线优先集中同步零碎数据。以后版本在OpenHarmony 3.2 Beta2的根底上更新反对或优化加强的能力包含:详见:https://i.openharmony.cn/AXwT... 六、社区活动1、公共流动OpenHarmony我的项目应邀参加了10月24日由凋谢原子开源基金会、北京经开区国家信创园、CSDN主办的,主题为“软件新时代,开源创将来”的1024程序员节北京峰会。来自OpenHarmony共建单位华为技术有限公司终端BG软件部首席技术架构设计专家黄然,代表OpenHarmony项目管理委员会(PMC)缺席了本次会议,进行了主题为《OpenHarmony设计理念和社区停顿》的演讲。另外,OpenHarmony在流动线上展区展现了相干技术内容。 2022年9月27日,在OpenHarmony开源开发者成长打算解决方案学生挑战赛<Demo Day>流动中,入围的十支参赛队伍演示了作品并角逐出最高奖项。 2、搭档流动近期搭档流动共举办6场。 七、社区及官网经营1、单干社区官网账号公布内容数据汇总截至2022年10月27日,9个单干社区共公布内容(含技术文章、视频教程)1285篇,累计取得总PV/UV数516811,同比上月增长15%,账号取得粉丝数1327人,较上月增幅3%。 注:数据截至2022年10月27日 2、OpenHarmony社群直播数据截至2022年10月27日,OpenHarmony社群累计发展直播78场,累计观看量38511,观看人数20649;其中66场联结各家单干社区直播,累计213场次,观看次数1147920;观看人数3021184;共计OpenHarmony直播所有渠道产生观看次数1186431、观看人数322833。 3、OpenHarmony社群经营数据截至2022年10月27日,社群共沉淀开发者7643人,累计社群沟通信息9.2万,累计与开发者沟通3.2万次,累计触达音讯6万条。

November 9, 2022 · 1 min · jiezi

关于openharmony:OpenHarmony数据转码应用开发实战上

背景OpenHarmony的利用开发反对C++、JS、eTS,从已有版本的演进路线来看,eTS是将来重点的技术路线。对于刚入门OpenHarmony利用开发的小伙伴来说,eTS可能比拟生疏,如果有一个适合的实战我的项目来练手,那么对技术能力晋升是十分有帮忙的,本文将以一个小我的项目——数据转码利用,来解说利用开发全流程。  需要开发一个字符串转码利用,利用提供待转码字符串输入框,用户输出字符串后可不便的进行各种数据类型的转码,具体有:1. 10进制转16进制,并补02. 16进制转10进制3. 16进制转2进制4. 2进制转16进制5. 16进制转ASCII码6. ASCII码转16进制  设计设计稿如下:字符串输入框采纳textarea组件,按钮采纳button组件,文字题目采纳text组件 创立我的项目咱们关上DevEco Studio开发工具,抉择Create,点击下一步输出项目名称:DataConvert我的项目类型抉择:ApplicationBundle name:填本人的公司域名+我的项目名Save location:抉择工程文件保留门路Compile API:抉择api8(最新的api9已推出,本案例应用api8开发)UI Syntax:抉择eTSDevice type:勾选Phone、Tablet点击FinishIDE主动构建好我的项目如下:关上index.ets点击右侧Previewer,咱们能够看到页面预览成果以上,我的项目创立结束,咱们能够在gitee或公有git仓库上创立好代码仓库提交下来,便于后续代码归档。 页面布局布局 整个页面布局布局1.最外侧应用flex垂直向下布局,这样确保了所有元素都是从上开始程序往下排列2.紧接着是题目、字符输出局部、按钮局部、转码后果局部、清空按钮,5个大块3.字符输出区域含有题目+输入框,别离应用text+textarea4.按钮局部采纳Row+Column,这样便于按钮对齐5.转码后果区域与字符输出区域统一,能够间接复用6.清空按钮能够复用按钮区7.留神所有组件之间的距离 UI界面编码实现build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Start }) { Flex({ direction: FlexDirection.Row }) { Text($r('app.string.title')) .fontSize(30) } .width('100%') .margin({ bottom: 30 }) Flex({ direction: FlexDirection.Row, wrap: FlexWrap.Wrap }) { Text($r('app.string.inputStr')) .fontSize(24) .margin({ bottom: 15 }) .width('100%') TextArea() .width('100%') .height(180) .backgroundColor(0x0ffff) .borderRadius(0) }.width('100%') Row() { Column() { Button($r('app.string.btnDec2hex'), { type: ButtonType.Normal }) .width('50%') } .padding({ top: 10, right: 5, bottom: 0, left: 0 }) Column() { Button($r('app.string.btnHex2dex'), { type: ButtonType.Normal }) .width('50%') } .padding({ top: 10, right: 0, bottom: 0, left: 5 }) } Row() { …… } Row() {…… } Flex({ direction: FlexDirection.Row, wrap: FlexWrap.Wrap }) { Text($r('app.string.encodeStr')) .fontSize(24) .margin({ bottom: 10 }) .width('100%') Flex() { Text(this.strEncode).fontSize(16) } .width('100%') .height(180) .backgroundColor(0x0ffff) .borderRadius(20) .padding({ top: 10, right: 10, bottom: 10, left: 10 }) } .width('100%') .margin({ top: 20 }) Row() { Column() { Button($r('app.string.btnClean'), { type: ButtonType.Normal }) .width('50%') } .padding({ top: 10, right: 5, bottom: 0, left: 0 }) } .width('100%') } .padding({ top: 18, right: 18, bottom: 18, left: 18 })}总结我的项目的开发蕴含很多流程步骤,咱们在开发时须要留神布局好后期的需要和设计工作,这样在后续的编码过程中能够防止频繁的批改调整。OpenHarmony利用开发与VUE开发有肯定的相似性,两者的布局和组件款式原理是相通的,咱们在拿到UI设计稿后不要急于编码,提前布局好组件布局能够事倍功半。 ...

November 9, 2022 · 1 min · jiezi

关于openharmony:共筑使能千行百业的数字底座-HDC-2022松湖对话顺利召开

11月5日,华为开发者大会2022松湖对话在东莞松山湖凯悦酒店召开,凋谢原子开源基金会秘书长冯冠霖、华为终端BG软件部总裁龚体、深圳国家金融科技测评核心董事长钟剑、鸿湖万联(江苏)科技倒退有限公司董事长黄颖、湖南开鸿智谷数字产业倒退有限公司董事长李新宇、深圳开鸿数字产业倒退有限公司监事彭江以“共筑使能千行百业的数字底座”为主题,畅谈了基于OpenAtom OpenHarmony(以下简称“OpenHarmony”)打造的行业数字底座的生态停顿、挑战以及如何减速生态凋敝,共话使能千行百业的数字底座新将来。 施展开源劣势,筑牢数字底座根底冯冠霖从开源生态的角度分享了如何构建数字底座。他示意,开源是寰球宽泛采纳的一种软件合作开发方式,代表着最先进的技术创新模式,通过汇聚公众的智慧、施展协同的效力,实现智慧与成绩的共享,带来技术的翻新和社会的改革。在打造数字底座过程中,咱们要充分发挥开源的劣势,为数字底座的打造筑牢根底。 凋谢原子开源基金会自2020年成立以来,次要从三个方面做了一些开源生态方面的工作,第一,通过组织2022凋谢原子寰球开源峰会、凋谢原子校源行、开发者大会、开发者工作坊、开发者激励打算等系列流动,触达、激活数十万开发者,为开源我的项目聚拢了一批外围奉献人。第二,咱们鼎力推动OpenHarmony、OpenAtom openEuler等开源我的项目,独特构建数字底座的根底框架。第三,建设代码托管平台,包含兼容性的实验室、开源的服务中心等,通过基础设施的建设,更加欠缺中国在开源方面的布局。 OpenHarmony生态蓬勃发展,共建成绩继续落地从2020年9月开源以来,OpenHarmony的奉献代码从700万行,到目前曾经靠近1亿行左右;截至目前已有180多款软硬件产品通过了OpenHarmony兼容性测评;为推动与高校的共建,通过OpenHarmony TSC技术俱乐部流动,与高校独特攻克OpenHarmony技术难题,目前已与上海交通大学、武汉大学等多所高校发展相干的技术流动。 这一系列数据和问题的背地,离不开OpenHarmony多家共建搭档在各个行业畛域的开疆拓土。现场,鸿湖万联(江苏)科技倒退有限公司董事长黄颖、湖南开鸿智谷数字产业倒退有限公司董事长李新宇、深圳开鸿数字产业倒退有限公司监事彭江围绕金融、教育、交通等行业,分享了其基于OpenHarmony开源我的项目打造的行业解决方案及生态成绩。 推动专项政策出台,搀扶开源事业倒退OpenHarmony生态的倒退不仅须要各共建成员的和衷共济,还须要内部政策的反对。冯冠霖介绍道,《“十四五”软件和信息技术服务业倒退布局》中明确指出放慢凋敝国内开源生态,促成开源基金会的倒退,培养重点的开源我的项目。而在中央政策中,深圳也出台了《深圳市对于推动软件产业高质量倒退的若干措施》,推动OpenHarmony的倒退。将来,基金会将推动出台专项政策,激励企事业单位应用开源、回馈开源、奉献开源,搀扶开源事业的倒退。 OpenHarmony作为凋谢原子开源基金会经营孵化的开源我的项目,凝聚了各成员单位、共建搭档、生态参与方踊跃翻新的成绩,也承载了大家对下一代操作系统倒退以及将来产业改革的期待。与会嘉宾凝聚倒退共识,独特打造OpenHarmony使能千行百业的数字底座。

November 8, 2022 · 1 min · jiezi

关于openharmony:OpenHarmony应用Hap包签名

背景OpenHarmony利用如果须要对外公布就必须要通过利用签名,DevEco Studio已提供主动签名性能减速利用开发,但主动签名仅限于debug开发,须要对外公布则必须实现release签名。在HarmonyOS中有AGC利用商店能够帮忙开发者实现release签名,然而OH就没有这么不便了,本文将介绍OH利用签名办法步骤,将应用OH官网提供的签名工具对Hap进行签名。 应用DevEco Studio实现Hap主动签名关上DevEco Studio工具,点击右上角 Project Structure 进入工程配置页面点击Project -> Signing Configs,勾选Automatically generate signing,点击 OK点击Build -> Rebuild Project 或 Build Hap 都能够编译构建Hap包编辑构建实现后咱们能够失去未签名的hap包这个包能够用于Debug调试,但不能用于Release正式公布 DE对Hap包签名的明码限度从实践上讲,咱们也能够通过DevEco Studio进行Hap包的公布签名,然而官网提供的OpenHarmony.p12文件明码为123456 而IDE不反对应用 123456 这样的简略的明码,它达不到明码安全级别因而,应用官网加密文件实现签名临时行不通 咱们扭转思路,应用命令行形式实现签名,这样能够绕过IDE的限度应用官网开源签名工具实现签名查阅官网材料发现,官网曾经提供了命令行签名工具 developtools_hapsigner,https://gitee.com/openharmony... 咱们通过批改配置文件、执行脚本,即可实现Hap签名 具体步骤如下:1 装置工具依赖环境 装置python3.10 (下载链接:https://www.python.org/downlo...),通过命令行验证装置是否胜利装置jdk,配置好环境变量,通过命令行验证装置是否胜利2 将签名工具代码拉取到本地保留,批改配置文件 git clone https://gitee.com/openharmony... 批改developtools_hapsigner\autosign\signHap.config文件配置 config.signtool 改为 hap-sign-tool.jar 的绝对路径,能够在 dist 目录中找到config.signtool=E:/openharmony/developtools_hapsigner/dist/hap-sign-tool.jar common.keystoreFile 改为 OpenHarmony.p12 的绝对路径,能够在 dist 目录中找到common.keystoreFile=E:/openharmony/developtools_hapsigner/dist/OpenHarmony.p12 app.keypair.keyAlias 改为 OpenHarmony Application Releaseapp.keypair.keyAlias=OpenHarmony Application Release cert.app.outFile 改为 OpenHarmonyApplication.pem 的绝对路径,能够在 dist 目录中找到cert.app.outFile=E:/openharmony/developtools_hapsigner/dist/OpenHarmonyApplication.pem sign.profile.outFile 改为 官网提供的p7b绝对路径,比方 launcher 代码中提供了 launcher.p7b 加密文件sign.profile.outFile=E:/openharmony/signfiles/launcher/launcher.p7b ...

November 8, 2022 · 1 min · jiezi

关于openharmony:RK系列开发板音频驱动适配指南五

背景:RK系列开发板音频驱动DAI、DMA、Codec、HCS适配实现之后,须要进行编译,验证驱动是否可用。而操作步骤,次要是领导开发者,如何正确应用音频驱动,通过命令来管制音频文件的播放等。 步骤:一.1. 编译配置• audio驱动编译配置文件门路:  vendor\RK系列开发板\hdf_config\khdf\audio• audio驱动公有配置文件编译配置文件:  vendor\rockchip\RK系列开发板\hdf_config\khdf\hdf.hcs• defconfig文件  kernel\linux\linux-5.10\arch\arm64\configs\defconfig...CONFIG_DRIVERS_HDF_AUDIO_RK系列开发板=y• Kconfig文件:  drivers\adapter\khdf\linux\model\audio\Kconfigconfig DRIVERS_HDF_AUDIO_RK系列开发板    bool "Enable HDF Audio Codec driver"    default y    depends on DRIVERS_HDF_AUDIO    help        Answer Y to choice HDF Audio Codec driver.• Makefile文件:  drivers\adapter\khdf\linux\model\audio\MakefileKHDF_AUDIO_BASE_ROOT_DIR = ../../../../../../../..KHDF_AUDIO_RK系列开发板_DIR = $(KHDF_AUDIO_BASE_ROOT_DIR)/device/rockchip/RK系列开发板/audio KHDF_AUDIO_KHDF_ROOT_DIR = drivers/hdf/khdfKHDF_FRAMEWORK_ROOT_DIR = drivers/hdf/frameworkKHDF_AUDIO_RK系列开发板_INC_DIR = $(KHDF_FRAMEWORK_ROOT_DIR)/../../device/rockchip/RK系列开发板/audio obj-$(CONFIG_DRIVERS_HDF_AUDIO_RK系列开发板) += \          $(KHDF_AUDIO_RK系列开发板_DIR)/soc/src/RK系列开发板_dma_ops.o \          $(KHDF_AUDIO_RK系列开发板_DIR)/soc/src/RK系列开发板_dma_adapter.o \          $(KHDF_AUDIO_RK系列开发板_DIR)/dai/src/RK系列开发板_dai_adapter.o \          $(KHDF_AUDIO_RK系列开发板_DIR)/dai/src/RK系列开发板_dai_ops.o \          $(KHDF_AUDIO_RK系列开发板_DIR)/codec/src/es8388_codec_adapter.o \          $(KHDF_AUDIO_RK系列开发板_DIR)/codec/src/es8388_codec_ops.o ccflags-$(CONFIG_DRIVERS_HDF_AUDIO_RK系列开发板) +=  -lm -lc -lgcc -std=gnu99 -Werror \             -I$(srctree)/$(KHDF_AUDIO_KHDF_ROOT_DIR)/osal/include \             -I$(srctree)/$(KHDF_FRAMEWORK_ROOT_DIR)/include/core \             -I$(srctree)/$(KHDF_FRAMEWORK_ROOT_DIR)/include/utils \             -I$(srctree)/$(KHDF_FRAMEWORK_ROOT_DIR)/include/osal \             -I$(srctree)/$(KHDF_FRAMEWORK_ROOT_DIR)/include/platform \             -I$(srctree)/$(KHDF_FRAMEWORK_ROOT_DIR)/include/audio \             -I$(srctree)/$(KHDF_FRAMEWORK_ROOT_DIR)/ability/sbuf/include \             -I$(srctree)/$(KHDF_FRAMEWORK_ROOT_DIR)/core/common/include/host \             -I$(srctree)/$(KHDF_FRAMEWORK_ROOT_DIR)/model/audio/core/include \             -I$(srctree)/$(KHDF_FRAMEWORK_ROOT_DIR)/model/audio/sapm/include \             -I$(srctree)/$(KHDF_FRAMEWORK_ROOT_DIR)/model/audio/dispatch/include \             -I$(srctree)/$(KHDF_FRAMEWORK_ROOT_DIR)/model/audio/common/include \             -I$(srctree)/bounds_checking_function/include \             -I$(srctree)/$(KHDF_AUDIO_RK系列开发板_INC_DIR)/soc/include \             -I$(srctree)/$(KHDF_AUDIO_RK系列开发板_INC_DIR)/dai/include \             -I$(srctree)/$(KHDF_AUDIO_RK系列开发板_INC_DIR)/codec/include2. 编译内核• 执行make_kernel.sh• 生成镜像文件: out\KERNELOBJ\kernel\srctmp\linux-4.19\boot.img操作步骤,次要是领导开发者,如何正确应用音频驱动,通过命令来管制音频文件的播放等。步骤: 3. 播放Demo操作步骤• Step1:执行hdc shell• Step2:运行audiosamplerender • Step3:输出2 (抉择2.Render SmartPA)• Step4:输出1 (抉择1.Render Direct Loading)• Step5:输出1 (抉择1.Render Start)• Step6:在播放过程能够输出2-12,操作其余性能,其中音量范畴0-1,可输出2位小数。 [可选步骤] ...

November 7, 2022 · 1 min · jiezi

关于openharmony:我把分布式音乐播放器适配了Stage模型

OpenAtom OpenHarmony(以下简称“OpenHarmony”)利用开发自API 8及其更早版本始终应用的是FA模型进行开发。FA模型是Feature Ability的缩写,它和PA(Particle Ability)两种类型是过往长期推广的术语,深入人心。 然而从API 9开始,Ability框架引入了Stage模型作为第二种利用框架状态,Stage模型将Ability分为PageAbility和ExtensionAbility两大类,其中ExtensionAbility又被扩大为ServiceExtensionAbility、FormExtensionAbility、DataShareExtensionAbility等一系列ExtensionAbility,以便满足更多的应用场景。新模型接口中有AbilityStage/WindowStage的概念,这个Stage自身有舞台的意思,寓意是给开发者一个新的展示舞台。Stage模型的设计,次要是为了开发者更加不便地开发出分布式环境下的简单利用。下表给出了两种模型在设计上的差别: 能够看得出来,新的模型设计的次要指标是把UI与Ability拆散,即从架构设计层面,标准开发者编写业务逻辑和UI交互的开发方式。通过数据把UI和业务逻辑解耦,开发者在Ability中产生数据,数据传递给UI框架后,利用ArkTS申明式框架的特点,UI=F(state),通过数据驱动UI变动。这样的设计是为了更好地反对Ability实现跨端迁徙和多端协同,即数据都是存储在Ability里,继而通过数据驱动UI展现。此外,FA模型每个Ability应用一个VM实例,而Stage模型整个过程只应用一个VM实例,缩小过程内存占用,利用内状态在过程内共享。 分布式音乐播放器,是往年上半年我基于OpenHarmony 3.1,参考OpenHarmony JS分布式音乐播放的Sample代码,应用ArkTS新写的样例,过后的次要目标就是为了学习ArkTS开发页面。此次适配Stage模型后,在润和大禹系列HH-SCDAYU200开发套件上,成果如下图所示: 能够看到,此次更新,不仅应用了Stage模型适配,还应用ArkTS减少了一个音乐播放器首页列表的界面,以及播放时应用属性动画,实现了一个播放音乐时“唱片旋转”的动画成果。这次应用Stage模型适配样例,次要是批改了如下几个中央: 批改点1:代码目录的调整 能够看到,绝对于FA的目录构造,首先是在最上层目录里,减少了一个AppScope目录,这个目录下也是resources下的资源文件,比方string.json,图片等内容。这个目录里的资源文件,会在编译时拼接到具体的hap内编译,因而能够把不同hap包里的专用资源提取到这个目录下。 此外是减少了AbilityStage.ts这个文件,它是Hap及加载入口,开发者能够基于它派生实现hap的初始化以及指定多个实例开发。AbilityStage能够配合ApplicationContext监听/治理过程内组件的生命周期,感觉是有点充当了FA模型里的app.ets的作用。 其它的文件也有小的变动,如配置文件,pages地位等都有调整。所以倡议还是新建一个stage模型的工程,而后把之前的代码逐渐复制过去,而后批改问题。 批改点2:获取设施列表,分布式拉起等API变动 因为两种模型的利用上下文不同,导致一些跟上下文相干的API大都有些变动,在SDK及文档中有明确表明哪些API是stage模型专用的。比方耳熟能详的startAbility分布式拉起利用,在FA模型中是通过以下代码实现: import featureAbility from '@ohos.ability.featureAbility'; featureAbility.startAbility({ want: wantValue }).then((data) => { CommonLog.info('startAbilityContinuation finished, ' + JSON.stringify(data)) //拉起后,自我敞开 featureAbility.terminateSelf((error) => { CommonLog.info('startAbilityContinuation terminateSelf finished, error=' + JSON.stringify(error)) }) }).catch((error) => { CommonLog.info('startAbilityContinuation error ' + JSON.stringify(error)) })而在stage模型里,因为不再有featureAbility,因而无奈import featureAbility,进而无奈应用featureAbility.startAbility拉起利用,进而应用getContext获取上下文后,调用startAbility拉起利用。 getContext(this).startAbility(want).then((data) => { CommonLog.info('startAbilityContinuation finished, ' + JSON.stringify(data)) //自我敞开 getContext(this).terminateSelf((error) => { CommonLog.info('startAbilityContinuation terminateSelf finished, error=' + JSON.stringify(error)) }) }).catch((error) => { CommonLog.info('startAbilityContinuation error ' + JSON.stringify(error)) })除了startAbility外,样例里应用到的获取蕴含bundleName,设施发现deviceManager的相干API都须要依照上述办法进行批改。 ...

November 7, 2022 · 2 min · jiezi

关于openharmony:前行不缀-未来可期鸿蒙生态发展迈入全新阶段

**OpenHarmony生态蓬勃发展 行业翻新成绩减速落地多方共建 携手共赢,OpenHarmony生态落地成效显著** (中国,松山湖,2022年11月4日)华为开发者大会2022(Together)明天在东莞松山湖揭开帷幕,带来了鸿蒙生态的最新成绩,展现了鸿蒙生态的全新格局。在大会主题演讲中,介绍了OpenHarmony生态的共建成绩以及将来前景,展示了OpenHarmony赋能千行百业数字化转型的蓝图。 商用成绩纷纷落地,OpenHarmony使能千行百业数字化转型随着数字经济的倒退,作为数字基础设施根技术的操作系统成为数字改革的要害力量。面对万物互联时代的行业倒退诉求,OpenHarmony应运而生。OpenHarmony是由凋谢原子开源基金会(OpenAtom Foundation)孵化及经营的开源我的项目,曾经有60多家企业参加共建,指标是面向全场景、全连贯、全智能时代、基于开源的形式,搭建一个智能终端设备操作系统的框架和平台,促成万物互联产业的凋敝倒退。 秉承着开源凋谢的精力,在多方共建下,OpenHarmony生态在各行业畛域减速推动,不仅利用于生产端的智能家居行业,还进一步扩大到教育、金融、交通、政务、工业等畛域,第三方搭档基于OpenHarmony公布了多款特定行业的商业发行版,一大批商用终端设备纷纷落地。 面向教育行业,基于OpenHarmony推出的电子学生证、智能手写板等产品可能打造多设施协同体验,帮忙学生高效学习,老师精准授课;面向金融行业,基于OpenHarmony推出的云喇叭、POS机等金融终端,功能丰富安全性强,能够满足金融市场业务多元化、信息安全性需求;面向政务办公,商务平板和智行电子哨兵等产品,满足平安高效的办公需要,帮忙企业实现降本增效。不仅如此,在工业、交通、超高清等畛域,OpenHarmony解决方案也在继续落地。将来OpenHarmony还将深刻更多行业,助力千行百业数字化转型。 共建共享共赢,OpenHarmony生态倒退继续凋敝截至2022年10月,OpenHarmony位居Gitee活跃度指数第一名,已有5000+社区贡献者、领有23个软件发行版、76款开发板/模组、79款商用设施,是码云平台上以后代码和社区最沉闷的开源我的项目。此外, OpenHarmony的底座技术能力也一直加强,现已领有16,000 +API,能够反对搭档针对简单带屏设施进行利用开发。 前行不辍,将来可期。OpenHarmony生态凋敝离不开产业链上下游搭档,以及宽广开源人才的共同努力。将来期待越来越多的合作伙伴、人才退出OpenHarmony小家庭,为鸿蒙生态倒退注入源源不断的新动力,独特打造使能千行百业的数字底座。

November 4, 2022 · 1 min · jiezi

关于openharmony:赋能千行百业数字化转型OpenHarmony生态新成果即将亮相HDC2022

第四届华为开发者大会 2022(Together)将于11月4日-6日在东莞召开,OpenAtom OpenHarmony(以下简称“OpenHarmony”)将携生态新成绩亮相HDC2022。带来多场行业论坛及线下展区流动,致力于让生态搭档更清晰地理解OpenHarmony倒退现状及将来方向,行业大咖齐聚一堂,独特探讨OpenHarmony倒退新机遇。 本次行业论坛将邀请各行业专家及合作伙伴面对面交换,探讨OpenHarmony行业场景利用案例,展示行业翻新技术倒退方向。此外,线下公共展区则将笼罩教育、政务、金融、工业等畛域,展现不同行业解决方案及生态落地成绩,内容精彩纷呈,期待独特碰撞思维火花。 众家共建,OpenHarmony生态倒退初具规模2020年9月,凋谢原子开源基金会承受华为奉献的智能终端操作系统根底能力相干代码,随后孵化OpenHarmony开源我的项目。作为开源的分布式泛终端操作系统,OpenHarmony具备分布式、全场景的技术劣势,能够广泛应用于金融、教育、工业、交通等行业。面向未来全场景、全连贯、全智能时代,OpenHarmony始终致力于为千行百业搭建一个智能终端操作系统的数字底座,赋能各行各业实现数字化转型降级。 在凋谢原子开源基金会、OpenHarmony工作委员会、共建单位和宽广开发者的共同努力下,OpenHarmony开源我的项目获得突破性倒退,生态倒退初具规模。截至目前,OpenHarmony位居Gitee活跃度指数第一名,吸引了40多家主仓代码奉献单位、超过4700名社区贡献者、汇聚160万+社区用户,寰球下载次数高达11300万+,领有23个发行版、76款开发板/模组和74款商用设施,曾经成为寰球智能终端操作系统畛域中一股不可漠视的开源力量。 多元行业论坛 精彩前沿对话 丰盛生态展区,OpenHarmony赋能各行各业数字化转型以后,OpenHarmony在赋能千行百业数字化转型的路线上曾经获得了丰盛的落地成绩。为了给宽广开发者、生态搭档提供成绩展现、独特探讨的舞台,OpenHarmony将通过松湖对话、行业论坛及公共展区等环节,聚焦不同行业场景下的优良实际案例,搭建交换沟通平台,展示OpenHarmony生态成绩。 在往年HDC的“松湖对话”环节,相干的企业代表、业界大咖将齐聚一堂,聚焦OpenHarmony赋能行业数字化转型的相干话题,共商将来倒退新机遇。 同时,6场行业论坛将围绕教育、金融、交通等畛域,搭建合作伙伴交换沟通平台,展示合作伙伴基于OpenHarmony开发的行业场景解决方案,进一步探讨翻新技术落地前景。 公共展区则为合作伙伴、开发者们提供成绩展现的阵地,让大家独特见证OpenHarmony在教育、政务、金融、工业等各个领域落地的终端产品及丰硕成果,展现行业标杆案例,吸引更多软硬件搭档退出OpenHarmony小家庭,使能千行百业。 将来,随着OpenHarmony零碎能力的一直降级、配套开发工具和资源的逐渐齐备、更多行业产品和解决方案的一直推出,置信会有越来越多产业链搭档退出OpenHarmony生态,独特推动OpenHarmony的生态凋敝和商用落地。在万物智联时代,赋能千行百业实现数字化、智能化转型降级。据理解,此次流动还邀请到了出名媒体大咖、人气科技博主光临现场,并以第一视角带来全方位精彩报道,让咱们刮目相待吧!

November 2, 2022 · 1 min · jiezi

关于openharmony:OpenHarmony将携新成果亮相HDC2022

第四届华为开发者大会 2022(Together)将于11月4日-6日在东莞召开,OpenAtom OpenHarmony(以下简称“OpenHarmony”)将携新生态成绩亮相HDC2022。邀你共建、共赏、共摸索!

October 31, 2022 · 1 min · jiezi

关于openharmony:浅谈OpenHarmony-LiteOSA内核之基础硬件中断控制器GIC400

一、前言OpenAtom OpenHarmony(以下简称“OpenHarmony”)采纳多内核架构,反对Linux内核的规范零碎、LiteOS-A的小型零碎、LiteOS-M的轻量零碎。 其中LiteOS-A要求设施具备肯定的解决能力,比照LiteOS-M,LiteOS-A反对以下个性:(1)MMU反对:通过MMU反对内核态和用户态拆散,反对虚构单元;(2)反对独立过程:调度对象别离为过程、线程;(3)反对文件系统:包含虚构文件和块设施等;(4)反对更简单的IPC:包含LiteIPC等;(5)反对多核调度:反对双核MCU,反对双核调度;(6)反对POSIX3接口:为APP开发提供更多帮忙。 LiteOS-A内核个性都是建设在CPU硬件的根底上,而中断控制器在反对LiteOS-A内核的CPU中施展着微小的作用:它治理和管制可屏蔽中断并对可屏蔽中断进行优先权断定,缩小CPU的负载,使得CPU更加专一于计算。 在嵌入式畛域,ARM公司提供的芯片目前是市场的支流,OpenHarmony LiteOS-M内核目前反对的ARM公司的Cortex-M系列的芯片,而LiteOS-A内核反对的则是ARM公司性能更弱小的Cortex-A/R系列的芯片,GIC是ARM公司给Cortex-A/R系列芯片提供的一个中断控制器,在移植OpenHarmony LiteOS-A内核到特定板子的实际中,咱们遇到了很多GIC中断控制器相干的技术问题,所以须要深刻理解ARM体系架构下GIC中断控制器的原理和应用办法,特此总结并共享给各位网友。 二、GIC控制器概述1、GIC简介GIC是ARM公司给Cortex-A/R核提供的一个中断控制器,相似Cortex-M中的NVIC。目前GIC有4个版本:V1~V4:V1是最老的版本,曾经被废除了;V2~V4目前正在被大量地应用。 GIC V2是给ARMv7-A架构应用的,比方Cortex-A5,Cortex-A7、Cortex-A9、Cortex-A15等,V3和V4是给ARMv8-A/R架构应用的,也就是64位芯片应用的。GIC V2最多反对8个核。ARM会依据GIC版本的不同研发出不同的IP核,半导体厂商间接购买对应的IP核即可,比方ARM针对GIC V2就开发出了GIC400中断控制器IP核。留神,具体产品是GIC400,设计规范是V2。当GIC接管到内部中断信号当前汇报给ARM内核,然而ARM内核只提供四个信号给GIC来汇报中断状况:VFIQ、VIRQ、FIQ和IRQ,他们之间的关系如图所示: 在图中,GIC接管泛滥的内部中断,并对其进行解决,最终只通过四个信号报给 ARM 内核,这四个信号的含意如下:● VFIQ: 虚构疾速 FIQ● VIRQ: 虚构内部 IRQ● FIQ:  疾速中断 IRQ● IRQ:  内部中断 IRQ 2、GIC整体实现 下图左侧局部是中断源,两头局部是GIC控制器,最右侧是中断控制器向处理器内核发送中断信息。咱们重点要看的是两头的 GIC 局部,GIC 将泛滥的中断源分为三类: ①SPI(Shared Peripheral Interrupt),共享中断,即所有Core共享的中断,内部中断都属于SPI中断。比方按键中断、串口中断等,这些中断所有的Core都能够解决,不限定特定Core。 在图中,每个SPI设计是共享的,在SMP零碎中每个SPI都须要连贯一个线到各个CPU中。 ②PPI(Private Peripheral Interrupt),公有中断,GIC是反对多核的,每个核有本人独有的中断,须要指定的外围解决。 在图中,每个CPU都有属于本人的PPIs,对应关系是1对1。 ③SGI(Software-generated Interrupt),软件中断,由软件触发引起的中断,通过向寄存器GICD_SGIR写入数据来触发,零碎应用SGI中断来实现多核之间的通信。 在图中,SGI是软件(软件运行在CPU上)触发,所以SGI中断源头是各个CPU上的利用,另外SGI和PPI一样,每个CPU都有属于本人的SGI,所以必须指定CPU。 3、中断 ID 中断源有很多,为了辨别不同的中断源要给它们调配惟一ID,也就是中断ID。每一个CPU最多反对1020个中断ID,中断ID号为ID0~ID1019。1020 个ID蕴含了PPI、SPI和SGI,那么这三类中断是如何调配这 1020 个中断 ID 的呢?调配如下:● ID0~ID15:这16个ID调配给SGI● ID16~ID31:这16个ID调配给PP● ID32~ID1019:这988个ID调配给SPI,像GPIO中断、串口中断等这些内部中断 至于具体到某个ID对应哪个中断,那就由半导体厂商依据理论状况去定义。比方 I.MX6U 的总共应用了128个中断ID,加上后面属于PPI和SGI的32个ID,I.MX6U的中断源共有128+32=160个。 4、GIC逻辑模块 GIC架构分为了两个逻辑块:Distributor和CPU Interface,也就是散发器端和CPU接口端。Distributor(散发器端):参考GIC整体实现的图,此逻辑块负责解决各个中断事件的散发问题,确定中断事件应该发送到哪个CPU Interface下来。散发器收集所有的中断源,能够管制每个中断的优先级,它总是将优先级最高的中断事件发送到CPU接口端。散发器端要做的次要工作如下:① 全局中断使能管制② 管制每一个中断的使能或者敞开③ 设置每个中断的优先级④ 设置每个中断的指标处理器列表⑤ 设置每个内部中断的触发模式:电平触发或边际触发⑥ 设置每个中断属于组0还是组1,此设置波及到另外一个畛域平安畛域 CPU Interface(CPU接口端):CPU接口端和CPU Core相连接,因而每个CPU Core都能够在GIC中找到一个与之对应的CPU Interface。CPU接口端是散发器和CPU Core之间的桥梁,CPU接口端次要工作如下:① 使能或者敞开发送到CPU Core的中断请求信号② 应答中断③ 告诉中断解决实现④ 设置优先级掩码,通过掩码来设置哪些中断不须要上报给CPU Core⑤ 定义抢占策略⑥ 当多个中断到来的时候,抉择优先级最高的中断告诉给CPU Core ...

October 27, 2022 · 5 min · jiezi

关于openharmony:RK系列开发板音频驱动适配指南四

背景:通过DAI、DMA、Codec文章对RK系列开发板音频驱动适配指南曾经论述了,本次次要介绍音频驱动适配中的HCS适配。 RK系列开发板 HCS适配:配置HCS的次要作用是实现各设施节点、服务的参数与公有数据配置,个别在设施驱动注册与初始化时加载到零碎中,在音频解决场景中的各阶段应用。HDF框架提供了2组配置文件 ,别离是专用参数配置文件和设施公有数据配置的,私有参数须按HCS标准配置,公有数据配置既恪守HCS标准,开发者还可自定义配置项,并提供配置解析办法即可。 1.1.私有参数配置•配置文件门路: vendor\xxxx\RK系列开发板\hdfconfig\khdf\deviceinfo•DAI模块: device_dai0 :: device { device0 :: deviceNode { policy = 1; // dai模块只对内核提供服务 priority = 50; // dai模块需在HDF_AUDIO模块之前加载 preload = 0; // dai模块加载形式 permission = 0666; // dai模块拜访权限 moduleName = "DAI_RK系列开发板"; // 模块名,与g_daiDriverEntry中的模块名统一 serviceName = "dai_service"; // 对外提供的服务名称 deviceMatchAttr = "hdf_dai_driver"; //公有配置属性名称,通过此名称匹配对应的公有数据 }}•DMA模块: device_dma :: device { device0 :: deviceNode { policy = 1; priority = 50; preload = 0; permission = 0666; moduleName = "DMA_RK系列开发板"; // 模块名,与g_platformDriverEntry中的模块名统一 serviceName = "dma_service_0"; deviceMatchAttr = "hdf_dma_driver"; }}•Codec模块: ...

October 27, 2022 · 1 min · jiezi

关于openharmony:RK系列开发板音频驱动适配指南三

背景:前两篇文章曾经具体解说了DAI驱动适配、DMA驱动适配,本次次要介绍音频驱动适配中的Codec模块适配。 RK系列开发板 ES8388 Codec模块适配:Codec其次要作用是对PCM(Pulse Code Modulation)或Mic、Linein等输出的信号进行D/A或A/D转换,并对音频信号做出相应的解决,如音量控制等;且对音频通路进行管制。Soc与Codec别离通过I2S实现音频数据传输,通过I2C与实现管制信号传输(非SoC内置的Codec时),其中I2C驱动由HDF框架提供。ADM定义的Codec接口包含:Codec设施初始化、读写寄存器、Codec DAI初始化、Codec DAI启动和Codec DAI下发硬件参数共6个接口。 在适配器模块中实例化ADM定义的DAI两个构造体:CodecData(Codec数据集)、DaiData(Codec端DAI数据集)和AudioDaiOps(Codec端DAI操作集);在操作集模块中实现Codec的业务接口函数,若非SoC内置Codec时,则还须要实现通过I2C读写Codec寄存器的性能函数;配置Codec设施节点私有参数,若有须要,则可配置Codec相干寄存器信息等公有参数。 文件门路与构造:  - 文件门路:device/rockchip/RK系列开发板/audio/codec  - 文件构造    ├── codec        ├── include        │   └── es8388_codec_ops.h        └── src            ├──es8388_codec_adapter.c            └──es8388_codec_ops.c RK系列开发板 Codec模块关系: 1.1.es8388 codecadapter•实例化Codec数据集:g_es8388Data,核心成员字段值定义如下:Init = Es8388DeviceInit;Read = Es8388DeviceRegRead;Write = Es8388DeviceRegWrite。•实例化Codec端DAI操作集:g_es8388DaiDeviceOps,核心成员字段值定义如下:Startup = Es8388DaiStartup;HwParams = Es8388DaiHwParams。•实例化Codec端DAI数据集:g_es8388DaiData,核心成员字段值定义如下:DaiInit = Es8388DaiDeviceInit;drvDaiName = "codec_dai",Codec端DAI驱动名称ops = &g_es8388DaiDeviceOps,Codec端DAI操作集地址。•实例化HdfDriverEntry类型的Codec驱动实体:g_es8388DriverEntry,核心成员字段值定义如下:moduleVersion = 1,模块版本号;moduleName = "CODEC_ES8388",模块名;Bind = CodecDriverBind;Init = CodecDriverInit;Release = CodecDriverRelease。Codec驱动注册到鸿蒙零碎:HDFINIT(ges8388DriverEntry)。•实现以下函数:CodecDriverInit,Codec驱动初始化函数;CodecDriverBind,Codec驱动绑定函数;CodecDriverRelease,Codec驱动开释函数。 1.2.es8388codecops•实现以下函数:Es8388DeviceInit,初始化Codec设施函数;Es8388DeviceRegRead,读Codec设施寄存器函数;Es8388DeviceRegWrite,写Codec设施寄存器函数;Es8388DaiDeviceInit,初始化Codec端DAI设施函数;Es8388DaiStartup,启动Codec端DAI设施函数;Es8388DaiHwParams,下发Codec端DAI硬件参数函数。 总结:本文具体介绍Codec 模块适配步骤以及外围代码,联合前两篇的音频驱动适配文章置信读者会对音频适配根本曾经把握了外围点,之后的文章中,会逐渐更新音频驱动的Audio HCS配置等。

October 25, 2022 · 1 min · jiezi