登录社区云,与社区用户共同成长
邀请您加入社区
第 62 篇留下的欠账:生僻字覆盖结论基于中山经抽样,要不要内置子集字体待更大范围字表抽样再定。手写 cmap 解析(零依赖)对上 13 个语料数据文件的 4898 个用字,先被一个双引号抽取漏洞骗出「零缺失」假结论,修复后真相反转:正文内置的 NotoSerifSC 缺 94 字(全部扩展 B/C-F 区,含 𤝻),真机出字形靠的是系统字体回退而非内置覆盖。结论是无需内置子集字体,把 94 字
围绕 Navigation 导航栏左右位置治理,梳理布局方向、窗口断点、折叠屏姿态、阅读顺序与可访问性回退,并通过应用侧纯函数策略统一多设备决策。
围绕 Navigation 自适应模式治理,梳理窗口断点、分栏切换、折叠屏姿态、用户偏好与状态恢复边界,并通过应用侧纯函数统一多设备决策。
上一篇的 5 处术语漏网是人工逐组件扫出来的,人工复查抓得到、守不住。本篇把那次一次性复查变成常设网:给「发现系/收录系」立逐文件钉点门禁。判定标准是数据来源——discoveredIds 驱动的归发现,馆藏体量与资料范围的归收录。钉点表登记 11 个文件 26 处,字面量与注释双口径分治,每条出处随行;覆盖层拦新文件混入,禁用形态全树扫描,发现系 6 个落点正向钉点防止回退。写作当日落地,全量门
三刀都来自用户原话:详情页顶部卡片没必要用圆圈圈起来、右上角按钮在 13sp 标题旁像脚注、用户进度的「收录」改「发现」。每刀都很小,但纪律是全套的——构建、门禁、真机三态截图一个不少。真正的收获在写作当日复跑 52 项门禁:5 红、2 伤 3 锈。伤是 App Linking 轮重构 module.json5 时误删了闪控球/闪控窗两条权限声明,运行时代码还在申请 FLOAT_VIEW;锈是按钮
36 只异兽的详情页文案膨胀到 43,473 字,与原文的倍率最高 18.1 倍,「馆藏简介」和「白话解读」的 bigram Jaccard 重合度中位数 17%——同一件事被四个层级反复讲。这篇写怎么把四层文案压到三万三:先立硬约束再动笔(1,800 字下限、必需事实钉点、七类口吻规则),再走 dump→rewrites→scan→apply 的改写流水线,改写器按字段定位、倒序应用编辑。真正的
3D 地图上选中的地块要沿自己的边界浮起,可斜向边界是一条 10px 一格的楼梯。这篇写四轮返工的全过程:先把病因量化(一格投影 10.7px、9.1% 格子跨区界),再用子格细分 k=3 把台阶从 1 格压到 1/3 格——结果只是把一级大台阶换成三级小台阶。真正的病根是第三个:无主格被 BFS 补值给了邻近区域,区域轮廓沿着格子边一路延伸到纸边,糙边出现在离多边形很远的地方。治法是按区域多边形
阅读器里整部《山海经》19 篇 912 段 76,859 字上屏,怎么保证一个字都不错?本篇写公开 57 之后的另一半:57 写「怎么切」,这篇写「怎么验」。核心是一台逐字核对器——经文对标点本逐字相同,注文对四库本做集合比对;差异不硬改底本,而是走修复表加校勘记账:标点本讹「十萬」从注本作「十五」、异体「刏」归一作「刉」,都逐条记账可回溯。人只写译文,entry 字面量、逐句对齐全部从同一份数据
围绕 HarmonyOS 7 API 26 新增的 uiMaterial.MaterialLevel、getGlobalMaterialLevel 与 isImmersiveMaterialSupported,建立材质能力探测、样式映射和不支持时的可读性降级。
围绕 Navigation 菜单项的 stale 数据、刷新重试和一致性校验,建立旧数据可用、请求可取消、状态可解释的应用侧策略模型。
平板 2|1 分栏后左栏 874vp 宽,「已收录」知识卡被拉到全宽,wide_card 底图横向拉伸 4.9 倍、中间纸纹糊成一条。改法不是给平板重新设计一版首页,而是让三张进度卡占左、已收录占右共享一行;宽屏判定不新增断点,直接复用壳层竖排导航的 840vp 阈值——比例标定、壳层形态、内容密度由同一条判定链驱动。核心数字是 262:已收录卡在宽行里固定 262×68,262 ÷ 3.86 ≈
「山海万灵」把平行视界 EasyGo 完整跑了一遍:三处配置让平板分栏生效、SCB force split 接管后 NavigationMode 钉 Stack 不用改;比例标定发现分栏比例会跨过 840vp 阈值决定壳层形态,定稿 2|1;满屏层用 fullScreenPages 声明,判分栏要认 Divider 不是 NavBar 宽度;退化场景大多不分栏是预期。最后因为 isDraggabl
首页要在一张卡里塞下 20 篇、912 段、7.7 万字的收录总账,又不能把三张进度卡挤出首屏,于是有了这张默认收起的手风琴卡。这篇复盘它的三次翻车与修复:纯色横幅换成底图后,收起 46vp、展开 330vp 两种高度把一张 3.86:1 的图拉糊,拆成宽卡加面板卡两张;为了不让展开把下方内容挤下去,负外边距加 zIndex 做浮层,位移实测为 0;结果平板上展开层整块点不动——ArkUI 不命中
对照模式原先整段原文配整段译文,超长段拆页时原文与译文是两条独立切分链,一错就错开一整句。这篇复盘把《轩辕本纪》38 段全部切成可一一对应的句对:原文按句读自动切,译文由锚点驱动切,汇成 413 个「字数对」写进规范源;工具里修掉夹注紧贴句末标点、闭引号归属、译文并句三个真实切点缺陷;最后由生成器与门禁双重断言逐字闭合,把 alignedBlocks 钉死在 413。
改造前,返回键只有一个入口,里面按顺序判七八个布尔量;每加一层浮层就多一个 if,顺序还互相耦合。这篇复盘把古籍目录、篇章、专题、异兽详情、主题弹层、超分查看器、右栏地图全部搬进 NavPathStack:先把「按一次返回会发生什么」写成七级矩阵,再逐条处理栈深不变量、两种 NavDestination 模式、必须传 @Builder 方法引用、提根后 336px 安全区裁剪,以及一次被 Auto
应用内切深色,底部 tab 栏却仍是一整块米白玻璃——根因不是底栏颜色写错,而是系统材质只认窗口色彩模式。这篇复盘把「档位」与「实际深浅」拆成两个状态,再给一次昂贵的 setColorMode 记账:底栏不在屏幕上时不申请、可见时延后到淡入之后、回到 tab 根页补欠账、同一模式不重复申请(哨兵取 -2 而不是 -1),最后用两张常驻底图交叉淡入解决「卡片先变、背景慢半拍」。
底栏的玻璃质感在改造里丢了,第一反应是给手绘栏重新挂上 systemMaterial——结果开关全对、真机日志却写着「Material inactive: out of scope」。这篇复盘完整因果链:四条旁证如何指向作用域限制、材质为什么只能回到 Tabs 自己的栏、系统浮动栏为何把 336×64vp 请求放大成 378×72vp,以及为什么要按 1.125 等比补偿而不是减固定差值,最后用不
把 https 链接发出去,点开却弹出「选择打开方式」——应用和两个浏览器并列。这篇从这条歧义讲起:三条路径段如何接管、为什么先判 want.uri 再判参数、未知 id 为什么不静默;冷启动与热启动共用同一入口,却暴露出两个真缺陷(缺少 OPEN_ARTICLE 分支、直写 activeTab 绕过清栈);最后记录上架前 AGC「增长 > App Linking」整块灰色时,手工 assetli
能力要包进流程三段式只是地基,用户要的是选片、对比、调色、保存的一气呵成;指标要客观:梯度能量对比插值基线,让"更清晰"变成可复现的数字(+99%);体验要零门槛:PhotoViewPicker 免权限选图、SaveButton 免权限保存,全程不弹权限框;预览与落盘要一致:GPU 属性预览 + 像素烘焙落盘,同一套参数推导保证所见即所得。
卡片上那颗「刷新」从上线起就没生效过:系统递到 onFormEvent 的 message 不是裸字符串,而是整个动作序列化后的 JSON。修复只用了一个 JSON.parse,前提是把「系统递什么」当成未知量。顺着这条通道继续拆互动卡片的三层分工——静态卡片、动态卡片、场景动效的激活态各管一段;出框区以卡片左上角为原点按比例外扩,158×158 算出 190×205 @(-16,-24);激活态
2026-09-11 的审核报告只给了三句话:搜索不一致、642 与实际内容不一致、内容丰富度欠佳。这篇把三句话拆成三种可验证的形态——输入到结果的命中矩阵、只算不写的账本、相对被驳回包的增量清单,再用 1116 条搜索断言、全量门禁与上架自检把「内容太少」变成可复算的数字。
发布证书的私钥口令不允许以明文进仓库,常规签名配置这条路就断了。这篇记录一条可复算的离线签名链路:产出未签名包、单独签 HAP、复刻 APP 结构、再签 APP,最后对两层分别验签;再用三份产物的字节数与 SHA256 建台账,把「哪个包、谁签的、换过几次」钉在数字上。
详情页点一下按钮,球挂到了屏幕上——闪控球在别的应用上悬浮,点球展开成闪控窗。这篇把 floatingBall 与 floatView 接成一条生命周期:bind 后两窗同建只显一个,球先停窗跟着停的状态配对是一体销毁的字据,189vp 定高窗、restoreMainWindow 白名单回跳逐条踩完,update 不重建却也不刷窗——真机踩坑补了通知口,五段日志链在模拟器与真机上对上。
接 systemShare 时,我按印象写了 result.resultCode,编译过了、跑起来也没报错,只是它永远是 undefined。这篇从一次被回调骗到的经历出发,把 SharedRecord 的必填项、thumbnail 的 32 KB 上限、两个 off 的签名差异、SINGLE 与 BATCH 的语义边界逐条对 d.ts 核实,再用 60 秒真机日志把系统内部的调用顺序倒推出来;跨
把瀑布流分页追加和尺寸变化重排拆开:以稳定 ID、比例元数据和列高快照只为新卡片分配位置;需要修正时再通过布局版本和视口锚点恢复阅读位置。
耳机一拔,声音跳到外放,页头却还写着「右前 30°」。这篇把「能不能渲染方位」和「此刻声音去了哪」拆成两件事:用 AudioRoutingManager 读全量输出设备、只订阅一次 deviceChange、按有线>蓝牙>外接>机身定路由,再把降级提示写进 AppStorage 交给地图说明卡,讲解不中断。
地图上点昆仑,讲解声该从左上角来。这篇把 3D 地块的世界锚点换算成 OHAudioSuite 的 5 米声场坐标:等比缩放、球面收口、atan2 求方位角、八扇区读数,再用三块地的左右声道 RMS 验证方位真的落进了声音里。
点开讲解再切去别的应用,声音还在,屏幕上却没有它。这篇用 AVSession 把讲解接进系统播控卡:元数据跟着当前异兽走、云端 AVPlayer 上报真实进度、WantAgent 点卡带参数直达异兽、卡上命令与应用状态成对落日志,能力缺失时逐级降级。
分栏之后,地图打开时屏幕上出现了两张地图和一条分隔线。这篇记录怎么让沉浸地图占满整窗:三个布局属性一起拉满、合并时机卡在云幕里、满宽只读不写回所以复原不需要代码,以及两个「还在那儿」的东西——拖动手柄和宽屏侧栏,还有按返回把应用退到桌面那个 bug。
文章里能看到一个玩法完成,不代表发布包已经验收。编译成功、签名通过、安装成功、页面可用和平台审核是不同检查。《拼棋派对》这一轮系列实操把源码、包、模拟器操作和问题记录分别保存,让每个结论都有对应范围。本篇以主App1.0.19、API26为基线,梳理签名打包和代表玩法回归。构建记录来自2026年10月14日;系列操作在10月14—15日完成。本文没有再次构建新版本,也没有把文章发布当作App上架。
主App已经有24点、棋类和双人小游戏,再开发元服务时,最值得复用的是规则和经过验证的交互路径。《拼棋派对》先以手机24点建立元服务工程,再扩展双人玩法,处理API差异、包体积、胶囊空间和图标规范。本篇梳理独立工程的迁移方法。元服务工程位于D盘独立目录,版本1.0.0、API26,仅声明phone;它与主App1.0.19是两套交付。效果采用此前元服务实操归档,本轮没有重新安装元服务或向AGC更新
文章里能看到一个玩法完成,不代表发布包已经验收。编译成功、签名通过、安装成功、页面可用和平台审核是不同检查。《拼棋派对》这一轮系列实操把源码、包、模拟器操作和问题记录分别保存,让每个结论都有对应范围。 本篇以主App1.0.19、API26为基线,梳理签名打包和代表玩法回归。构建记录来自2026年10月14日;系列操作在10月14—15日完成。本文没有再次构建新版本,也没有把文章发布当作App上
成语已经消除的格子、诗词排除的选项、不可撤销按钮都属于状态设计。禁用不等于消失,也不等于把文字变得与背景接近。可以保留明确标签,同时用不响应点击、边界和辅助提示表达限制。错误不能只用红色,成功不能只用绿色。找茬增加命中符号与文字说明,诗词有具体反馈,棋类有轮次和将军提示。这些信息帮助用户理解发生了什么,也让截图和测试可以核对状态。PC默认和最大化窗口的正文、标签、控件文字不得低于项目10fp下限。
主App已经有24点、棋类和双人小游戏,再开发元服务时,最值得复用的是规则和经过验证的交互路径。《拼棋派对》先以手机24点建立元服务工程,再扩展双人玩法,处理API差异、包体积、胶囊空间和图标规范。 本篇梳理独立工程的迁移方法。元服务工程位于D盘独立目录,版本1.0.0、API26,仅声明phone;它与主App1.0.19是两套交付。效果采用此前元服务实操归档,本轮没有重新安装元服务或向AGC
按钮颜色鲜艳,不代表上面的字一定看得清。双人区域中蓝、红、绿有明确含义,但文字、边框、选中态和背景需要一起检查。《拼棋派对》保留了既有深色玩法配色,同时处理系统主题变化和部分棋盘的深浅显示。 本篇以当前1.0.19的样式函数为依据,讨论怎样检查真实背景上的对比度。图示包含此前主题适配证据,不把历史截图当作本轮所有页面都已完成深浅主题验收。 本文目录 系统主题与产品配色的边界明确文字、面板和状态色
拼棋派对》用本地Preferences保存设置、战绩和几类关卡进度。它没有账号或云端同步,页面内状态保留也不能等同于完整棋局持久化。本篇核对1.0.19的,结合本系列已经完成的关卡观察保存范围。演示使用本轮地图与结果截图;未把返回地图的检查称为杀进程恢复测试。
成语通关解锁下一关,诗词收藏诗签,寻物重玩保留最快时间,这些成绩应当在离开页面后仍然存在。《拼棋派对》用本地Preferences保存设置、战绩和几类关卡进度。它没有账号或云端同步,页面内状态保留也不能等同于完整棋局持久化。 本篇核对1.0.19的 GameRecordStore.ets,结合本系列已经完成的关卡观察保存范围。演示使用本轮地图与结果截图;未把返回地图的检查称为杀进程恢复测试。 本
电脑上两个人玩双人24点,鼠标轮流点击不够顺手。给两位玩家分配键盘区域以后,还需要处理按住键、切换窗口和重新回到应用:一次按键只能执行一次动作,焦点回来后也不能把旧的按下状态继续算进去。《拼棋派对》把键盘事件集中到gameRoot,再按当前玩法分发。本篇分析KeyDown与KeyUp、修饰键过滤、按键集合和窗口焦点通知。代码对应1.0.19,GIF采用此前电脑模拟器的实际键盘操作记录,属于历史证据
电脑上两个人玩双人24点,鼠标轮流点击不够顺手。给两位玩家分配键盘区域以后,还需要处理按住键、切换窗口和重新回到应用:一次按键只能执行一次动作,焦点回来后也不能把旧的按下状态继续算进去。 《拼棋派对》把键盘事件集中到gameRoot,再按当前玩法分发。本篇分析KeyDown与KeyUp、修饰键过滤、按键集合和窗口焦点通知。代码对应1.0.19,GIF采用此前电脑模拟器的实际键盘操作记录,属于历史
折叠屏展开以后,应用得到更多宽度,但不一定得到更多高度;电脑窗口也可能比手机横屏更窄。适配《拼棋派对》时,先看当前内容区域,再决定导航、棋盘和工具怎样分配空间,比只按设备名称放大控件更可靠。本篇接着面对面布局,分析窗口尺寸、设备类型与状态保留。代码对应1.0.19;折叠演示来自本系列API26模拟器取证,电脑演示采用此前R14适配阶段的模拟器记录,分别标明范围。
折叠屏展开以后,应用得到更多宽度,但不一定得到更多高度;电脑窗口也可能比手机横屏更窄。适配《拼棋派对》时,先看当前内容区域,再决定导航、棋盘和工具怎样分配空间,比只按设备名称放大控件更可靠。 本篇接着面对面布局,分析窗口尺寸、设备类型与状态保留。代码对应1.0.19;折叠演示来自本系列API26模拟器取证,电脑演示采用此前R14适配阶段的模拟器记录,分别标明范围。 本文目录 测量应用实际内容区域
分栏能用了,图鉴点一只异兽却还是整页替换:详情把左栏顶掉,右栏一动不动。这篇记录把详情改成 NavDestination 进右栏的完整过程:显示位置与打点拆开、壳层状态必须先清、连点用 replace 不叠栈、三条相邻路径各自的分栏分支,以及右栏沿用左栏宽度排版导致横向被裁的破版。
平行视界能分栏,但分隔条只落 1:2 / 1:1 / 2:1 三档,拖动期间两栏内容整片不绘制。改用 Navigation 自己分栏:开关与结果分离、14vp 自绘手柄无极拖动、满屏层收 navBar、手柄挂 overlay 吞掉整屏触摸的修法。
两个人把手机或平板放在桌面中间,坐在设备两侧,看到的屏幕方向相反。如果把双方操作区都朝同一个方向显示,其中一人就要倒着读数字和按钮。双人适配需要先确定人的座位,再决定屏幕怎么分区。 《拼棋派对》为移动设备提供面对面和同向座位,电脑默认左右同向。本篇以双人24点说明区域顺序、旋转、事件归属和空间预算。代码对应1.0.19;本轮使用API26三折叠模拟器观察手机单屏与展开变化,平板图采用此前归档的模
向左滑动一行 2、0、2、2,结果应该是 4、2、0、0。如果把刚生成的4再次参与本次合并,规则就会失真。1024玩法的核心是一次移动只合并相邻同值的一对,并在移动有效时生成新数字。 《拼棋派对》使用4×4数组表示棋盘,四个方向共用一套行处理。本篇结合方向按钮实操解释算法、分数和结束条件。环境为HarmonyOS7 API26手机模拟器、主应用1.0.19。内部函数沿用2048命名,但实际胜利目
“映日____别样红”,从同类词语里选出“荷花”,不需要键盘也能完成一次诗词填空。《拼棋派对》把诗句、空位、答案和干扰项组织为题目模型,再把选词、判题和换题放进独立组件。这一玩法既有单空,也有按顺序填写的双空。 本文从首关八题展开,介绍题库、答案槽和延迟换题的状态保护。环境为HarmonyOS7 API26手机模拟器,应用1.0.19。题目配置在 PoetryCampaign.ets,页面实现为
一张字阵里出现两个“一”,玩家要按位置选择,连成“一心一意”。成语消除需要同时处理文字值、字块身份和连接路径,单纯保存四个字还不足以判断玩家究竟选了哪些格子。 《拼棋派对》使用关卡配置生成目标成语与字阵,玩家逐个点相邻文字,四字成词后自动判断。本篇在HarmonyOS7 API26手机模拟器中完成第1关,分析选择、消除、计分和解锁。示例为主应用1.0.19。 本文目录 目标词与字块位置分开生成可