<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>KRN — 笔记</title>
    <link>https://xiewr.pages.dev/tags/krn/</link>
    <description>Obsidian 仓库同步发布的静态博客</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Wed, 29 Jul 2026 00:55:46 +0800</lastBuildDate>
    <atom:link href="https://xiewr.pages.dev/tags/krn/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>快手 KRN 鸿蒙适配与性能优化：从大规模迁移到接近原生体验</title>
      <link>https://xiewr.pages.dev/%E6%8A%80%E6%9C%AF%E7%AC%94%E8%AE%B0/rn-%E5%BD%92%E7%BA%B3/%E5%BF%AB%E6%89%8B-krn-%E9%B8%BF%E8%92%99%E9%80%82%E9%85%8D%E4%B8%8E%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/%E5%BF%AB%E6%89%8B-krn-%E9%B8%BF%E8%92%99%E9%80%82%E9%85%8D%E4%B8%8E%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96---%E6%8A%80%E6%9C%AF%E5%A4%8D%E7%9B%98/</link>
      <pubDate>Wed, 29 Jul 2026 00:55:46 +0800</pubDate>
      <guid>https://xiewr.pages.dev/%E6%8A%80%E6%9C%AF%E7%AC%94%E8%AE%B0/rn-%E5%BD%92%E7%BA%B3/%E5%BF%AB%E6%89%8B-krn-%E9%B8%BF%E8%92%99%E9%80%82%E9%85%8D%E4%B8%8E%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/%E5%BF%AB%E6%89%8B-krn-%E9%B8%BF%E8%92%99%E9%80%82%E9%85%8D%E4%B8%8E%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96---%E6%8A%80%E6%9C%AF%E5%A4%8D%E7%9B%98/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;来源说明&lt;/strong&gt;：本文根据快手动态化内核负责人张鹏的 CSDN 技术直播整理。内容不是逐字照录，而是在完整转写基础上重组技术主线、修正明显的语音识别错误。文中性能数字均来自直播分享，形如 &lt;code&gt;[00:45:39]&lt;/code&gt; 的标记对应原视频时间点。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;核心结论&#34;&gt;核心结论&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;迁移的首要目标是控制变量&lt;/strong&gt;：保持上层业务接口稳定，把平台差异收敛到底层，才能让 2,000 多个业务 Bundle 平稳迁移。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;性能问题来自架构边界，而不只是单点耗时&lt;/strong&gt;：RN 的命令式更新与 ArkUI 的声明式渲染叠加后，会产生重复 Diff、冗余节点和中间状态。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;渐进式迁移比一次性重写更可控&lt;/strong&gt;：核心渲染管线迁到 C++，高频组件优先采用 ArkUI C API，低频组件保留原实现，并通过开关灰度和回退。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;性能治理必须形成完整闭环&lt;/strong&gt;：先拆分启动与上屏阶段，再结合并行初始化、Snapshot、预请求、内存治理、监控定位和同步渲染逐层优化。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;一次迁移真正困难的不是让代码跑起来&#34;&gt;一次迁移，真正困难的不是“让代码跑起来”&lt;/h2&gt;
&lt;p&gt;把一套 React Native 框架迁移到鸿蒙，如果只看技术名词，似乎无非是补齐平台接口、重写 UI 层、接入新的线程和事件机制。但快手 KRN 面对的并不是一个刚起步的框架，而是一套已经运行多年、承载海量业务的生产系统。&lt;/p&gt;
&lt;p&gt;KRN 大约从 2020 年开始建设，基于 React Native 0.62 深度定制。它不仅提供 RN 内核，还补齐了容器与生命周期、Bundle 发布更新、API 与 Bridge、调试工具、数据采集和运营等完整的平台能力。[00:06:46]&lt;/p&gt;
&lt;p&gt;直播披露的规模很能说明问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;承载 2,000 多个业务 Bundle，页面数远高于 Bundle 数；&lt;/li&gt;
&lt;li&gt;覆盖直播、电商、本地生活、消费、社交、IM 长列表等场景；&lt;/li&gt;
&lt;li&gt;平台有 200 多个自研功能模块、2,400 多项 API 与 Bridge；&lt;/li&gt;
&lt;li&gt;KRN 内核相对官方 RN 累积了接近 2 万次修改。[00:08:11]&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这组数字带来了两个硬约束：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;上层业务接口和行为必须尽量稳定，一点变化都可能影响 2,000 多个 Bundle。&lt;/li&gt;
&lt;li&gt;内核和平台层的变化必须能独立验证、灰度替换和安全回退，不能要求所有业务一起回归。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;因此，KRN 鸿蒙适配的核心命题不是“能否迁移”，而是：&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
