- 博客(567)
- 收藏
- 关注
原创 从台下到台上,我成为 GDE(谷歌开发者专家) 的经验分享
以前台下客,如今台上人,曾惊鸿一瞥,今再会旅程。2022年5月末,经过一个多月的面试,我的 GDE (Google Developer Expert) 终于正式成功通过面试,成为了国内第 4 位 Flutter & Dart GDE。由于时间原因,目前在官方的 experts/directory 可能还没同步,预计要一两个星期。成为 GDE 有什么好处相信对于 Android 或者 Machine Learning 的开发者来说 GDE 应该是一个很熟悉的头衔,GDE 是 Go.
2022-05-27 11:17:30
4470
5
原创 Flutter Impeller Vulkan 内存持续上涨,问题没想到是文字阴影
最近 Flutter 的挺有意思,用户最初发现的是,Flame 游戏里十来个带模糊阴影的 HUD 文字,只要每帧重绘,Native Heap 就一直往上涨,27 分钟从 34 MB 涨到 775 MB。但是后面把文字、阴影都删掉,只保留一个持续触发重绘、没有实际画出图形的,Vulkan 下的 Native Heap 居然还会稳定增长,这就有点怀疑人生了。也就是。
2026-11-06 08:44:10
40
原创 Flutter 开始支持 Jetpack Compose Platform View
居然开始支持 Jetpack Compose 的了,看起来是 Flutter 在给默认补齐 AndroidX 的三个 ViewTree Owner,让 Compose 能找到生命周期、状态恢复和 ViewModel 的宿主。理论上后面应该会直接支持 Compose 放进 HC、TLHC、VD 和 HCPP 四个场景里里面。
2026-11-05 08:50:06
264
原创 Flutter 可以更直接地调用原生 API 了,Dart Direct Native Interop
以前 Dart 层的没有用包装函数可以被 Tree Shaking 删除,但 Native Library 需要整体打包,现在配合 Link Hook 和支持裁剪的原生工具链,就可以进一步剔除没有用到的 Native Symbol,从而优化产物大小。这对依赖 SQLite、加密库、音视频库的插件也有意义,不过它需要相应的构建和链接配置,不是说升级 Dart 后任何原生库都会自动完成裁剪。2024 年:Dart 3.5 开始在完善 C、Java、Kotlin、Objective-C 的直接互操作能力。
2026-11-04 08:57:22
229
原创 Flutter Android 性能修复:8 个大核的手机,Raster 居然只跑在 2 个核上?
这个做法在有传统大小核的手机上还算合理,但是 Snapdragon 8 Elite / 8 Elite Gen 5 改成了两个 Prime 超大核加六个 Oryon 性能核,已经没有传统 Little Core 了,比如拿 PR 实测的 SM8850 来说,CPU 0~5 的最高频率是 3.63 GHz,CPU 6~7 是 4.61 GHz,然后 Flutter 一比较,还是把前六个识别成了。,这个一看就很反常,明明两个超大核的最高频率更高,为什么放到普通性能核上反而跑得更快?
2026-11-03 08:53:06
292
原创 感人,Flutter 居然有了一个超实用提案,期待落地
所以很期待这个方向,尤其是 Dart 现在越来越需要同时兼顾 Flutter Native、Web、Wasm 和各种平台扩展,维护一套一致的 Dart API 挺重要的。目前 PR 仍然刚刚 Open 状态,规范标记为 Draft,新增了 624 行提案文档,还没有正式修改 Dart SDK 代码,但是确实值得期待一下。PR 就很赞,特别是对 Flutter 跨平台插件、FFI、平台适配层的开发来说,就很实用。有没有真的补齐方法体,如果没有,就报编译错误,又是什么 Kotlin 即视感?
2026-11-02 09:17:48
164
原创 最近 Android 有什么更新:Android Dev Summit 2026 技术解读
给 Claude Code 一批用户操作流程,让它找出 App 里的内存泄漏,Agent 在不同模拟器上并行执行流程,抓取 Heap Dump 后交给开发机上的 LeakCanary 分析,这样设备端就不用承担完整的堆分析工作,接着沿着对象引用链回到代码修复,最后重新跑流程确认。,比如以前看 Perfetto 经常只能看到某段工作耗时很长,但下一步还得自己找代码,现在应用 Trace 可以带源文件、行号和参数,协程跨线程的工作也能通过 Flow 关联起来,Agent 可以把慢操作和具体调用点对上。
2026-10-30 09:07:43
382
原创 Flutter 紧急发布 3.47.8 安全升级版本,建议都升级
但是 Android、Windows 和 Linux 上的 dart:io 用的是内置的 BoringSSL 引擎验证 TLS 证书链,它不会读操作系统的中间证书黑名单,所以这次主要就是更新 BoringSSL ,用来在 TLS 验证期间直接阻止被入侵的 eMudhra 中间证书。一家做数字信任生意的公司,把中间 CA 的私钥做成了单字节整数,然后挂在全球信任链上跑了一年半,你觉得这是什么刺激 Play?当然,你要是说,你发布的 App 里直接都忽略了证书验证的,那当我没说话。虽然浏览器和操作系统都。
2026-10-26 08:57:03
192
原创 Flutter 官方表示:AI 时代代码越来越容易写,为什么还要一套代码库?
当然,最重要还是,是 Flutter 开始给 Agent 建立验证闭环,比如 Flutter Stateful Hot Reload 可以走到低于 200 毫秒、Widget 测试低于 500 毫秒,对比传统原生构建需要 2~5 分钟,所以实际上 Agent 可以做到每修改一次代码,能直接看到确定性反馈,可以在相同时间里尝试和修正更多问题。不过涉及原生插件这部分不可能也这么快,但是这部分才是 AI 时代最有价值的地方,以前你写 Flutter 最怕就是原生插件,没人适配,你自己又不懂,写起来就很烧心。
2026-10-23 08:40:57
277
原创 Flutter 的文字为什么比 SwiftUI 更细?问题主要在 Skia 的 256 项查找表里
直接按照 Coverage 混合像素颜色,不一定得到物理上对应的亮度,而 Skia 本身就是试图用 Gamma、Contrast 调整这个差异,但是在深色文字的路径里,中间灰度会向更浅的方向移动。当然,这是纠结 Flutter 一定要字体和原生一致的人会纠结的,比如你的设计值拿着 iPhone 设计稿找你逐字核对,不然其实也没太多影响,毕竟又不是不用看?,所以这个查表分支会生效,比如固定 Gamma 1.4、Contrast 0.0 配置的不是 iOS 的默认口径,
2026-10-21 08:50:37
133
原创 Dart 3.15 新特性:this 终于支持类型提升了
Dart 3.15 解决了类型系统中长期存在的限制:现在 this 可在 is 判断或空值检查后,根据控制流自动提升静态类型。此前需手动声明 var self = this 才能访问子类成员,如今直接使用 this.radius 或 isEven 即可,无需额外变量。该特性同样适用于 NullableExtension 与 sealed class 等场景,使父类方法能安全访问经类型判断确认的子类成员。由于 this 在方法执行期间不可变,编译器可安全进行类型推断。相比此前仅支持局部变量和部分字段的类型提升
2026-10-20 08:42:40
138
原创 Flutter Android 改动:APK 不再允许通过 Intent 动态修改 Engine 参数
Flutter 原本想彻底删除 Intent 配置能力,后来发现这样会破坏大量实际工程场景,尤其是使用 Bazel 等构建系统的项目,它们通常会先构建一次 APK,再重复安装和测试,每次启动时动态修改 Engine 参数,所以如果彻底删除,很多自动化测试就必须重新编译 APK,成本明显增加,这些参数会被传给 Flutter Engine,控制启动追踪、渲染方式相关的行为,这样的设计对于调试很方便,已经编译好的 APK 不需要修改代码,就能临时调整 Engine 行为。
2026-10-15 09:00:20
385
原创 Kotlin 2.5 的 Companion 改造,对 KMP 的重要升级
也就是源码调用可能没有变化,但已经发布库的 Java 调用方、反射逻辑、ABI 检查和旧二进制依赖都可能受到影响,如果目的只是让已有 Companion 方法方便 Java 调用,那还是继续使用。的时候,companion block 和 companion extension 一般优先于旧的 Companion 对象成员,所以如果确实需要旧方法,就要显式写。类型,如果类是 Java SDK 提供的,或者 Kotlin 类作者根本没声明 Companion,扩展就无从下手。
2026-10-14 09:36:47
226
原创 Flitz ,一个把 Flutter 玩成热插拔 Preview 的有趣项目,不错的思路
Flitz是LeanCode推出的Flutter快速分发工具,类似“Vercel预览部署”,支持开发者在本地修改代码后,通过flitz publish一键生成.flitzbundle,生成链接或二维码供设计、产品、测试在真机上即时预览。其核心是预先安装的Host App(含Flutter Engine与Dart Runtime),每次仅传输Dart代码与资源,实现分钟级真机反馈。虽性能受限于Dart bytecode解释执行,但完整支持Flutter生态,无需提PR、CI或重新打包。目前为早期访问版,仅支持
2026-10-13 08:58:20
224
原创 Kotlin Toolchain 0.13,JetBrains 推荐 KMP 都切换到到全新工具链
这套从 Amper 演进而来的 Kotlin Toolchain,从 0.13 开始,,用声明项目和模块,统一执行环境准备、构建、测试、运行和发布。比如以前 KMP 的痛点一般是 Android SDK、JDK、Xcode、模拟器、Gradle 插件和各平台配置需要团队分别维护,这里 Toolchain 开始把这些繁琐环节收进同一个构建入口,。
2026-10-12 09:00:37
338
原创 Genkit Dart 1.0 发布,Flutter 原生的 AI Agent 终于完整了
GenkitDart 1.0为Flutter带来稳定AI应用框架,统一管理模型调用、工具执行、权限控制与错误追踪。通过Flow定义输入输出,结合Schema校验与RemoteAction远程调用,实现端到端可控的AI流程。支持interrupt机制实现关键操作审批(如订餐),确保业务安全;内置Middleware实现重试、限流、日志等能力,并通过Developer UI可视化追踪执行路径,显著提升Flutter开发AI Agent的体验与可靠性。
2026-10-10 09:20:05
338
原创 Flutter + EmbeddingGemma 2,谷歌发布完全端侧的 AI Edge Foresight
而且 EmbeddingGemma 2 基于 Gemma 4,和 Gemma 4 共用 text tokenizer 和 audio encoder,这样一个本地多模态 RAG 可以先用 EmbeddingGemma 2 做 retrieval,再把结果交给 Gemma 4 推理,两边不需要完全重复准备一套音频和文本前处理组件,也就是对端侧来说,这种组件共享的思路可以进一步减少占用。,另外上下文也从 2K 拉到 8K,代码检索能力明显提升了不少。,谷歌最新的 Labs 应用 (,至少端侧的确实能跑起来。
2026-10-09 09:51:12
299
原创 Dart 4.0 要彻底移除 dart:mirrors,Augmentations 应该要来了
Dart 的 AOT、Web 和 Wasm 编译都希望在编译期尽量建立完整的可达关系,甚至 FFI 都要 tree shaking ,但是 runtime reflection 会把一部分「谁会被调用」的决定留到了程序运行以后,不是说做不了,毕竟也有其他语言做到了,只是说这么做的成本比较高,所以编译器为了保证语义只能更加保守。的方法,然后运行时按方法名调用它,这样对开发者来说确实很省事,因为增加一个 handler 只需要写方法和 annotation。
2026-10-08 12:27:30
350
原创 Android CLI 支持 AI Agent 通过 Device Streaming 调试云真机
比如你让 Codex 修一个「Pixel 正常、Samsung 某机型启动后布局错位」的问题,以前 Agent 修改完代码,大概率只能说「建议你在 Samsung 真机上测试一下」,现在它理论上可以自己查询云端 Samsung 设备,然后申请真机、部署 APK、跑到对应页面、读取 layout 或截图,再根据结果继续修改。命令组,可以直接查询能用的 Google Cloud Project、浏览设备型号、创建 reservation、连接、延长 reservation、断开以及释放设备。
2026-10-05 08:57:25
245
原创 Meta 分享怎么用 AI 迁移 Compose 项目不烧心
最近 Meta 的分享了 Instagram Direct 迁移 Jetpack Compose 的经验,感觉还挺有意思的,不过确实有种都到了「大千世界」了,然后你才分享「焚决」的意思,这次 Meta 公布的迁移数据是:迁移后的 UI 代码量减少 50%,AI Agent 执行时间下降 35%,工程师与 Agent 的往返次数减少 32%,单次 Agent Session 的 Token 成本降低 33%。
2026-10-04 08:43:01
359
原创 KMP 又改了编译流程, Separate Compilation 禁止了 commonMain 的依赖穿透
最近 JetBrains 又给 KMP 的编译流程加了commonMain,比如:IDE 只认公共 API编译 JVM target 时,编译器又可能看到依赖库的 JVM.jar也就是同一行代码可能出现 IDE 报错但能编译通过、IDE 跳到一个函数但最终执行的是另一个函数,甚至 IDE 类型推断正确而 JVM 编译失败之类的问题。所以 Separate Compilation 的作用就是 commonMain.jar。因为以前 KMP 一直有一个离谱的场景:同一个commonMain。
2026-10-03 11:09:13
208
原创 Shopify 回应为什么从 RN 回到原生,为什么不用 KMP ?
用一套共享测试来验证 Swift 和 Kotlin 里面实现的业务逻辑,同一 Feature 只有两端都通过相同测试才能发布,而且这些逻辑还能脱离模拟器,直接 headless 跑在桌面环境里,给 Agent 一个非常快的反馈循环。而且就像作者说的,原生的成本低了,对跨平台来说也一样更低了,双端脱离跨平台的长时间迭代成本是需要有基建不断来维持,所以这个过程只是把成本转移到了其他地方,但是收益也是很明显,性能和适配就是最直接的收益。
2026-10-01 16:37:52
225
原创 Android 原生的 Compose A2UI 也来了,你还抱着 XML 养老吗?
对应 Surface 更新后,Compose 只重组真正变化的组件,而且它还支持反向事件,所以用户操作原生 Button、Picker 后,结果可以沿着 A2UI Client Event 回到 Agent。首先它一些 UI 可以根据用户数据,提前在后端生成,在使用之前就匹配好,也可以 Cache,真正用的时候直接就可以渲染出来就行。,是通过 Cloud Run 后端 SSE 发来的是 ADK Event,其中还夹着类似。,然后生成完整 Catalog Schema 时,会把每个函数变成一个合法的。
2026-09-30 15:30:18
276
原创 Flutter 多窗口重要优化合并,多窗口性能和实用性大幅提升
也就是说,你虽然没有重新 paint B,但还是会把 B 的已有 Layer Tree 再走一遍 scene composition / render submission,而这类问题以前单 View 根本不存在,但是 Multi-View 出来之后,场景就不一样了。这对于 Flutter 正在推进的桌面 Multi-Window 挺重要的,因为窗口越多,这个优化越有价值,因为原来的成本更接近“总 View 数”,现在开始接近“本帧 Dirty View 数”。
2026-09-28 16:02:22
472
原创 AndroidX 新增 Security State ,支持可编程的系统安全状态查询
简单来说就是增加了一组查询安全补丁状态的 Jetpack API,以前 Android 现在有 OEM System OTA、Google Play System Update / Project Mainline、GKI Kernel 之类,每一个都有不同的更新周期,特别现在还有 Risk Based Update System ,如果没有一个统一的入口,App 端判断系统的安全程度其实还是挺碎片的。会把这些 supplemental CVE 汇总出来,Security State 的。
2026-09-22 09:14:36
320
原创 Flutter GSoC 2026 提案进度解读,补上 DevTools、FFI 和原生平台的关键缺口
实际上这次 GSoC 补的能力都挺实用的,特别是 AI 时代下,这些能力都是对稳定性和可观察性做了很不错的补充,也是对 Flutter 项目做工程化的补充,虽然有些能力还没完全走完,但是大部分都基础都弄完了,估计下个版本应该都可以看到。
2026-09-17 09:07:30
299
原创 CPF-Flutter 社区提出折叠场景分栏(平行视界) 方案
从实现兼容看,这确实是一套挺不错的分栏方案,最主要它能兼容已有的路由实现,另外 CPF-Flutter 版本也支持到了 3.44 ,特别感觉苹果出现 Duo 之后,各大 App 应该也会开始“被动”适配折叠屏,所以这个也是可以考虑的一个方向。之后,假如详情页位于右侧,然后在详情页弹出 Dialog,PopupRoute 的 barrier 也属于右 Overlay,它最多只能盖住右半屏,左侧 Home 依旧可以点击,这在交互语义上kennel会有点奇怪。
2026-09-16 08:57:19
342
原创 ADB Wi-Fi 2.0 ,Android 17 把无线调试的连接链路重新做了一遍
有多少之前用过 ADB Wi-Fi 的,有没有被它的稳定性恶心到了?这次在 Android 17 上官方终于做了优化:自动连接成功率提高了 32%在 90% 的连接场景里,建立连接的速度提高了 66%,主要发生发生在底层实现上,比如:电脑如何发现设备、设备换网络以后怎么处理无线 ADB、连接中断后怎样重新找到对方,还有 Android Studio 怎样把这一套流程重新设计。简单来说就是,。
2026-09-14 08:54:43
397
原创 iPhone Duo 适配详解,需要改变的不止是布局模型
看了下官方的适配 Duo 设计指引,苹果的指南还真有点东西,看的头皮发麻,比如 Duo 下,外屏和内屏最好不能是两套 UI ,应用应该做到支持持续适应当前拥有的空间界面效果。外屏、内屏、半折、Split View、横向摆放或者两个 App 并排,总体来说都是同一个问题:App 的窗口尺寸和可用区域正在变化,只要应用能够正确支持 resizing,然后支持使用系统导航和布局组件,Apple 认为大部分 App 都可以做到 Duo 适配。比如外屏的比例和传统 iPhone 有明显区别,又宽又矮,所以 Apple
2026-09-12 10:49:32
799
原创 Shopify 从 React Native 回到 Swift/Kotlin,但是你以为有手就行??
然后 Shopify 做了一次实验,一开始先让团队做了一次 Proof of Concept,然后一个工程师花了一周时间,让 Coding Agent 根据现有 React Native 应用重建 SwiftUI 版本,之后项目继续扩大到六人,从 PoC 到新的 Swift/Kotlin Shop App 正式进入 App Store 和 Google Play,花了 12 周。错误可以出现,但是必须能尽可能被 AI 发现,然后 Error 就不能越过 checkpoint。
2026-09-11 10:50:59
144
原创 Dart Skills CLI 1.0 :AI 时代的 Dart 交付支持
在 1.0 的开发过程里也加入 「安装时检查 package security advisories」 的机制,同时限制了 package Skill 来源到直接依赖, 不过从工程上看,团队还是需要把 Skill 当成依赖内容的一部分进行审查,特别是里面存在可执行脚本、修改项目文件或者调用外部命令时,不然还是容易存在安全风险。这里其实就有了一个很有意思的变化,比如以前 package 的版本号约束的是“代码和 API”,现在同一个版本号开始间接约束。
2026-09-09 11:35:50
204
原创 Flutter 状态管理基准测评,一个很有趣的观点
比如如果只写一个循环,让 Riverpod、Provider、Signals 连续通知 10000 次,这样很容易得到一张漂亮的吞吐量排行榜,但是实际毫无意义,这种测试对真实 App 场景毫无帮助。真实情况下,用户点一下按钮,状态改变一次,接下来真正吃时间的通常是哪些Element被标成 dirty、多少个build()被重新执行,还有这些 Widget 后面有没有继续引起 layout 和 paint。
2026-09-08 08:43:38
380
原创 OpenAI:GPT-6 开始你需要给 Skill 和 AGENTS.md 做一次大扫除了
按照目前的 AI 情况,可能我们一年前建立起来的 CLAUDE.md、AGENTS.md、rules、Skill、system prompt,到了现在可能反而都是累赘,所以我们应该在每次模型升级之后,根据不同模型重新评估下整个 Prompt 的可靠性。也就是说,启动时模型会先拿到每个 Skill 的 name 和 description,Codex 还会带上文件路径,如果模型判断某个 Skill 和当前任务匹配以后,就会再读取完整 SKILL.md,创建和检查 PostgreSQL migration。
2026-09-07 08:56:33
380
原创 AI 时代,也许你的 Flutter 需要一套 Dartastic OpenTelemetry 监控
先简单说说 OpenTelemetry,大家应该不陌生,它是一个供应商无关的开源可观测性框架,可以用于检测、生成、收集和导出遥测数据,比如 traces、metrics和 logs 等,因为 OTel 是中立性开源工具,所以它可以和各种可观测性后端一起使用, 包括 Jaeger 和 Prometheus 这类开源工具或者其他商业化产品。。
2026-09-03 09:16:08
376
原创 Flutter A2UI 深度解析,它是怎么提供动态生产力的,然后为什么 A2UI 不只是 Flutter
实际上 Client-Side Functions 在 A2UI 里一直很重要,因为你只生产纯展示类 UI 就很局限了,但是比如 AI 根据用户要求生成一个订单页面,而页面里有数量输入框、单价、折扣、税费和总价,这时候如果用户把数量从 2 改成 3,总价本身也应该能实时变化。也就是用户把数量 Slider 从 2 改成 3,DataModel 会更新,然后依赖这个值的函数表达式重新求值,新的价格在客户端生成,相应 Widget rebuild,这里整个过程里 Gemini 可以完全不参与。
2026-09-02 09:41:00
205
原创 Android 17 + OkHttp 5.5.0 ,全新 ECH 下你的 HTTPS 域名可以请求时被安全隐藏
所以就算操作系统具备 ECH 能力,也还需要 App 使用的网络库主动接入,Android App 的 HTTPS 请求可能来自 OkHttp、Cronet、WebView、自研 C++ 网络栈或其他运行时,所以系统无法自动改写所有网络库的 DNS 和 TLS 流程。这可以降低攻击者或错误配置诱导客户端静默降级到明文 SNI 的风险,服务端 ECH 密钥轮换后,如果客户端拿到过期配置,OkHttp 也会验证外层公开域名的证书,再接受服务端给出的新配置并重试,而不会对任意网络错误直接关闭 ECH。
2026-09-01 16:32:57
601
原创 AI 时代,一个优化 Flutter 的重复代码工具 Deslop
现在基本都在用 AI 写代码,但是实际上 AI 经常缺少全局意识,甚至你就算写了规则,它也不一定遵守,比如一个昨天就看到一个网友发的这个,感觉就挺典型了:这次情况下,你如果没有仔细 Review ,有可能不知不觉里项目就已经整了一大批相似代码,比如相同的 Loading、Error、Snackbar、日期格式化和 Repository 转换逻辑。然后就是用在这个方面,它会解析 Dart 代码的语法结构,然后通过规则找到完全相同、变量改名后相同、局部修改后相似的代码,。是的,最重要的就是这个提供查询。
2026-08-31 09:01:35
400
原创 看懂大模型架构术语,帮助你理解目前常见的大模型开源架构
最近 GLM 5.3 Flash、Qwen 3.8 Flash、Hy4 Preview 都扎堆发布,一些术语介绍看的很多人都说什么玩意,那就干脆简单聊聊这些东西是什么,主要是能至少理解这些是什么东西,知道有啥用。首先最基础的而且最常见的一些简单术语就有:最后就是权重大小,例如腾讯 Hy4 的 770B/49B,这里 770B 权重都要放进 GPU 显存或者内存,粗略计算,比如 770B 的 BF16 权重大概需 1.54 TB(770B × 2 Byte ≈ 1.54 TB),如果是 FP8 就是接近 77
2026-08-30 19:46:48
435
原创 Firebase 如何让全球 Android 和 Flutter 开发者集体 Build Fail
那 Kotlin 的 Andorid 也一样要挂,这个等于是一个长期存在的 bug , Firebase Auth AAR 发布时漏了 Checker Framework 编译依赖,直到 FlutterFire 6.6.0 的 Kotlin 重写和 Kotlin 2.4 类型推断组合才发现问题,只能说这种 Bug 太典了,之前没问题只是没诱因,很多低级错误都是不知不觉沉淀下来的。的类型,需要读取 Firebase SDK class 文件里的完整类型信息。前几天看到这个的时候都无语了, 24 号发布的。
2026-08-28 08:57:04
213
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅