SDK 升级踩雷现场:expo-av 已被拆成两个包,AI 还在写老写法
【免费下载链接】skillsA collection of AI agent skills for working with Expo projects and Expo Application Services项目地址: https://gitcode.com/GitHub_Trending/skills9/skills
凌晨两点,开发者群里又炸了。
有人刚把 App 升级到新版 Expo SDK,编译一路绿灯,结果一打开:视频黑屏,音频没声,录音按钮点下去毫无反应。
更让人崩溃的是,他转头问 AI 助手“帮我改一下播放器”,AI 熟练地写出一段expo-av的老代码,语气还挺自信。
问题在于,expo-av这个包,官方已经不再推荐了。它被拆成了两个新包:expo-audio管声音,expo-video管画面。
AI 不是变笨了,是它手里的说明书,还停留在两年前。
最近在开源圈热度不低的Expo Skills,干的就是这件事:给 AI 编程助手发一本“最新版施工手册”。
一、这东西到底是个啥?
说人话:它是 Expo 官方团队亲自下场写的一套“AI 技能包”,MIT 协议开源,目前打包了 25 个技能,覆盖建项目、做导航、写动画、上架应用商店、云构建、热更新等等。
你可以这么理解:
以前的 AI 编程助手,像一个刚毕业的高材生,脑子好使,但没在你们公司上过班,不知道内部流程。
Expo Skills 就是塞进它手里的员工手册——哪个包被废弃了、新版本该怎么写、哪些坑官方已经替你踩过了,一条条写清楚。
其中有本最厚的“搬家指南”,叫expo-upgrade,专门管 SDK 升级这档子破事。
而它翻开第一页,就点出了这次全网哀嚎的根源。
二、最狠的一刀:一把瑞士军刀,被拆成两把专用刀
早年做 App,音视频全靠expo-av一个包搞定。播放、录音、视频、全屏,一个入口全包,省心。
但官方后来发现,这玩意儿太臃肿了。就像一把瑞士军刀,什么都能干,什么都不算精。
于是它被一刀切开:
- 管声音的,叫
expo-audio - 管画面的,叫
expo-video
听起来只是换个名字?不,写法几乎是重写。
以前是“先造一个播放对象,再喊它播放”;现在是“用一个钩子直接把播放器抱在怀里”,创建、加载、销毁全自动。以前要手动调音量、调进度、改循环;现在直接改属性,像调电视遥控器一样顺手。
最阴的一个坑,是单位变了。
老版本里,时间单位是毫秒;新版本改成了秒。也就是说,原本写 30000 的地方,现在得写 30。
这个坑有多隐蔽?编译不报错,运行不崩溃,只是你的进度条像抽风一样,一点就飞到片尾。很多团队查了两天才发现,原来是少除了个 1000。
还有一个更狠的:安卓上,expo-av和expo-video同时装着,视频会直接黑屏。
官方的说法很干脆——装新的之前,先把老的卸干净。这不是建议,是硬性要求。
至于那些细节差异,手册里也全列了:播放完了不会自动回到开头,想重播得先手动拉回 0 秒;同一个播放器不能同时塞进多个视频窗口,安卓上会黑;想换片源不能用“重新创建”,得用官方给的替换方法。
这些都不是玄学,全是真实踩出来的坑。
三、升级不是按个按钮,是走一套流程
很多人以为升级 SDK 就是改个版本号、装个包。手册里给的步骤,反而更像去医院体检:
第一步,把版本对齐。先升主包,再让工具把一堆依赖统一拉到匹配版本。这一步最容易出现“装了一半”的尴尬局面。
第二步,做检查。官方有个诊断工具,会把版本冲突、缺失的依赖、配置错误一次性列出来。它像个不讲情面的老医生,哪里有问题直接点名。
第三步,清缓存重装。这一步最反直觉——很多人改完代码还在报错,其实不是代码的问题,是旧缓存还在作祟。把依赖目录、构建缓存、打包缓存全清一遍,往往就好了。
手册还提醒了几个特别“反人类”的点:
你的项目配置里,可能躺着一堆历史配置项。它们多半是当年为了绕开某个 bug 临时加的,几年过去,bug 早修了,配置还留着,反而成了新版本的绊脚石。升级时,这几条要一条条重新审视。
还有patches目录里的补丁文件,也该清一清了。
更妙的是,像 babel 配置、打包配置这些文件,如果里面只剩下官方默认那几行,官方直接建议:删了。留着只是心理安慰。
四、它顺手帮你避开了几个更大的雷
除了音视频,这几年的 Expo 升级,还有几处“静悄悄的大改”:
导航的写法变了。从某个版本开始,代码里不能再直接引用 React Navigation 的包,得统一走 Expo Router 的入口。官方甚至给了自动改写工具,一行命令扫全项目,比人手一个个改靠谱得多。
底部标签栏的写法变了。以前的图标、文字、角标是分开导入的组件,现在得挂在标签项的属性下面。老写法不一定立刻报错,但会慢慢失效。
React 也换代了。新版 React 里,读取上下文的老写法被简化,forwardRef这种“套娃”也不再必需。同时官方还建议打开编译器开关,让它自动帮你做性能优化,省掉一堆手动缓存。
还有一个内存坑要特别提醒:官方明确写了,某个区间的 SDK 版本,在配合动画库使用时,可能出现内存占用暴涨的问题。所以别一步一挪地升,直接从老版本跳到最新的稳定版,反而更安全。
你看,这些东西,哪一条是能靠“问 AI 一句”问出来的?
五、所以,普通人能用吗?
这里要泼盆冷水:它不是给普通用户装的应用,是给写 App 的人用的工具。
你不需要显卡,不需要服务器,一台普通笔记本就够。它免费开源,安装方式也很轻——用 Claude Code 或 Codex 的,在插件市场里点一下;用 Cursor、Copilot、Windsurf、Gemini 这些的,在项目根目录跑一条安装命令,重启一下助手就行。
装好之后,你不需要记住那些绕口的包名。直接跟 AI 说:“帮我把这个项目升到最新 SDK”“这个播放器写法是不是过时了”“升级完视频黑屏怎么办”,它会自己去翻对应的手册章节。
最适合谁?
一个人扛一个 App 的独立开发者;三五个人小团队里那个“什么都得管”的技术负责人;接外包、手上同时维护好几个老项目的自由职业者;还有被 AI 自信满满的错误代码坑过、现在看到“已为你完成”就头皮发麻的人。
说实话,它也不是万能药。它不替你跑测试,不替你上真机验证,更不会帮你决定“这个功能到底要不要重写”。它做的是把“官方最新说法”准确递到 AI 手上,剩下的判断,还得人来。
写在最后
这次 expo-av 被拆包引发的集体翻车,其实说明了一件挺有意思的事:
AI 编程的真正瓶颈,早就不是“会不会写”,而是“知不知道现在该怎么写”。
网上的教程、博客、问答,大多停留在旧版本;模型的训练数据,也有天然的时间差。于是出现一个荒诞场面:人类已经搬家了,AI 还在照着老地址送快递。
Expo Skills 这类“官方技能包”的价值,就在这儿——它不教 AI 变聪明,它只是把最新的地图,塞进了 AI 的口袋。
最后想问一句:你升级依赖的时候,踩过最离谱的坑是什么?是那种“代码一个字没改,功能自己没了”的?评论区聊聊,说不定你那个坑,正是别人明天要掉的。
【免费下载链接】skillsA collection of AI agent skills for working with Expo projects and Expo Application Services项目地址: https://gitcode.com/GitHub_Trending/skills9/skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考