自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(174)
  • 资源 (7)
  • 收藏
  • 关注

原创 HarmonyOS 文件选择与读写:DocumentViewPicker、URI、沙箱目录一次搞清

HarmonyOS 文件开发中,最容易搞混的是 URI 和真实文件路径。本文从 DocumentViewPicker 选择文档开始,介绍文件 URI 的读取方式,以及 filesDir、cacheDir、databaseDir 等沙箱目录的区别,并结合文件导入、导出场景整理一套比较清晰的处理流程。

2026-09-02 16:05:50 308

原创 HarmonyOS 图片选择、系统相机拍照与保存相册:优先用 Picker,少申请权限

头像、图片上传、拍照和保存相册是很多 App 都会遇到的功能。本文整理 HarmonyOS 中图片选择、系统相机拍摄、URI 处理以及保存相册的基本思路,并讨论什么时候使用系统 Picker,什么时候才有必要自己接入完整相机能力。

2026-09-02 16:05:02 283

原创 HarmonyOS 权限申请完整流程:声明、检查、请求、拒绝后二次授权

权限开发最麻烦的往往不是弹出授权框,而是用户拒绝之后怎么办。本文完整梳理 module.json5 权限声明、AtManager、权限状态检查、首次请求以及拒绝后的处理流程,同时讨论哪些场景其实可以通过系统 Picker 避免申请额外权限。

2026-09-01 10:59:59 337

原创 HarmonyOS 本地存储怎么选:Preferences、PersistentStorage、文件和关系型数据库

Preferences、PersistentStorage、文件和关系型数据库都能保存数据,但适合的场景完全不同。本文从用户设置、UI 状态、大文件以及结构化业务数据几个典型需求出发,对比 HarmonyOS 常见本地存储方案,并给出一套简单实用的选型思路。

2026-09-01 10:58:53 487

原创 HarmonyOS 网络请求实战:HTTP GET、POST、JSON 解析和请求销毁

HarmonyOS 怎么发送 HTTP 请求?本文从网络权限开始,分别实现 GET、POST 和 JSON 数据处理,同时讨论为什么网络请求不应该全部堆在页面代码里,以及请求完成后资源为什么要及时释放,为后续封装统一网络层打基础。

2026-08-31 09:19:49 513

原创 HarmonyOS Navigation 实战:NavPathStack 跳转、传参、返回和路由表一次讲清

这篇开始真正使用 Navigation 搭建页面导航。内容覆盖 Navigation 根容器、NavDestination、NavPathStack、页面 push、返回、参数传递以及系统路由表配置,把一个真实项目里最常见的 Navigation 使用流程完整串起来。

2026-08-31 09:19:04 535

原创 HarmonyOS 页面跳转到底用 router 还是 Navigation?新项目我为什么直接选 Navigation

router 写起来简单,Navigation 看起来却复杂不少,那么新项目到底该怎么选?本文从导航栈管理、页面解耦、复杂项目维护以及平板、折叠屏适配等角度对比两种方案,并解释为什么新的 HarmonyOS 项目更适合围绕 Navigation 构建页面导航。

2026-08-29 22:40:25 157

原创 HarmonyOS UIAbility 生命周期:onCreate、onWindowStageCreate、onForeground、onBackground 怎么分工

UIAbility 是 HarmonyOS 应用运行过程中非常重要的一层。本文通过一个典型 EntryAbility,梳理 onCreate、onWindowStageCreate、onForeground、onBackground、onDestroy 的触发时机,并说明初始化、窗口加载和前后台切换逻辑分别适合放在哪个阶段。

2026-08-29 22:39:22 162

原创 HarmonyOS 页面生命周期完整梳理:aboutToAppear、onPageShow、onPageHide 别再混着用

aboutToAppear、onPageShow、onPageHide 看起来都和页面显示有关,但触发时机和适合处理的业务并不一样。本文把组件生命周期和页面生命周期拆开讲,并结合页面进入、返回、切后台等场景,说明数据刷新、状态恢复等逻辑应该放在哪里。

2026-08-28 13:44:02 182

原创 ArkUI 布局入门:Column、Row、Stack、Flex 什么时候用最合适

ArkUI 页面基本离不开 Column、Row、Stack 和 Flex。本文不只是介绍几个组件的 API,而是从实际布局场景出发,说明纵向排列、横向排列、元素叠加和弹性布局分别应该怎么选,同时整理一些尺寸和布局中很容易踩到的问题。

2026-08-28 13:43:13 231

原创 ArkTS 和 TypeScript 到底有什么区别?不是把 .ts 改成 .ets 就完了

ArkTS 看起来很像 TypeScript,但真正写起来会发现不少 TS 中习以为常的写法在 ArkTS 中并不合适。本文结合 any、对象字面量、动态属性、类型转换等常见场景,聊清楚 ArkTS 为什么更强调静态类型和编译期确定性。

2026-08-27 15:05:19 167

原创 HarmonyOS 项目目录结构看这一篇就够:entry、module.json5、build-profile.json5 到底管什么

刚打开 HarmonyOS 工程时,AppScope、entry、resources、module.json5、build-profile.json5 很容易让人看懵。本文从一个最小工程出发,逐个说明这些目录和配置文件分别负责什么,以及日常开发真正需要重点关注哪些位置。

2026-08-27 15:04:26 582

原创 从零创建第一个 HarmonyOS 应用:DevEco Studio + ArkTS 快速上手

第一次接触 HarmonyOS 开发,先别急着研究复杂 API。本文从 DevEco Studio 开发环境开始,带你创建第一个 ArkTS 工程,认识基础代码结构,并介绍真机、模拟器的选择以及新手最常遇到的编译问题,适合作为鸿蒙开发的第一篇入门文章。

2026-08-26 15:20:51 276

原创 HarmonyOS Release 构建安全:ArkGuard 混淆、签名配置与秘密管理

Release 包能生成不代表发布流程安全。混淆无法保护配置文件中的密码,签名材料也不应该进入仓库。本文从 ArkGuard 能力边界、保留规则、签名配置隔离、产物管理和泄露响应五个方面整理个人开发者发布实践。

2026-08-26 14:08:00 360

原创 声明支持 phone、tablet、2in1 之后:HarmonyOS 多设备适配实战清单

在 `module.json5` 中写入三种 `deviceTypes`,只表示安装范围,不代表界面已经适配。本文以一款五 Tab 日记 App 为例,从窗口断点、导航形态、内容宽度、键鼠焦点和测试矩阵拆解“一次开发,多端部署”的实际工作量。

2026-08-25 11:11:42 657

原创 从单文件 MVP 到分层架构:ArkUI 应用如何安全拆分而不破坏功能

第一版把五个 Tab、弹窗和状态都放进一个 ArkUI 页面,开发速度很快;功能稳定后,文件会逐渐变成维护瓶颈。本文以真实项目为例,讨论何时拆分、按什么顺序拆分,以及如何避免重构后状态不刷新和数据语义漂移。

2026-08-25 11:08:52 405

原创 用 Node 脚本做 HarmonyOS 发布前静态自检:把项目约束写成代码

很多上架问题并不是复杂 Bug,而是 Bundle ID 改错、三语言漏 Key、权限意外增加、图标被占位文件替换。本文展示如何用一个零业务依赖的 Node 脚本,在构建前自动检查 HarmonyOS 项目关键约束。

2026-08-24 09:20:40 397

原创 归档、恢复还是删除?HarmonyOS 习惯数据生命周期设计

这篇文章探讨了习惯管理应用中归档、恢复和删除功能的设计差异。通过分析用户意图,作者提出需要在数据模型中明确区分三种操作的生命周期影响:归档保留历史但停止统计,恢复重新启用习惯,删除则彻底清除数据。文章详细介绍了对应的数据模型设计、统计计算逻辑及用户界面实现,强调操作语义与数据一致性,并提供了测试清单以确保功能完整性。最终通过对比表格归纳了三种操作的核心差异,指出只有模型、统计和交互文案协同工作,才能实现一致的用户体验。

2026-08-24 09:16:00 555

原创 默认数据也要做国际化:稳定 ID、legacyNames 与旧版本兼容

界面文案可以从资源文件读取,但“首次启动自动创建的默认习惯”一旦写入磁盘,就变成了长期数据。本文讲解如何分离稳定身份与显示名称,并处理多语言切换、快速添加去重和早期版本兼容。

2026-08-23 08:21:06 300

原创 HarmonyOS SymbolGlyph 实战:从 Unicode 字符迁移到语义化系统图标

用“☀、☾、✓”做原型很快,但一旦进入多语言、字体差异和持久化场景,Unicode 图标会暴露大量问题。本文结合一个真实 ArkUI 项目,讲清楚如何用稳定语义 Key、系统 Symbol 和旧数据迁移建立可维护图标体系。

2026-08-23 08:17:00 286

原创 HarmonyOS 日记类 App 的日期设计:本地自然日、月历与夏令时边界

摘要: 日期处理远比表面复杂,涉及时区转换、夏令时、跨日统计等边界问题。本文通过日记应用开发实践,总结了10个关键点: 区分时间戳(时刻)与日历日期(身份标识) 避免用UTC截取本地日期 日期型时间戳建议用当地中午规避边界问题 月历补位需动态计算而非固定偏移 自然日统计需左闭右开区间 跨时区记录需明确归属策略 星期名称应依赖本地化系统 使用日历字段运算而非固定毫秒数 需覆盖闰年、月末、夏令时等测试场景 核心原则:时刻与日期分离、本地化优先、业务语义明确。统一规则可避免今日/历史/统计页的逻辑矛盾。

2026-08-22 13:18:36 435

原创 HarmonyOS Stage 模型实战:UIAbility 生命周期如何驱动页面安全状态

本文分析了HarmonyOS Stage模型中UIAbility、WindowStage和ArkUI页面的生命周期分工机制。文章指出,UIAbility负责应用组件和窗口生命周期管理,WindowStage装载页面,而ArkUI页面则负责业务状态恢复和显示逻辑。通过"心晴手记"应用案例,作者展示了如何合理分配各层级的职责:UIAbility转发前后台事件,页面处理应用锁等业务状态,通过eventHub实现解耦。文章强调了生命周期边界管理的注意事项,包括避免内存泄漏、正确处理冷启动和后台恢复等场景,并提供了测

2026-08-22 13:15:11 434

原创 从 SwiftUI 到 ArkUI:迁移一款真实 App 时需要改变的 7 个思维习惯

把 iOS App 迁移到 HarmonyOS,最容易走偏的方式是逐行翻译 Swift。真正高效的迁移应该先保留业务不变量,再为 ArkTS、ArkUI、Stage 模型和系统 Kit 重新选择实现。本文结合“心晴手记”的双平台版本,梳理 7 个最重要的思维转换。

2026-08-21 21:26:27 497

原创 从零数据到可复盘:心情记录与习惯打卡的数据模型设计

本文探讨了心情日记应用的数据模型设计,从单一记录结构逐步演化为三个独立实体:MoodEntry(心情记录)、Habit(习惯定义)和HabitCompletion(习惯完成情况)。这种拆分解决了习惯修改、归档和历史统计等问题,同时解释了时间字段的多重用途、ID设计原则、数据合并逻辑以及删除与归档的区别。文章还分析了标签的简化实现和统计计算的关键时间因素,展示了如何通过合理的数据建模支持业务需求的变化与扩展。

2026-08-21 09:36:17 209

原创 如何设计一个不过度解读情绪的统计页:7/30 天复盘实战

文章摘要:本文讨论了个人数据统计页面的设计原则,以心情日记App为例,强调统计应严格限定解释边界。作者提出九项具体实践,包括时间窗口定义、数据去重方法、习惯完成率计算逻辑,以及避免因果推断的标签处理等。重点指出统计应仅描述用户主动记录的数据,而非过度解读情绪状态或行为模式,并通过中性文案、可验证指标和克制视觉设计,确保统计结果不造成用户压力。最后强调敏感数据统计的核心价值在于帮助用户观察记录节奏,而非替代用户做出判断。

2026-08-20 09:16:00 260

原创 个人开发者提交 AppGallery 前需要检查什么:HarmonyOS 上架清单

本文以“心晴手记”HarmonyOS应用为例,总结了开发者提交应用前需要完成的10项关键检查,涵盖身份验证、签名配置、权限声明、隐私合规、功能测试、多设备适配和商店素材准备等环节。文章强调发布流程远不止构建安装包,而是需要系统性地验证应用身份、数据安全、质量标准和市场表达的一致性,并提供了详尽的检查清单,帮助开发者避免常见审核问题。特别提醒个人开发者应建立发布检查机制,而非依赖审核反馈来发现问题。

2026-08-20 09:14:39 442

原创 隐私优先 HarmonyOS 应用怎么设计:无账号、无后台、无统计 SDK

本文以日记应用"心晴手记"为例,阐述了隐私优先的开发实践。文章提出,隐私保护应从产品设计阶段就建立约束,而非事后补充政策。具体措施包括:确定无账号、无服务器等基础约束;清晰绘制数据流图;延迟用户内容处理直至获得同意;最小化权限声明;使用系统级认证而非存储生物特征;提供完整的数据管理功能;避免医疗化表述;确保代码、政策和商店标签三者一致。通过这些技术实现,使"本地优先"成为可验证的工程实践,而非营销话术。文章强调,真正的隐私保护需要在架构层面做出取舍,而非仅靠文案声明。

2026-08-19 09:39:42 425

原创 HarmonyOS 调用系统文件保存器导出 JSON 与 CSV

本文介绍了在HarmonyOS应用中实现数据导出功能的关键要点。主要内容包括:1)通过系统DocumentViewPicker让用户自主选择保存位置;2)提供JSON和CSV两种导出格式,其中JSON需包含版本号和时间戳,CSV需正确处理转义字符;3)文件名设计要兼顾可读性和唯一性;4)导出流程需处理用户取消操作,并区分不同结果状态;5)强调了导出功能对用户数据主权的重要性,指出真正的数据所有权不仅是不上传云端,更要确保用户能自由导出数据。文章还提供了UTF-8 BOM处理、测试要点等实用技巧。

2026-08-19 09:38:19 502

原创 HarmonyOS 使用 UserAuthenticationKit 实现本地应用锁

本文介绍了如何在本地优先的心情日记应用“心晴手记”中实现应用锁功能。建议使用系统设备认证而非自建账号系统,以确保安全性和用户体验一致性。文章从权限声明、认证函数封装、开启流程设计、前后台处理、界面状态管理等七个方面详细说明了实现要点,强调应用锁需要包含配置层、认证层、生命周期层和视觉层四个层级。相比自建密码系统,复用系统认证能减少敏感凭据处理,提供更一致的用户体验,但应用仍需妥善处理各类边界情况。

2026-08-18 09:33:01 878

原创 HarmonyOS 应用如何实现中英日三语切换:资源、本地数据与重启刷新

多语言实现的难点与分层策略 多语言功能的核心挑战在于动态切换时的状态一致性管理。本文提出三层架构方案:资源层确保静态文案完整性,设置层维护用户语言偏好,数据层处理持久化内容的动态展示。通过资源目录组织、语言偏好持久化、启动顺序控制、应用重启策略、默认数据稳定命名、本地化日期处理、自动化翻译检查等方法,解决了多语言切换中的常见问题。特别强调了初始化数据应保存稳定名称而非翻译结果,并提供了覆盖多语言全场景的测试路径建议。该方案在HarmonyOS应用中实现了流畅的语言切换体验,避免了混合语言状态的出现。

2026-08-18 09:26:37 390

原创 ArkUI 数据更新后页面不刷新?一次 ForEach Key 复用问题排查

本文总结了开发HarmonyOS应用"心晴手记"时遇到的视图更新问题:数据已变更但UI未及时刷新。通过分析发现,问题源于状态更新方式不当和ForEach组件Key设计不合理。作者提出了以下解决方案: 确保状态不可变更新,创建新数组/对象而非原地修改; 合理设计ForEach的Key,应包含影响显示的所有关键状态; 必要时使用全局uiRevision强制刷新; 避免使用数组索引作为动态列表的Key。 文章还提供了系统的排查步骤,强调状态更新应明确表达变化,Key设计要准确反映节点的显示身份。这些经验对于解决声

2026-08-17 08:28:13 570

原创 HarmonyOS ArkTS 本地持久化实战:用 Preferences 管理完整 JSON 状态

本文介绍了在轻量级HarmonyOS应用"心晴手记"中选择使用Preferences而非数据库的工程决策与实践经验。作者基于产品特性(无账号系统、本地存储、数据量小等)选择了将应用状态序列化为JSON字符串存储的方案,并详细阐述了这种设计的六个关键实践: 定义完整版本化状态对象作为持久化边界 健壮的数据读取与容错处理 新版本字段默认值补全机制 写入前创建确定状态快照 通过Promise链保证写入顺序 明确的数据库迁移触发条件 文章强调这不是用Preferences替代所有数据库场景,而是针对特定数据规模做出

2026-08-17 08:24:44 550

原创 从 iOS 到 HarmonyOS:用 ArkTS 重写一款本地优先心情日记的 6 个关键决策

本文分享了将一款iOS心情日记App迁移到HarmonyOS的开发经验,重点介绍了6个关键技术决策:1)优先定义稳定的领域模型而非急于翻译UI;2)正确处理本地日期概念;3)使用JSON+Preferences方案时的数据升级和并发写入处理;4)解决ArkUI列表刷新问题;5)多语言支持的数据持久化策略;6)贯彻"本地优先"理念的产品约束。这些经验对HarmonyOS原生应用开发具有实用参考价值,特别是涉及数据持久化、多语言支持和本地化日期处理的场景。

2026-08-16 22:46:37 341

原创 50mm 为什么“变成”75mm?画幅、裁切系数与视角

50mm镜头装在APS-C机身上等效75mm的说法并非改变镜头物理焦距,而是由于传感器较小仅截取成像圆中央部分,导致视角变窄。透视关系由拍摄距离决定,画幅变化本身不改变透视。等效概念虽有助于快速选镜,但需注意景深、进光量等参数并不等效。实际应用中,可通过视角公式精确计算,或借助工具预设机身参数简化流程。正确理解画幅差异可避免误解,更高效地利用器材特性进行创作。

2026-08-16 20:52:26 313

原创 从 f/4 收到 f/8,快门该怎么变?曝光等效实战

本文讲解了摄影曝光参数的等效补偿原理。光圈、快门和ISO都可以用"档"来衡量进光量变化:光圈缩小1档(如f/4→f/5.6),快门需延长1档(如1/250→1/125)或ISO提高1档来保持相同曝光量。通过两个实例演示了参数换算过程,并强调"等效曝光不等于等效画面"——不同参数组合会影响景深、运动模糊和画质。文章指出三个常见误区,并建议使用专业工具辅助计算,但最终参数选择仍需摄影师根据创作需求判断。

2026-08-15 15:17:12 209

原创 拍星空到底用多少秒?500 法则与实用 NPF

星空摄影曝光时间需平衡光线收集与星点拖线问题。500法则(500÷焦距×裁切系数)提供快速估算,适合测试片或社交媒体分享,但可能在高分辨率显示时出现可见拖线。更严格的实用NPF法则(300÷焦距×裁切系数)能保证星点锐度,但需通过提高ISO、开大光圈或多张堆栈补偿曝光损失。建议从实用NPF开始测试,逐步调整参数,并注意关闭防抖、使用快门线等细节。不同焦距对应曝光时间可参考文末表格,最终选择取决于设备条件和对画质的具体需求。

2026-08-15 15:14:48 485

原创 前景到远山都清楚:景深与超焦距到底怎么算

本文探讨风光摄影中景深与超焦距的优化运用。文章指出,景深并非绝对清晰的边界,而是受焦距、光圈、对焦距离和弥散圆影响的视觉标准范围。通过超焦距计算公式,摄影师可以更合理地分配清晰范围,避免过度缩小光圈导致画质下降。文章还纠正了三个常见误区,并推荐使用"光参尺"工具进行参数计算。最终强调,工具只是辅助,构图决策仍需基于拍摄场景的具体需求。

2026-08-14 14:41:13 346

原创 ND1000 要曝光多久?一篇讲透 ND 长曝光换算

从档位公式到 1/30 秒搭配 ND1000 的完整示例,解释 ND 滤镜曝光时间怎么计算、为什么实拍仍要微调。

2026-08-14 14:38:25 287

原创 到了机位还在翻参数表?我做了一把离线摄影「光参尺」

从 ND 长曝光、景深、星空快门到视角换算,聊聊我为什么把五类常用摄影计算做进一款本地优先的 iPhone App。

2026-08-13 20:31:42 161

原创 App 上线后没人评价怎么办?我的独立 App 数据复盘框架

文章摘要: 本文探讨了App上线初期数据分析的正确方法,强调避免过早下结论的重要性。作者提出建立四层指标体系(内容曝光、App Store转化、首次使用、留存口碑)来全面诊断问题,并建议在小样本阶段优先采用用户访谈而非统计数据。文章指出,初期应重点关注用户真实行为而非百分比,同时强调营销文案的诚实性。作者分享了诊断问题层级的实用框架,并详细说明了优快云系列文章的验证方法和30天复盘节奏。最后强调独立开发者应当坦然面对数据不足的现状,通过系统化分析和真实用户反馈逐步优化产品。

2026-08-13 13:23:05 334

charles 3.11.4破解文件

下载破解文件,替换源文件即可使用

2016-05-06

SVNv2.7.14

SVN可视化工具,这是一款很好用的SVN管理工具,这是一款很好用的SVN管理工具,

2018-11-16

GIF图片生成器

好用、简单的GIF生成器

2016-07-14

好用的网络工具

网络工具

2016-07-16

C语言函数速查

AppStore 下载一个CHMReader即可阅读

2016-05-10

git图形工具

git图形工具

2016-08-03

FTP客户端Mac版

FTP客户端 Mac版

2016-05-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除