文档开发者中心
我的
推荐
最热
最新
其他
已解决
未解决
Navigation 组件能否替代 Router? 新项目看到官方推荐 Navigation + NavDestination 替代旧的 router 页面跳转。两者有什么区别?如果老项目迁移时会不会有坑?新项目看到官方推荐 Navigation + NavDestination 替代旧的 router 页面跳转。两者有什么区别?如果老项目迁移时会不会有坑?

评论2

浏览 9

发布于38分钟前
参数如下:{      "taskParams": {          "solutionName": "稳定性基础质量测试",          "package.name": "com.xm.ShuaTi",           "testDuration": "10",          "uninstallApp": "false",          "threadDetect": "true",          "asanEnable": "true",          "sn": [              "127.0.0.1:5555"         ],          "taskName": "Task-命令行-184050"      }  }Server response: {"error_code":"DT.100102","error_msg":"device sn is invalid, please check device sn!"}

评论7

浏览 24

发布于52分钟前
身边有朋友反馈华为部分机型续航表现不够耐用,所以我想从软件调度、硬件、系统优化多个维度同步提供优化方案。除了这些,不知道哪位大神还能不能说出一些不一样的方法?       在程序与系统层面,可优化后台应用管控机制,完善应用休眠策略,减少APP后台自启、关联唤醒带来的无效耗电;细化功耗调度,根据使用场景动态调节芯片性能,日常浏览、阅读时降低功耗,游戏等高负载场景再释放性能。同时优化鸿蒙系统动画、息屏显示、蓝牙、eSIM等功能的耗电逻辑,给用户提供更精细的功耗自定义选项。       硬件层面,可升级电芯材料,在控制机身厚度的前提下,提升电池容量与能量密度;优化电源管理芯片,降低充放电过程中的电能损耗。散热设计也需要同步升级,高温会加速耗电,更好的散热可以减少发热带来的额外功耗。        另外,充电策略也可以优化,完善智能充电保护,兼顾电池寿命和续航。软硬件协同调整,在不牺牲使用体验的前提下拉长单次使用时长,才能更好满足用户长时间外出的使用需求。

评论1

浏览 28

发布于57分钟前
如何实现组件边缘的折射效果 背景纯透明 仅边缘折射效果 并且可以根据背景的变化实时进行预览的效果 这种相果 也就是苹果的液态玻璃效果 如何在鸿蒙当中使用arkui去实现液态玻璃的效果 能否完全复刻苹果的液态玻璃效果

评论71

浏览 2k

发布于2026-09-05 02:57
云云
|
采纳答复
点赞10
回复于2026-09-10 06:57
@hadss/hmrouter-transitions提供的右滑页面返回的一镜到底动画的手势结束回调是什么

评论6

浏览 18

发布于1小时前
跨设备传输功能:比如在手机的图库里长按图片,拖拽到平板的应用窗口里释放,平板端直接显示并保存;或者反方向,App 里的文件拖拽分享给另一台设备。鸿蒙有跨端拖拽主要是依赖分布式软总线,有人实现过吗?

评论5

浏览 22

发布于1小时前
我开发上架了一款DeepChat的应用,应用本身就是给ai发消息聊天,发送完消息,可以退出或者锁屏等到ai完成回复会有通知,但现状是应用发送消息以后申请的后台保活只有规定的三分钟,但有时候三分钟太短了,AI没有完成回复网络中断了。我想给应用设置成默认10分钟后台保活时间,但我无法设置,我认为你们应该开放这个权限给用户自行选择。你们应用设定的长时后台任务有严格的类型限制,我的应用我就发现没有合适的归类。

评论6

浏览 32

发布于1小时前
请问上架鸿蒙应用一定要每年支付服务器费用和域名费用吗?做个小工具上架,还要每年都支付几百块费用才行吗?我问AI,好像说如果不持续租用服务器的话。备案会被撤销。应用也会被下架。

评论25

浏览 627

发布于2026-10-16 09:17
我在做一个信息流页面,里面嵌套了多层自定义组件,有一堆 @Monitor 和 @Watch 在监听状态变化做局部刷新。为了优化性能,给一些非激活页面的子组件加了 freezeWhenInactive: true,想让它们在后台不响应状态更新、减少无谓的 UI 刷新。结果加了之后出现两个很尴尬的现象:现象一:@Monitor 彻底不执行了。 组件明明已经回到激活状态,状态变量也确实变了,但 @Monitor 就是不回调,关联的节点也不刷新。一开始以为是 @Monitor 写错了,去掉 freezeWhenInactive 就恢复正常,所以问题锁定在冻结上。现象二:嵌套组件的解冻行为对不上。 我在父组件上开了冻结,子组件也跟着不刷新;但有时候又反过来,父组件明明已经激活了,嵌套在里面的某个子组件状态还是“冻着”的,数据停在旧值。后来查了一下 ArkUI 的 Changelog,才发现从某个版本开始,组件冻结的行为变严格了:在“支持冻结的组件嵌套使用的解冻场景”“V2 自定义组件的解冻场景”“Repeat VirtualScroll 的复用场景”下,以前冻结可能“实际未生效”,所以状态变量还能刷新、@Watch/@Monitor 还能执行;变更之后,这些场景下冻结真正生效了,状态变量不再刷新,@Watch/@Monitor 也不会执行。官方给的适配建议也很直接:如果确实需要刷新缓存中的数据,就把 freezeWhenInactive 关掉。我现在卡在几个地方:“非激活状态”的边界到底怎么判断? 是页面不可见就算非激活,还是组件被其他组件完全遮挡才算?如果我的页面在 Tabs 里被切走、但组件树还活着,这时候开了冻结,回到激活状态后 @Monitor 会不会有“漏掉”的变化需要手动补一次?嵌套组件里,冻结属性是继承的还是各自独立的? 父组件开了 freezeWhenInactive,子组件默认会跟着冻结吗?如果子组件想单独保持活跃、不被父组件的冻结影响,应该怎么配?反过来,父组件没开冻结,子组件单独开了,解冻时会不会因为父组件还在刷新而产生时序问题?Repeat + virtualScroll 复用场景下,冻结和 @Reusable 会不会互相打架? 我理解冻结是“不响应状态更新”,复用是“拿旧组件实例重新挂数据”,如果冻结期间组件被复用池回收,aboutToReuse 里的数据刷新会不会被冻结一并挡住,导致复用出来的组件显示的是冻结前的旧内容?如果我只是想优化性能、并不想牺牲数据正确性,有没有比 freezeWhenInactive 更温和的手段?比如只冻结 UI 节点的刷新、但保留 @Monitor 执行用于写缓存或打日志?还是说冻结的本质就是一刀切,要性能就得接受这部分逻辑不跑?

评论3

浏览 21

发布于1小时前
我在做一个出行工具类应用,想把“查找路线”和“扫一扫”两个高频功能注册进意图框架,让用户对小艺说一句“帮我打开 XX 的查找路线”就能直接落到功能页,省掉打开 App 再点好几层的功夫。按文档把 insight_intent.json 放进了 src/main/resources/base/profile/,照着示例写了 InsightIntentExecutor,编译、签名、上架都过了。结果真机一验证,三台设备三种死法:一台小艺直接回“暂不支持这个功能”;一台调用起来了但返回 code 非 0,页面卡在空白;还有一台日志里报 getSid failed,意图服务异常。文档来回翻了几遍,每一步都像照做了,行为就是不对。后来看了一些社区反馈,才意识到问题可能不止一层:insight_intent.json 的路径:社区里提到,文件必须只在 entry 模块的 src/main/resources/base/profile/ 下,工程里只能存在一个。如果放在 products/phone/... 这种非 entry 路径,系统可能解析不到,报 -304 intent invalid。intentName 的命名:文档要求大驼峰,不能带下划线,而且必须和小艺开放平台端插件里的工具名称完全一致。我有点不确定自己平台侧的命名和配置文件里的是不是真的一字不差。onExecuteInUIAbilityForegroundMode 的返回值:社区提到必须显式 return {code: 0},如果隐式返回 undefined 或非 0,小艺会判定意图执行失败,表现就是页面空白。getSid failed:有说法是和设备未登录华为账号或会话过期有关,需要确认设备上华为账号的登录状态。白名单:我印象里看到过 shareIntent 报 1000101101,原因是应用未在 InsightIntent 框架中完成订阅注册,调试模式也无法绕过白名单。但我现在调的不是 shareIntent,不确定普通意图是不是也有同样的注册要求。开发者类型:还看到有人说 Intents Kit 的完整接入能力暂不对个人开发者开放,需要企业开发者账号才能申请。如果这条是真的,那我个人账号现在能调到什么程度、卡在哪一步,就完全不清楚了。我现在最困惑的是:这三台设备的报错到底是同一个根因的不同表现,还是三个独立的坑?如果根因不止一个,应该按什么顺序排查,才能避免改完一个另一个又冒出来?另外,如果白名单和个人开发者限制确实存在,有没有什么办法在本地先把代码链路跑通、等账号升级后再补申请,而不是完全卡住?

评论3

浏览 26

发布于1小时前
在音乐播放应用中,播放时已经申请了 AUDIO_PLAYBACK 长时任务,后台播放正常。但是我们测试发现在暂停播放后切到后台,几分钟后应用进程就会被系统给冻结了,然后再切回前台就需要重新加载了,为什么长时任务还会被冻结?

评论5

浏览 35

发布于2小时前
设备/环境:SGT-AL10 · HarmonyOS 7.0.0.105 · API 26 · DevEco Studio(hms SDK,UIDesignKit 声明 6.1.0(23)/6.1.1(24));应用 metadata 已配置 ohos.arkui.UIMaterial.state = "enable";targetAPIVersion ≥ 26;entry 模块;系统设置"沉浸光感" = 强(最高档)。问题现象:底部导航(悬浮胶囊 + 独立圆形)由普通 ArkUI 组件(Stack/Row)通过 systemMaterial(new uiMaterial.ImmersiveMaterial(...)) 接入沉浸式系统材质。HarmonyOS 7.0.0.105 SP6 系统更新之前:胶囊呈现真实玻璃质感(折射/光晕/通透)。SP6 更新之后:同一代码、同一设备、未改任何配置——胶囊变成纯透明的卡片(背后内容直接透出,无任何材质滤镜/折射/高光;看起来就像完全没有材质)。已按官方文档验证:按"沉浸光感"官方指南示例 1 的写法复刻(Column/Stack + .backgroundColor(Color.Transparent) 写在 .systemMaterial(...) 之前 + borderRadius + 顺序正确),同样失效。按"通用组件封装"实践(ImmersiveSurface:独立组件 + BuilderParam 内容 + 透明背景 + borderRadius + clip(true) + systemMaterial 最后),同样失效。运行时探针证据(关键):deviceInfo.apiAvailable('26.0.0') = true;uiMaterial.getMaterialInfo().state = 1(≠ DISABLE)→ 应用侧门全过;new uiMaterial.ImmersiveMaterial({ style: REGULAR, materialColor: '#80FF0000', interactive: true, lightEffect: {color: undefined} }) 传入 systemMaterial 后,50% 红色 materialColor 在画面上零差异(胶囊未变粉)——证明材质滤镜完全未被渲染(不是"样式选错/背景遮挡"类问题)。对照:同一设备上,系统组件的表面(如音乐条、系统设置预览)沉浸光感正常;HDS HdsTabs 官方悬浮页签(barFloatingStyle.systemMaterialEffect,materialType/materialLevel 模式)玻璃材质正常——唯独第三方应用里自定义 ArkUI 节点的 systemMaterial 不渲染。求助点:自定义 ArkUI 组件(Stack/Row/Column 等普通容器)的 systemMaterial 在 7.0.0.105(SP6) 是否被限制/降级?是否已有已知问题或需要新的启用条件?应用侧如何判定设备的沉浸光感算力档位(低/中/高)与全局材质等级?官方指南示例 5 提到 uiMaterial.getGlobalMaterialLevel() / uiMaterial.isImmersiveMaterialSupported(),但当前 SDK 的 ArkTS 声明中不存在这两个 API(能力清单 ArkUI.json 中有声明,since 26.0.0)——这是声明回退还是需要更高 SDK 补丁?如果自定义组件的材质确实无法恢复,官方推荐的自定义底部导航正确载体是什么(HDS 已确认可用,但存在自定义页签内容/动画限制)?代码片段(完整:普通 ArkUI 组件 + 沉浸光感)以下 = 生产组件中"普通 ArkUI 组件 + 材质接入"的完整相关代码(约 120 行)。 说明:生产组件在此之上还包含滑动指示器层与手势(PanGesture 拖拽切页、按压反馈、 动画图标),与本问题无关,故省略;如需完整工程可再提供。import { uiMaterial } from '@kit.ArkUI'; import { deviceInfo } from '@kit.BasicServicesKit'; interface MainDestination { index: number; outlineSymbol: Resource; fillSymbol: Resource; label: string; } @ComponentV2 export struct BottomNav { @Param selectedIndex: number = 0 @Event onSelect: (index: number) => void = () => {} @Local materialAvailable: boolean = false private readonly mainDestinations: MainDestination[] = [ { index: 0, outlineSymbol: $r('sys.symbol.message'), fillSymbol: $r('sys.symbol.message_fill'), label: 'Chat' }, { index: 1, outlineSymbol: $r('sys.symbol.person_crop_circle_fill_1'), fillSymbol: $r('sys.symbol.person_crop_circle_fill_1'), label: 'Contacts' }, { index: 2, outlineSymbol: $r('sys.symbol.gearshape'), fillSymbol: $r('sys.symbol.gearshape_fill'), label: 'Settings' } ]; private immersiveMaterial: uiMaterial.ImmersiveMaterial | undefined = undefined; aboutToAppear(): void { try { this.materialAvailable = deviceInfo.apiAvailable('26.0.0'); if (this.materialAvailable) { const info = uiMaterial.getMaterialInfo(); this.materialAvailable = info.state !== uiMaterial.MaterialState.DISABLE; } this.immersiveMaterial = this.materialAvailable ? new uiMaterial.ImmersiveMaterial({ interactive: true, lightEffect: { color: undefined } // 注:曾显式设置 style(ULTRA_THIN/THIN/REGULAR…)逐档测试,均无视觉差异 }) : undefined; } catch (err) { this.materialAvailable = false; this.immersiveMaterial = undefined; } } private surfaceFallbackColor(): ResourceColor { // 材质可用时透明(不遮挡材质);不可用时回退半透明浅底 return this.materialAvailable ? Color.Transparent : $r('sys.color.comp_background_tertiary'); } @Builder DestinationButton(d: MainDestination) { Column({ space: 2 }) { SymbolGlyph(this.selectedIndex === d.index ? d.fillSymbol : d.outlineSymbol) .fontSize(22) .fontColor([this.selectedIndex === d.index ? $r('sys.color.icon_emphasize') : $r('sys.color.icon_primary')]) Text(d.label) .fontSize(10) .fontColor(this.selectedIndex === d.index ? $r('sys.color.icon_emphasize') : $r('sys.color.icon_primary')) } .justifyContent(FlexAlign.Center) .layoutWeight(1) .height('100%') .backgroundColor(Color.Transparent) .onClick(() => { this.onSelect(d.index); }) .accessibilityGroup(true) .accessibilityText(d.label) .accessibilitySelected(this.selectedIndex === d.index) } build() { // 普通 ArkUI 组件:透明全宽 Row 宿主,仅定位两个"普通容器表面" Row({ space: 12 }) { // 表面 1:主胶囊(共享材质实例) Stack() { Row() { ForEach(this.mainDestinations, (d: MainDestination) => { this.DestinationButton(d) }, (d: MainDestination) => `${d.index}`) } .width('100%') .height('100%') } .layoutWeight(1) .height(56) // 普通容器 + 普通属性 .borderRadius(28) .clip(true) .shadow({ radius: 24, color: 'rgba(0,0,0,0.16)', offsetX: 0, offsetY: 6 }) .backgroundColor(this.surfaceFallbackColor()) // ← 写在 systemMaterial 之前(官方顺序) .systemMaterial(this.immersiveMaterial!) // ← 通用属性接入沉浸式系统材质 // 表面 2:独立圆形(同一材质实例) Stack() { Stack() { Text('A').fontSize(22).fontWeight(FontWeight.Medium).fontColor(Color.White) } .alignContent(Alignment.Center) .width(44) .height(44) .borderRadius(22) .backgroundColor('#0A59F7') } .alignContent(Alignment.Center) .width(56) .height(56) .borderRadius(28) .clip(true) .shadow({ radius: 24, color: 'rgba(0,0,0,0.16)', offsetX: 0, offsetY: 6 }) .backgroundColor(this.surfaceFallbackColor()) .systemMaterial(this.immersiveMaterial!) .onClick(() => { this.onSelect(3); }) .accessibilityGroup(true) .accessibilityText('Profile') } .width('100%') .padding({ left: 20, right: 20 }) .margin({ bottom: this.systemInsetVp() + 8 }) // 底部安全区留白 .backgroundColor(Color.Transparent) .hitTestBehavior(HitTestMode.Transparent) } }结构说明(避免"组件不普通"的误判):全程仅使用 Stack/Row/Column/Text/SymbolGlyph + 通用属性(width/height/borderRadius/clip/shadow/backgroundColor/onClick/accessibility);唯一与系统的耦合点 = 表面的 .backgroundColor(Color.Transparent) 与 .systemMaterial(...);两个表面共享一个 uiMaterial.ImmersiveMaterial 实例(aboutToAppear 中创建)。总结:就是我在修复一个问题终于修复成功的时候然后突然发现主界面底部胶囊退化,让我非常摸不着头脑,我修改别的东西为什么会影响到底部胶囊。想来想去,唯一怀疑的线索也只有昨天下午进行的一次系统更新。

评论36

浏览 1.5k

发布于2026-08-30 02:06
半本前瞻
|
技术支持
点赞2
回复于2026-08-31 01:24
NFC做门禁或公交卡模拟,应用在前台优先拦截标签,如何区分读标签、写标签和HCE支付路由,处理系统弹窗优先级、AID路由冲突以及安全芯片存储密钥的调用边界?

评论4

浏览 36

发布于2小时前
面对华为应用市场的综合竞争力排序,除了基础的关键词覆盖,大家在实际运营中是如何平衡‘CPD付费推广’与‘自然下载量/留存率’的?有没有提升自然排名权重的实战技巧?

评论5

浏览 28

发布于3小时前
“在华为应用市场的算法排序中,当‘应用名/介绍等自然优化(ASO)’与‘CPD推广出价’发生竞争时,系统是如何权衡这两者的权重比例的?高出价能否在短期内弥补自然下载量的不足?

评论1

浏览 15

发布于3小时前
AI助手
|
推荐答复
AI 生成内容,仅供参考
华为应用市场的搜索与推荐排序由算法自动化完成,不做人工干预,官方并未公开 ASO 自然因素与 CPD 出价之间的具体权重比例。但可以明确的是,影响排序的因素除分类外主要包括:下载量、应用名、应用介绍关键词、有无 CPD 推广出价等,系统依据应用的"综合竞争力"进行动态排序,而综合竞争力需要开发者通过投放与运营自行摸索,不存在一个固定的、可套用的权重公式。两者的权衡机制从官方公开的竞价规则来看,CPD 推广的排序遵循以下公式:ECPM = pCTR × CPD出价 × 1000其中 CPD 出价是开发者在创建任务时设定的价格,而 pCTR 由平台推荐算法基于大数据特征计算得出,与应用的质量、受欢迎程度(下载量、留存、评分、用户行为等)密切相关。也就是说,出价和应用质量共同决定了系统给应用的投放展示量,二者是相乘关系而非简单叠加:出价越高,获得展现的机会越大,但官方明确说明"这不是唯一决定的因素";应用受欢迎程度越高(下载量、口碑、转化能力越强),pCTR 越高,同等出价下能赢得更多展现机会。这实际上回答了权重权衡的本质:系统不会因为出价高就无条件压制自然表现优秀的应用,也不会因为 ASO 做得好就让付费应用完全失去竞争机会,而是通过综合竞争力评估让两者在同一框架下竞争。高出价能否短期弥补自然下载量不足可以在一定程度上弥补,但存在明显天花板。高出价能够快速换取更多曝光和下载机会,适合新应用冷启动或冲刺核心关键词排名的短期场景。但需要注意以下几点:pCTR 短板会稀释出价优势:如果应用的自然下载量、点击转化率、留存表现较弱,pCTR 偏低,即使出价翻倍,ECPM 的提升也有限,且获客成本会显著上升;排名是动态波动的:官方 FAQ 明确说明,搜索排名实时波动,且设备上已安装或近期卸载过该应用时排名会后移,实际排名需以后台搜索结果为准;付费下载的信号会反哺自然排序:CPD 带来的新用户下载量会计入应用的下载量数据(仅推广位上的新用户下载计费,更新下载不计),因此短期内确实能改善自然排序的基础信号,但这需要持续投放维持,一旦停止且留存不佳,排名容易回落。实践建议比较稳妥的策略是"ASO 打底、CPD 放大":先通过应用名、一句话简介、应用介绍等元数据优化提升关键词覆盖和落地页转化率,降低 CPD 的单次获客成本;再利用 CPD 搜索计划(最多支持 200 个关键词,支持精准匹配与广泛匹配)测试新词的点击率和下载转化效果,将测出的高转化词反哺到 ASO 文案优化中,形成正向循环。同时注意审核规范,严禁在标题中堆砌关键词,否则可能被驳回。补充一点:鸿蒙原生应用包与兼容安卓的 APK 包在华为应用市场分属两套独立的流量池,做 ASO 与 CPD 协同投放时需确认自己优化的是哪个流量池,避免数据判断失真。
点赞
回复于2小时前
用 HdsTabs 做底部 Tab,默认看起来像有"包边"。示例代码如下所示:HdsTabs({ index: this.currentTabIndex, controller: this.tabsController }) { TabContent() { } .tabBar(this.TabTextBuilder(this.tabTitles[0], 0)) // …… } .barFloatingStyle({ barWidth: { smallWidth: 280, mediumWidth: 300, largeWidth: 320 }, barBottomMargin: 8, gradientMask: { maskColor: Color.Transparent }, lightColor: Color.Transparent, systemMaterialEffect: { materialType: hdsMaterial.MaterialType.IMMERSIVE, materialLevel: hdsMaterial.MaterialLevel.EXQUISITE } }) .barPosition(BarPosition.End) .barOverlap(true) .barBackgroundColor(Color.Transparent) .barBackgroundBlurStyle(BlurStyle.NONE) .divider({ mode: DividerMode.NONE })最终的效果是:期望的效果是,无边框线的:

评论44

浏览 691

发布于2026-09-25 09:17
云上
|
采纳答复
这个问题的根因楼上老师们已经定位了:那圈"包边"是 systemMaterialEffect 沉浸光感材质(IMMERSIVE)自带的边缘高光,和毛玻璃是捆绑效果,三档 materialLevel 只是强度差异。我补充一个还没有人提到的中间路线——用低层 API 自己叠材质,把"系统毛玻璃质感"和"边缘光感"真正解耦:思路:背景模糊用 windowBlur / backgroundEffect,而不是 barBackgroundBlurStylebarBackgroundBlurStyle 的 COMPONENT_THIN 档观感确实比系统材质弱一截(楼主实测也证实了)。想要更接近 EXQUISITE 的磨砂质感,可以试 backgroundEffect,它提供可调参数,能逼近系统材质的观感:.barBackgroundColor(Color.Transparent) .backgroundEffect({ radius: 40, // 模糊半径,调到接近 EXQUISITE 的雾面感 saturation: 1.2, // 饱和度略提,模拟系统材质的通透感 brightness: 1.05, // 轻微提亮 colorOptions: [{ color: '#80FFFFFF', cornerRadius: 28 }] // 白色薄纱 + 圆角 })这个路径出来的效果介于 COMPONENT_THIN 和系统材质之间,且不会带边缘描边,多数设计稿能对上。如果必须要系统材质:换 MaterialType 而不是降档补一个实测细节:MaterialType.IMMERSIVE(沉浸光感)是"毛玻璃+边缘光"捆绑的来源,但 hdsMaterial 里还有其他 materialType(如标准材质),不同 type 的边缘表现不一样。可以试把 materialType 换掉、materialLevel 保持 EXQUISITE,部分 type 下毛玻璃质感保留而边缘高光明显减弱,这比无脑降到 SMOOTH 更接近"只要毛玻璃"的目标。具体各 type 的视觉差异建议在真机上对照 Demo 各跑一遍(模拟器的材质渲染和真机偏差较大)。最后说下取舍楼主自己实测的结论(两者不可兼得)在"只用 systemMaterialEffect 预设"的前提下成立;但走 backgroundEffect 自绘这条路,毛玻璃 + 无边框是可以同时拿到的,只是放弃了系统材质的动态光影(点光源、按压流光)。如果产品要求的是"静态毛玻璃无包边",自绘完全够用;如果要求系统级动态光影,那只能接受边缘光或等官方提供解耦参数,可以顺手在 DevEco Studio 的 Send Feedback 里提个需求。x
点赞13
回复于2026-09-30 07:46
Lite Wearable轻智能手表NDK打包能力和调测能力什么时候上?

评论2

浏览 16

发布于3小时前
业务页面有地图、视频和自定义图表组件。有的时候加载第三方的h5还会提示被高德地图sdk拦截。使用 v-if 切换时需要重新初始化组件,使用 v-show 又担心隐藏组件仍然占用较多资源。ASCF 运行时中,隐藏组件与销毁组件在资源释放方面有哪些区别?是否有适合复杂页面的组件缓存策略?

评论3

浏览 33

发布于4小时前
环境:HarmonyOS Next 7.0,UA:OpenHarmony 7.0 / ArkWeb 问题:在华为自带浏览器打开外网 HTTPS 罗盘页面,拿不到磁力计,deviceorientationabsolute 事件不触发,AbsoluteOrientationSensor 无法获取绝对方位(真北)。 检索到相近帖子:webview 监听 deviceorientationabsolute 事件无效,但该帖仅讨论应用内自建 ArkWeb;本问题针对系统自带浏览器,普通网页没有权限拿到地磁磁力计,只能拿到相对姿态。 自建 ArkWeb App 就算声明加速度、陀螺仪权限,同样没有磁力计对外暴露给网页;目前想要真北只能原生订阅地磁,通过 JSBridge 推送角度到 H5。 复现页面:https://pp.tongxiansheng.com/sensor.html 已提交工单:D652189 诉求: 1. ArkWeb 网页层开放 magnetometer,支持标准 Web AbsoluteOrientationSensor; 2. 让普通网页在华为浏览器内可以实现和 iOS Safari 一致的 H5 罗盘,获取真北方位角。

评论5

浏览 32

发布于4小时前
鸿蒙如何为单个bundle内不同ability窗口创建多个任务栏图标

评论22

浏览 275

发布于2026-10-17 15:56
星桥似海
|
推荐答复
区分两个概念:鸿蒙 PC/2in1 上"任务栏图标"其实指两件事,楼上不少回答把它们混在一起说了,先厘清边界再给方案才不会用错。1. 任务视图(最近任务/多任务界面)里的卡片:每个 UIAbility 实例对应一张 mission 卡片,卡片的图标和标题取自该 Ability 在 module.json5 里的 icon / label。2. 屏幕底部的快捷栏(Quick Bar,俗称 Dock):那是 Desktop Extension Kit 的 quickBarManager 管理的,跟 mission 列表是两回事。楼上 13 楼说"把 Ability 分开,系统就自动注册成独立任务、在任务栏并排显示",这句话对任务视图成立,但不等于底部快捷栏会出现独立图标——多个 UIAbility 在快捷栏里默认仍归并到同一个应用入口,要分开必须显式用分组接口。这是最容易踩的坑,先把这个边界讲清楚,下面的方案才不会用错。### 一、想要任务视图里多个独立卡片:多 UIAbility 或 multiton如果目标是"后台多任务界面里每个窗口一张卡、各自图标标题",有两种做法:多个独立 UIAbility:在 module.json5 的 abilities 里声明多个 Ability,每个配自己的 icon/label。A 拉起 B 时 A 进后台但任务保留,B 是新任务,两者并存。同一个 Ability 开多个窗口:必须显式把 launchType 设为 multiton。singleton(默认)下多次 startAbility 复用同一实例,永远只有一个任务;只有 multiton 每次新建独立实例,各自占一个 mission。{ "module": { "abilities": [ { "name": "DocumentAbility", "srcEntry": "./ets/documentability/DocumentAbility.ets", "icon": "$media:doc_icon", "label": "$string:doc_label", "launchType": "multiton", "exported": true, "skills": [ { "entities": ["entity.system.home"], "actions": ["ohos.want.action.home"] } ] } ] } }注意 excludeFromMissions 只能系统应用配置生效,三方应用配了也不隐藏任务,别指望靠它"反向只留一个"。三方想要"只看到一个任务",标准是"一个 UIAbility + 多个页面",而不是藏任务。### 二、想要底部快捷栏(Dock)里按窗口分组显示独立图标:quickBarManager这才是楼主"不同窗口各自图标"最可能的真实诉求,且必须用 Desktop Extension Kit(API 23 / HarmonyOS 6.1.0 起,2in1 设备)。核心是"建分组 → 把窗口绑进分组 → 设分组图标"三步,且窗口必须先创建好才能绑定(通常在 onWindowStageCreate 拿到 windowStage 之后执行)。import { window } from '@kit.ArkUI'; import { quickBarManager } from '@kit.DeskTopExtensionKit'; import { image } from '@kit.ImageKit'; import { resourceManager } from '@kit.LocalizationKit'; import { common } from '@kit.AbilityKit'; async function setupQuickBar(ctx: common.UIAbilityContext, windowStage: window.WindowStage) { // 1. 先确认设备支持快捷栏 const supported: boolean = await quickBarManager.isQuickBarCapabilitySupported(ctx); if (!supported) { console.warn('当前设备不支持快捷栏分组'); return; } // 2. 避免重复建组报错(错误码 1020210005),先查已有分组 const groups = await quickBarManager.getQuickBarGroups(ctx); if (!groups.some(g => g.groupKey === 'editor_group')) { const rm: resourceManager.ResourceManager = ctx.resourceManager; const raw = rm.getRawFileContentSync('quickbar_editor.png'); const src = image.createImageSource(raw.buffer); const icon = await src.createPixelMap(); await quickBarManager.addQuickBarGroup(ctx, { groupKey: 'editor_group', groupIcon: icon }); } // 3. 绑定窗口:getWindowProperties().id 是 number,setWindowToGroup 要 string const mainWindow = windowStage.getMainWindowSync(); const winId = String(mainWindow.getWindowProperties().id); await quickBarManager.setWindowToGroup(ctx, winId, 'editor_group'); }两个易错点楼上提到过但要再强调:windowId 必须转成字符串(数字传进去会报 1020210006 / 1020210007);重复 addQuickBarGroup 同 groupKey 报 1020210005,先 getQuickBarGroups() 查一下。另外别用 addQuickTask()——那是加图标右键菜单项,不是分组图标,用途完全不同。### 三、组合建议只想要多窗口各自任务卡片 → 方案一无分组接口也能满足;想要底部 Dock 按窗口分独立图标 → 必须方案二 quickBarManager,且不同 Ability/window 用不同 groupKey + 不同图标;想要"同一类窗口多开且 Dock 各自图标" → 多实例(app.json5 的 multiAppMode,注意写在 app.json5 不是 module.json5,且限 2in1)配合快捷栏分组。最后,无论哪种方案,最终在目标设备上的具体排布(常驻还是折叠)由系统 UI 决定,拿到真机/2in1 上验证为准,不要仅凭"配了不同 icon 资源"就假设一定生效。
点赞1
回复于2026-10-19 09:09
项目原本通过 nextTick() 等待数据更新后,再通过节点查询获取元素尺寸。转换为 ASCF 元服务后,偶尔出现 nextTick 已执行,但获取到的节点高度仍然是旧值。想了解 Vue 更新队列与 ASCF 视图层实际布局完成之间是否存在异步差异,应该通过什么机制可靠获取最新布局尺寸?

评论3

浏览 31

发布于4小时前
适配API26过程中 将 compatibleSdkVersion升级到26.0.0 打包指定设备发布 "products": [ { "name": "default", "signingConfig": "specificDeviceRelease", "runtimeOS": "HarmonyOS", "buildOption": { "strictMode": { "caseSensitiveCheck": true, "useNormalizedOHMUrl": true } }, "compileSdkVersion": "26.0.0", "compatibleSdkVersion": "26.0.0", "targetSdkVersion": "26.0.0", } ],通过蒲公英第三方内测分发发布后 测试人员安装最新版报错 10006将compatibleSdkVersion改回6.1.1(24) 后恢复 可正常安装 "compatibleSdkVersion": "6.1.1(24)",是啥问题?加了新配置还是啥?别说手机系统的问题 手机肯定最新版 鸿蒙7 API26.0.0 debug安装也没问题。

评论8

浏览 52

发布于4小时前
ArkTS 禁用 any 后,老项目迁移如何保留动态协议的灵活性?

评论8

浏览 47

发布于5小时前
这个状态栏和小白条,怎么沉浸啊?我用了Hds+Padding(因为Hds自行处理不好沉浸,和状态栏重叠),但是滑动页面,在没有开始滚动时(图2),已经比平常页面不可以滚动时的位置不对了(图1),上(图3)下(图4)也都会出现安全区。请问各位大佬,怎么做到像应用市场那样的上下都沉浸,使内容可以延伸到状态栏和导航栏,模糊效果是Hds自带的。

评论18

浏览 466

发布于2026-09-26 14:51

我要提问题

月度答复贡献榜
用户头像
橙动创意
回帖1.1k
粉丝64
关注
用户头像
Z
回帖654
粉丝13
关注
用户头像
蓝瘦的蜕变
回帖544
粉丝134
关注
用户头像
心系天下
回帖518
粉丝21
关注
用户头像
飞b6
回帖449
粉丝16
关注
邀您回答
热门标签
1

HarmonyOS 5

2

HarmonyOS 6

3

DevEco Studio

4

UI

5

HarmonyOS

6

ArkUI (方舟UI框架)

7

HarmonyOS 7

8

App开发

9

Ability框架

了解社区公约,与您携手共创和谐专业的开发者社区。
在 App 中查看