HarmonyOS 7.0(26) Release 特性深读:新增能力与全应用变更的真实表现与落地细节

先交代一下版本坐标系:HarmonyOS 7.0(26.0.0,API 26)从 Beta1 到 Release 一共分了三批特性。Beta1、Beta2 批次的新增能力——AgentCard、星盾风控、超级隐私策略化、3DGS 编辑、QUIC 传输、闪控窗这些——我已经在《HarmonyOS7更新亮点实录》1~43 篇里逐个实测过了,这里不再重复。本文只谈两块 Release 批次才落地的内容:
- Release 新增和增强特性:9 组模块级增量,包括 appMemoryOptimizer 内存回收、图片内容证真、subframe 错误页、录音降噪模式等;
- 针对所有应用的 6 条变更:这一节比新增特性更重要——它们不是“多了什么”,而是“以前能跑的现在要改”,其中两条还带着明确的生效时间窗口。
最后收一段 DevEco Studio 26.0.0.821(Release 版)的工具链增量,重点讲讲那个支配树定位内存泄漏——坦白说,这可能是本次更新里对大多数开发者最有价值的一件事,虽然它看起来最不起眼。

本次 Release 批次的能力分布如上图。注意右侧那列“全应用变更”——新增特性你可以按需取用,变更却是所有人都要接的,所以我把它放在了和新增特性同等的篇幅上。
老规矩,主线还是那一个:先讲以前的痛点,再讲现在的表现,然后落到 API,最后说边界与避坑。
01 Ability Kit:appMemoryOptimizer,把页缓存的主动权交还应用
「痛点:内存账单里有一笔你查不到、也还不掉的“暗账”」
先说一个很多应用都遇到过、但很少被讲透的现象:应用明明已经把某个大 .so 加载完、用完了,ps 里 RSS 却降不下来;用 HiDebug 一查,大头既不是堆内存也不是 Native 堆,而是文件页缓存(file page cache)。
原理不复杂:dlopen 一个 so、或者 mmap 读一个 HSP 里的资源时,内核会把文件内容映射进页缓存,这些页会计入进程内存占用。问题在于应用对此无能为力——页缓存归内核管,应用既看不见它的明细,也没有任何接口可以主动归还。系统倒会在内存紧张时回收,但那个时机你控制不了:图片编辑器切走大工程后想立刻还、地图应用下线后想立刻还,都做不到,只能干等内核“想起来”。
「现在的表现:两个接口,一条配置文件」
26.0.0 Release 的 Ability Kit 新增了 @ohos.app.ability.appMemoryOptimizer 模块,给了两个接口,从 @kit.AbilityKit 导入:
evictFilePages(fileNames: Array): Promise——请求系统释放指定文件的页缓存,文件名必须以.so、.hap或.hsp结尾;evictModuleFilePages(moduleNames: Array): Promise——请求系统释放指定模块的页缓存。系统会去读该模块src/main/resources/rawfile/memory_optimizer.json配置文件里的evictFilePages数组,按配置的文件清单逐个释放。
第二种方式值得单独说一句:它把“哪些文件可以释放”这件事声明化了。文件清单跟着模块走,调用方只需要报模块名,不用在业务代码里维护一份 so 名单——名单变化不用改调用代码,重新打包即可。
import { appMemoryOptimizer } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
// 方式一:直接指定文件释放页缓存
try {
appMemoryOptimizer.evictFilePages(['libentry.so', 'sharedLibrary.hsp'])
.then(() => {
console.info('EvictFilePages success.');
})
.catch((err: BusinessError) => {
console.error(`EvictFilePages failed, code: ${err.code}, msg: ${err.message}.`);
});
} catch (error) {
console.error('EvictFilePages failed: ' + JSON.stringify(error));
}
模块级释放则先在 entry 模块的 src/main/resources/rawfile/memory_optimizer.json 里声明:
{
"evictFilePages": [
"libentry.so",
"sharedLibrary.hsp"
]
}
然后调用 appMemoryOptimizer.evictModuleFilePages(['entry']) 即可。

调用链如上图:业务层报文件或模块 → 系统根据当前内存水位决定是否真正执行 → 结果以 Promise 回来。注意中间那层“系统判断”,这是这个 API 最容易被误解的地方。
「边界与避坑」
- 释放不保证成功。官方文档明确写了:系统根据当前内存状态决定是否实际执行释放,成功与否不承诺。所以你不能把“调用成功”当成“内存已下降”——真机上验证请用 HiDebug 或 Profiler 看实际水位,别只看 Promise 是否 resolve。
- 典型时机:应用退后台(配合
onBackground或onMemoryLevel()的MEMORY_LEVEL_LOW)时,把不再使用的 so 页缓存还回去。这和onMemoryLevel()是一对组合拳:监听是“知道该还了”,appMemoryOptimizer是“还的动作”。 - 错误码:文件名不以
.so/.hap/.hsp结尾抛16000163(文件类型错误);配置文件解析失败抛16000164。把用户任意输入的路径直接塞进evictFilePages是没有意义的——它只管这三类安装产物,不是通用的文件缓存清理器。 - 仅支持 Stage 模型,SystemCapability 为
SystemCapability.Ability.AbilityRuntime.Core。
02 Device Security Kit:图片内容证真,给 AI 时代的图片装一个“验钞机”
「痛点:看见的不一定真实」
Sora 式生成内容泛滥之后,“这张图是真的吗”从一个哲学问题变成了工程问题。新闻取证、保险理赔、司法存证、政务材料,这些场景对图片的第一诉求不是“好看”,而是可信——它得能证明自己从拍摄那一刻起没被改过。
「现在的表现:检测、验证、提取三件套」
Release 批次的 Device Security Kit 新增了图片内容证真能力的三个 API,职责划分很清晰:
- 签名检测:检测图片中是否存在内容证真签名——快速判断“这张图有没有带证真信息”,适合先过滤再走后续流程;
- 验证:验证图片中的内容证真签名——校验签名是否成立,即图片内容是否自拍摄后被篡改;
- 签名信息提取:支持从验签数据中提取签名信息——拿到签名里的具体内容(拍摄设备、时间等元数据),供业务进一步研判。
这套三段式的价值在于流程解耦:先用廉价的“检测”筛掉大部分无签名图片,只对通过检测的图片做昂贵的“验证”,最后对验证通过的才做信息提取。三个 API 均提供 ArkTS 参考,具体的函数签名以 26.0.0 SDK 的 d.ts 为准,我不在此杜撰。
「边界与避坑」
- 证真签名依赖拍摄端就打了标——设备在拍摄时写入签名,验证端才有东西可验。如果图片来源本身没打标(比如大量历史图片、第三方来源图片),检测结果就是“无签名”,这不是失败,而是能力边界。
- 和《更新亮点实录》17~19 篇讲过的星盾风控、超级隐私策略化放在一起看,Device Security Kit 在 7.0 的主线非常清楚:从“防别人偷看”走向“证明内容可信”,这是安全 Kit 从防御性向证明性的跨步。
03 ArkWeb:subframe 错误页与隐私 Cookie,补齐上次没补完的那半张网
《更新亮点实录》第 9 篇讲过 ArkWeb 的 Chromium 144 内核升级与安全沙箱。Release 批次又追了两组增量,都是“上一批的续集”。
「subframe 错误页:主框架有了,iframe 也要有」
上一批给了 setErrorPageEnabled,启用的是 mainframe(主框架)错误页——加载失败时展示系统错误页而不是白屏。但真实网页里大量内容跑在 subframe(子框架/iframe)里:主框架加载成功,iframe 里的广告位、嵌入内容失败,页面照样出现一块块的空白或破图,用户体验依然割裂。
Release 批次给 setErrorPageEnabled 新增了一个同名接口,用于同时启用 subframe 错误页,并配套提供 subframe 错误页启用状态的查询能力。表现上的差别很直接:开启后,iframe 加载失败也会渲染统一的错误页占位,而不是留一块“视觉黑洞”。
「隐私 Cookie:Cookie 管理要跟上浏览器自身的隐私模型」
fetchCookieSync 和 fetchCookie 均新增同名重载,两件事:
- 支持隐私模式下的 Cookie 获取——隐私模式(无痕浏览)的 Cookie 与常规模式是隔离存储的,以前拿不到;
- 支持第一方 partitioned cookies——这是随 Chromium 内核引入的分区 Cookie(CHIPS)体系,第三方上下文中的 Cookie 按 top-level site 分区存储,传统方式取到的和实际生效的可能不是同一份。
同时新增 C API,支持同步和异步两种方式获取指定 URL 的 cookies,Native 侧的网络栈不用再绕道 ArkTS 桥接。
「避坑」
- Cookie 管理接口的“模式对齐”是这类改造最容易翻车的地方:业务里如果同时处理常规模式与隐私模式,一定要确认调用的重载与当前 Web 组件的模式一致,否则会拿到“看起来正常、实际是另一套存储”的 Cookie,这类 bug 的表象是“偶尔登不上”,根因极难排查。
- partitioned Cookie 依赖站点自身的
Partitioned属性声明,你的接口能读到的是“实际生效的那份”,不等于“你以为的全量那份”。
04 ArkUI:材质分级、窗口姿态与一批 C API
Release 批次的 ArkUI 增量偏“系统能力下沉”,五个点里我挑三个有实际业务影子的讲。
「材质等级枚举:沉浸光感终于要“看设备算力下菜”了」
Beta1 引入 systemMaterial 通用属性、沉浸光感体系时(实录第 7 篇),一个隐含的风险就是:实时材质渲染(毛玻璃、动态采样)在中低端设备上的性能开销不可控。Release 批次新增材质等级枚举,表示设备的算力等级,并配套提供获取全局材质等级、判断当前设备是否支持沉浸式系统材质 ImmersiveMaterial 的接口。
这对开发者的意义是:材质体验终于可以分级降级了——高算力设备上全量开启沉浸光感,低算力设备上退回纯色背景,而不是“要么全开、要么全关”。建议所有接入 systemMaterial 的应用在入口处做一次设备等级判定并缓存结果,别在每帧里反复查询。
「窗口姿态模式:PC/2in1 上的桌面模式可以感知了」
窗口管理新增查询接口,支持判断当前窗口是否处于指定的窗口姿态模式(当前支持识别桌面模式),并提供姿态改变的事件监听。在 PC/2in1 与手机的多形态流转场景里,应用终于可以在“窗口被拖进桌面模式”这一刻收到事件、切换布局,而不是靠窗口尺寸变化去猜。
「一批 C API 的共同信号」
- 动画接口新增 C API,支持创建无转场效果的动效;
- 窗口管理新增 C API,获取指定窗口注册的多模按键 / 鼠标 / 触摸事件过滤函数;
- 窗口管理新增 C API,支持设置主窗退至后台时是否自动启动画中画。
三个都是 C API。把这三条和 Beta 批次的闪控窗 C API、组件动态属性 C API 放在一起看,信号很明显:ArkUI 的系统能力正在系统性补齐 C API 面,游戏引擎、跨平台框架、Taihe 生态的应用可以不经过 ArkTS 直接对接窗口与动画体系。
「避坑」
沉浸光感在 Beta 批次的全量生效假设,被 Release 批次的变更正式收紧了——这条放在第 06 节“全应用变更”里详说,因为它属于“你写的代码会静默失效”级别的问题。
05 ArkTS:容器对象跨线程拷贝传递,与录音降噪、3D 元数据
「容器类对象跨线程:@Sendable 体系的又一块拼图」
ArkTS 新增支持容器类对象跨线程时通过拷贝(序列化)形式进行传递。在《更新亮点实录》第 29 篇里我们聊过跨线程通信的取舍:共享内存快但要遵守 @Sendable 约束,序列化传递自由但有成本。这次补的是容器类对象(collection 库那些 Map/Set/Array 类型)的序列化通道——以前要么手工拆成普通对象再传,要么放弃容器类型改用普通对象。现在可以整对象过去,接收侧拿到的是一份拷贝。
注意“拷贝”两个字的代价:大容器的序列化开销不可忽视,高频跨线程传递大 Map 的设计依然要三思。这条能力解决的是低频、大对象、结构复杂的场景,不是把跨线程通信变成随便传。
「Audio Kit:录音降噪模式可配置」
新增 API 支持设置和获取当前录音流的降噪模式,ArkTS 与 C API 双侧提供。对会议、语音输入类应用是实打实的能力:录音场景(键盘声、风噪、人声)不同,最优降噪策略不同,以前只能吃系统默认,现在可以按场景显式切换,也能读回当前模式做 UI 呈现。
「ArkGraphics 2D:OHNativeWindow 的 3D 元数据」
新增 C API 支持为 OHNativeWindow设置 3D 元数据属性值,同时提供获取接口。这是给 Native 渲染层(游戏引擎、3D 框架)用的:3D 元数据描述立体显示相关的窗口属性,配合 3D 显示硬件做立体呈现时不再需要各自的私有协议。和 Beta 批次 XEngine 的控显分离、空域 AI 超分 Vulkan 化放在一起,7.0 在 3D/游戏渲染管线上的投入是一整条线。
「Performance Analysis Kit 与打包工具:两条工程化增量」
- JS Crash 检测新增
NativeModuleErrorInfo,可记录最早的 20 条 so 加载失败信息。JS Crash 挂掉时,如果根因是某个 so 加载失败(签名不匹配、ABI 缺失、依赖缺失),现在崩溃日志里能直接看到加载失败记录,不用再靠猜。 - 打包工具新增支持扫描重复 so 文件。多 HAP/HSP 工程里同一个 so 被多个模块各自携带导致包体翻倍,是 HAR 拆分后的经典事故。现在打包阶段就能识别重复项——这条和 DevEco 的
deduplicateSo(第 07 节)是一对:先扫描发现,再构建去除。
06 针对所有应用的 6 条变更:这次真正的适配压力所在
新增特性可以不用,变更躲不掉。Release Notes 里这 6 条,我按“适配紧迫度”从高到低排。
「变更一:默认浏览器权限——有明确时间窗口的一条」
- 变更前:只要声明支持打开 HTTP 协议,应用就能进默认浏览器备选列表、可被设为默认浏览器。
- 变更后:必须申请
ohos.permission.DEFAULT_WEB_BROWSER权限,才能出现在备选列表、才能被设置为默认浏览器。 - 关键时间点:官方明确说明,该权限管控将于 HarmonyOS 下一个正式发布版本生效。也就是说现在还在过渡期,但窗口是有限且明确的——浏览器类应用现在就应该按受限开放权限流程提交申请(需要通过安全、隐私、用户体验三项审核),等管控生效再动手就晚了。
这条的适配成本本身不高,但申请审核的周期才是变量。权限类事项永远是“越早启动越从容”。
「变更二:Agent Framework 的 OnDataCallback——Beta 期间写的代码要改」
如果你在 26.0.0 Beta 上接入了智能体扩展(Agent Framework Kit),Release 有一处接口翻脸:
OnDataCallback的method参数类型由AgentOperation枚举变更为 string;AgentOperation枚举类删除;RequestContext.getClientSessionId()方法删除;ClearContext请求不再单独处理,按未知 method 走默认流程。
适配是纯机械操作,但映射关系要记准:AgentOperation.EXECUTE → 'Execute'、AgentOperation.CANCEL → 'Cancel'、AgentOperation.PERCEPTION_SUGGEST → 'PerceptionSuggest',CLEAR_CONTEXT 分支删除或挪进 default。这次改动也再次验证了一个规律:Beta 期接口是允许推翻重来的,别把 Beta 上调通的代码当成“已经稳定”。
「变更三:Image 的 autoResize——5000 万像素是条新红线」
- 变更前:不设置
autoResize时默认false,按原图尺寸解码。 - 变更后:不设置时,如果图片解码后宽 × 高像素乘积超过 5000 万,
autoResize默认为true,按显示区域降采样解码。
这条的触发条件只有一个:像素尺寸。和文件大小、图片格式无关。一张 8500×6000 的航拍图(5100 万像素)就会命中。对绝大多数应用这是纯利好——大图解码内存压力直接减半还多;但有两类应用要专门处理:修图类(需要原图细节做局部放大、裁剪)和看图类(大图查看器)。它们的做法是在加载大图时显式关闭:
Image($r('app.media.large_image'))
.autoResize(false) // 保留原图尺寸解码,代价是内存,收益是细节
一句话总结这条变更的判断逻辑:默认安全,画质敏感场景显式声明。
「变更四:沉浸光感生效范围收紧——又一次“静默失效”」
这是我在《6.1.1 Release 深读》里专门点过的“升级静默失效”规律的又一次应验,只不过这次是官方主动收紧:
- 变更前:支持沉浸光感的所有组件,开启即生效。
- 变更后:只有三类场景继续全区域生效——指定弹窗类组件(AlertDialog、CustomDialog、DatePickerDialog、SelectionMenu、半模态转场等)、指定弹窗类接口(PromptAction、Popup 控制、Tips 控制等),以及 Slider、Toggle、Select 三个控件;其他组件只在 Navigation/NavDestination 标题栏或横向 Tabs 中 barPosition 为
BarPosition.End的底部 TabBar 中生效,放别处设置了也不生效。
Beta 期间把 systemMaterial 设在普通容器(Column/Stack)上的代码,升级后效果会无声消失,不会有任何报错。适配两条路:把组件挪进生效区域;或者用 Stack 堆叠实现的“类弹窗”改造为真弹窗组件(如 CustomDialog 的 systemMaterial)。第二条尤其值得注意——自定义弹窗外壳上的沉浸光感不受保护,只有走弹窗类组件/接口才行。
「变更五:沙箱 appdata 路径的 stat/access 收紧——版本隔离给了你缓冲期」
- 变更前:对
/storage/Users/currentUser/appdata下无权限目录执行stat和access也能成功。 - 变更后:无法成功。涉及 musl 的
stat/fstat/fstat64/fstatat、access/faccessat等 C 接口。 - 缓冲机制:这条做了版本隔离,仅当应用
targetSdkVersion >= 26.0.0时生效。
排查重点在硬编码路径:访问本应用目录的 /storage/Users/currentUser/appdata/el2/{本应用包名}/files/ 应改用沙箱路径 /data/storage/el2/base/files/;访问其他应用目录的,先确认对方是否已授权,未授权要先走授权流程。Native 代码里这些 musl 调用很可能是历史遗留的探测逻辑(判断目录是否存在再决定行为),改起来不难,难的是在长尾代码里把它们全找出来。
「变更六:错误码 string → number——一次迟到但必要的类型规范化」
Localization Kit 与 MDM Kit(企业设备管理服务)的新增接口,错误码类型从 string 变更为 number。涉及面不小:i18n 侧有 i18n.ChineseCalendar.setChineseCalendarTime、i18n.Unicode.detectEncoding、i18n.SymbolDateTimeFormat 全家族、i18n.SymbolNumberFormat 全家族等 18 个接口;MDM 侧有 adminManager.enableSelfDeviceAdmin、bundleManager.installForResult、deviceControl.operateDevice、telephonyManager.activeSim 等 18 个接口。
两条适应注意:
- 只有 26.0.0 起的新增接口是 number,此前版本接口仍是 string——同一个 Kit 里新旧接口错误码类型不一致,业务里做错误码判断时不能共用一个工具函数;
- MDM 的适配示例给得很直接:判断必须用
err.code === 9200001这种 number 比较,如果现有代码里是字符串比较,会在新接口上静默不命中。

六条变更的适配压力与时间窗口如上图:默认浏览器权限有外部审核周期、沉浸光感和 OnDataCallback 是静默失效型、autoResize 默认安全。我建议的推进顺序是:先排权限申请(周期最长)→ 再排 Beta 代码回归(沉浸光感 + Agent Framework)→ 最后处理类型与路径问题。
07 DevEco Studio 26.0.0.821:支配树,把内存泄漏的“最后一步”补上了
DevEco 这次 Release 版的增量里,我只想浓墨重彩讲一件事:ArkTS Snapshot 泳道新增一键获取节点支配树(Dominator Tree)。
「为什么支配树是内存泄漏分析的最后一块拼图」
传统的内存泄漏分析流程是:拍快照 → 找可疑对象 → 查最短引用路径(shortest paths)→ 逐个分析路径上的引用者。这个流程有个根本缺陷:一个对象可能同时被十条路径引用,你顺着最短路径把 A 的引用断开,对象还在——因为 B、C、D 也抓着它。开发者需要在多条路径之间反复试错,这个过程既耗时又容易误判。
支配树换个角度回答问题:谁是支配者(Dominator)——如果释放某个对象 X,必然连带释放对象 Y,那 X 就是 Y 的支配者。快照工具把从 GC Roots 到目标实例的支配链展示出来,你看到的不再是“所有引用它的路径”,而是“断开谁就一定能放掉它”。这是把 GC 可达性分析的成熟成果(JProfiler、MAT 早就这么干了)搬到了 ArkTS 生态,对排查泄漏来说,是从“侦探破案”到“按图索骥”的效率跃迁。
配套的增量还有一组,都属于“用起来才知道香”的:
- Snapshot 的 shortest Paths 支持查看混淆前的源码路径并可跳转至工程代码位置——Release 混淆后分析泄漏,以前满屏
a.b.c无从下手; - Statistics 区域支持按聚类规则展示构造器或对象、通过对象 id 精确定位;
.jsleaklist与.rawheap文件互相自动匹配导入——泄漏清单和快照不用再手工对版本;- Allocation 模板新增 Native Leaks 泳道,Native 侧的泄漏点也有一站式标记了。
「构建与工程化的几条」
- 工程级
build-profile.json5的packOptions下新增deduplicateSo字段:构建 APP 时去除 HAP/HSP 中的重复 so,与第 05 节的打包扫描形成“发现 → 去除”闭环; - 支持多 HAR 合并打包:把字节码 HAR 及其所有依赖合并成一个无外部依赖的独立 HAR,对外发布 SDK 的场景终于不用手工理依赖了;
- 多目标构建支持按 target / product / buildMode 维度个性化配置依赖;
- 新增 arktsdoc 命令行工具,从代码文件生成参考文档——SDK/组件库团队写 API 文档可以自动化了。
「模拟器与调试」
模拟器一口气补了外接 USB 摄像头、虚拟相机、断网模拟、位置模拟、命令行 UI 操作(获取布局/点击/滑动/输入)、穿戴表冠滚轮模拟;数据库调试支持多 SQL 执行;支持解析应用的 coredump 文件;HWASan 检测支持解析伪代码、方法入参与变量值。Native 调试环境在快速向“不用真机也能覆盖大半调试场景”靠拢。
最后是兼容性配套,几个关键数字记录一下:DevEco Studio 26.0.0.821,Hvigor 6.26.4,Node.js 升到 24.14.1,modelVersion26.0.0,compatibleSdkVersion 最低仍为 4.0.0(10),targetSdkVersion 范围 4.0.0(10)~26.0.0——升级 IDE 不强制抬 targetSdkVersion,第 06 节的沙箱变更何时触发,主动权还在你手里。
避坑清单:一条看完就走的 Summary
- appMemoryOptimizer:释放不保证成功,
evictFilePages只收.so/.hap/.hsp,16000163/16000164两个错误码记牢;释放动作建议挂onBackground/MEMORY_LEVEL_LOW。 - 默认浏览器权限:
ohos.permission.DEFAULT_WEB_BROWSER管控下一正式版生效,浏览器类应用立刻启动受限权限申请流程。 - Agent Framework:Beta 代码迁移
method参数为 string('Execute'/'Cancel'/'PerceptionSuggest'),删除getClientSessionId()调用与CLEAR_CONTEXT分支。 - autoResize:5000 万像素默认降采样;修图/看大图场景显式
.autoResize(false)。 - 沉浸光感:普通容器上的设置会静默失效,只在 Navigation/NavDestination 标题栏、底部 TabBar、弹窗类组件与 Slider/Toggle/Select 生效;Stack 假弹窗赶紧改真弹窗。
- 沙箱 stat/access:
targetSdkVersion >= 26.0.0才触发,grep 一遍硬编码的/storage/Users/currentUser/appdata路径。 - 错误码类型:i18n / MDM 的新增接口是 number、旧接口仍是 string,别共用判断逻辑。
- 内存泄漏排查:直接上手支配树,断一个支配者看整链释放,比逐条试最短路径快一个数量级。
总结
把 Release 批次和之前 43 篇实录放在一起看,7.0 的叙事其实有三层:
第一层是能力面。Beta1/Beta2 铺开了智能体框架、星盾安全、3DGS、QUIC 这些大开大合的新故事,Release 批次则在收边角:内存有了主动归还的接口、图片有了可信的凭证、Cookie 有了隐私模型的自觉。单看每一项都不大,合起来是“系统能力从能用到好用”的打磨。
第二层是约束面。6 条全应用变更里,默认浏览器权限是准入制的雏形,沉浸光感收紧是体验规范的成型,错误码类型统一是工程规范的收口。平台做大之后必然要收拢自由度——这次收拢给了缓冲期(权限有过渡窗口、沙箱有版本隔离),但方向不会回头。
第三层是工具面。支配树进 ArkTS Snapshot、Native Leaks 进 Allocation、重复 so 进打包扫描——DevEco 在把“高级性能工程”的门槛往普通开发者这边拉。我的判断是:对大多数团队而言,这条工具线的实际收益会超过任何一条 Kit 新特性——毕竟特性是按需取用的,而性能问题人人都有。
本文由 @轻口味 授权发布于人人都是产品经理。未经作者许可,禁止转载
题图来自Unsplash,基于CC0协议
该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务
- 目前还没评论,等你发挥!

起点课堂会员权益




