今天尝试打包看了下发现几个问题:1. uniappx 的构建的APK包是之前的好几倍(多出了90-100MB的体积);2. 打包后解压发现代码不会被解析成 kt语法,目录结构跟 vue2的结构是一样的还是说我找的目录不对;3. 如果只是沿用的 vue2的打包模式做了下优化,那热更新是不是也可以参照之前的模式;
这个是今天打出来的包和包解压出来的文件路径展示;
- 发布:2026-09-22 09:47
- 更新:2026-09-22 10:02
- 阅读:26
欢迎到专业群( uni-app x技术交流群 ) 咨询,群中有相关专业的管理员和群友。
先给结论:uni-app x 的安卓包确实会编译为 kt(kotlin),但不是把 apk 解压后还能直接看到 kt 源码。你现在看到的目录结构像 vue2/uni-app 运行时目录,通常是因为找的位置不对,或者你把“资源目录”和“代码编译产物”混在一起看了。
1)为什么 apk 比之前大很多(多 90~100MB)
最常见原因有两类:
情况 A:你用了蒸汽模式(vapor),体积会比 VDOM 大
官方 issue 里有明确结论:
- 5.15 安卓还不支持蒸汽模式
- 5.24 开始 android 支持蒸汽模式
- 蒸汽模式比 VDOM 多了一个 v8,所以包体积会更大
这是 issue 系统里的官方回复,参考:
uniappx 5.15 升级到 5.23/5.24 打包体积从 14MB 到 30MB
情况 B:你打包时 cpu 架构选了多个
知识库里也明确说过:
- 安卓 cpu 类型选多个,会导致 apk 体积变大
所以如果你勾了 arm64、armeabi-v7a、x86_64 之类的多架构,体积会明显增加,甚至接近翻倍。
2)为什么解压 apk 后没看到 kt,目录结构还像 vue2
这个现象不代表没编译成 kt。
原因是:
- uts 在 android 上会先编译为 kotlin 源码
- 但最终打进 apk 时,kt 会再编译成 class/dex
- 所以你直接解压 apk,通常看不到 kt 源文件
- 你看到的
assets/hybrid/static/uni_modules这类目录,是代码包资源目录,不是最终代码形态
官方文档对这块有明确说明:
- uni-app x 应用安装后,代码包文件有 4 个目录:
assets、hybrid、static、uni_modules - 这些是代码包文件目录,不是 kt 源码目录
参考:
uni-app x 文件系统-代码包文件
正确的查看方式
如果你想验证“是不是编译成 kt”,不要只看 apk 解压目录,应该看:
- 项目编译后的
unpackage目录 - 官方文档明确说:
- 编译 uni-app x 项目时,在
unpackage目录下可以看到编译后生成的 kt 文件 - 解压 apk 主要是看有没有 js 引擎、flutter 引擎、webview,而不是找 kt 源文件
- 编译 uni-app x 项目时,在
官方说明参考:
uni-app x 是什么?/跨平台比较
所以你现在“没看到 kt”大概率是找错地方了。
3)这是不是沿用 vue2 的打包模式做了优化?
不是。
uni-app x 不是简单沿用 vue2/uni-app 的打包壳。官方原理是:
- uts 编译到 web 输出 js
- 编译到 android 输出 kotlin
- 编译到 ios 输出 swift
- 编译到鸿蒙输出 ets
也就是说,uni-app x 的 android 端不是“vue2 那套运行时直接套壳优化”,而是uts + uvue 的原生编译链路。
但你要注意一个关键点:
蒸汽模式和 VDOM 模式,产物形态会不一样
- VDOM 模式
- 蒸汽模式(vapor)
你现在如果用的是蒸汽模式,android 端仍然会有 js/ts 页面逻辑运行能力的支持,这和“android 编译为 kt”并不冲突。
因为:
- uts 插件、原生能力部分会走原生编译
- 蒸汽模式页面逻辑可以写 js/ts/uts
- 但 apk 里最终看到的资源结构,和你在 web/uni-app 时代理解的目录结构并不是一回事
4)热更新还能不能按以前 uni-app 的模式理解?
不能简单照搬。
知识库里有两条很关键:
官方 FAQ 的结论
- uni-app x 打包后目前不能热更新
- 开发期间可以热刷
- 蒸汽模式下的 3 端 app 会推出发布后热更新,请关注更新
uts 插件的打包结论
- uts 插件打包后编译为纯原生二进制代码
- 不支持 wgt 热更新
参考:
UTS 插件介绍-打包
所以,不能把以前 uni-app 那套 wgt 热更新机制,直接套到 uni-app x 上。
5)你现在这个包,建议怎么排查
你可以按下面顺序确认:
第一步:确认是不是蒸汽模式
看你的 manifest.json 是否启用了 vapor。
如果启用了蒸汽模式,android 包体积变大是有官方依据的。
第二步:确认打包时 cpu 架构
如果你勾了多个 cpu 类型,先只保留常用架构试试,比如只看 arm64-v8a 的体积变化。
第三步:不要在 apk 解压目录里找 kt
改为看:
- 项目的
unpackage编译目录 - 生成产物里是否存在 kotlin 中间产物
- apk 内部是否有 dex/class,而不是找
.kt文件
第四步:如果你关心热更新
按当前知识库结论:
- 不要默认 uni-app x 支持发布后热更新
- 如果你有热更新诉求,要持续关注官方后续能力,不要按旧 uni-app 的 wgt 方案直接迁移
6<|sep|>)我对你这三个问题的直接回答
1. 安卓包变大好几倍
很可能和以下因素有关:
- 蒸汽模式引入额外运行时
- cpu 架构多选
- debug/release、资源、插件、so 库变化
2. 打包后解压没看到 kt
正常。
因为 kt 源码通常不会原样出现在 apk 里,最终是编译后的产物。你看到的目录是代码包资源目录,不是源码目录。
3. 热更新能不能沿用之前模式
不能。
当前知识库结论是:uni-app x 打包后目前不能热更新,且 uts 插件不支持 wgt 热更新。
如果你愿意,我可以继续帮你判断你这个包体积暴涨到底是“蒸汽模式导致”还是“cpu 架构/资源/插件导致”。你把这 3 项发我:
manifest.json里是否开启 vapor- 打包时勾选的 cpu 架构
- 是否新增 uts 插件或原生 sdk
小小的小明 (作者) - 美好的一天~
我也看了 unpackage 目录和编译后的uni_modules 发现只有这个目录的插件是会被打包成 .dex/.kt但是 pages 下的目录uts并没有生成对应的 .kt或.dex文件而是 vue模式 app-service.js