折腾了好几天总算在 windows 系统本地打包 expo 项目出 apk 了,分享下经验

5 小时 19 分钟前
 HMYang33

创建项目和写代码就不说了,主要说一下大部分视频教程未提及的打包部分

主流都是在推荐 eas 云打包,不仅排队时间长,还总是排了老长的队又很容易出错,有时甚至是云打包所用的机器网络差点意思导致依赖安装失败了。就断掉整个打包流程。然后你就需要重新排队打包。不出意外又要排队两个小时。有点离谱。

eas 也支持--local 参数进行本地打包,但是本地打包还要登录 eas 账号,没一点代码安全感。很离谱。

不仅没安全感,就算你登上了,也会提示你 windows 不支持。离离原上谱。

如果使用 windows subsystem for linux 又会大概率牵扯出不会正确使用 WSL 的各种疑惑。而且 expo 文档上也不会告诉你怎么通过 wsl 打包,因为 expo 团队就没想着兼容 windows 平台,也不会给你测试 wsl 能不能正常用于打包。

有没有安全且方便的 windows 系统的打包 expo 项目的 apk 的方式呢,有的兄弟有的

1.下载并安装 Android Studio

https://r3---sn-i3b7knlk.gvt1.com/edgedl/android/studio/install/2025.1.3.7/android-studio-2025.1.3.7-windows.exe

打开 exe 文件,跟着安装向导下一步下一步...

2.Android Studio 初次运行需要下载的东西

打开安装好的 Android Studio ,

点击不给谷歌发送使用数据,

提示需要下载 SDK 和安卓模拟器,下一步到 License 界面,会展示 android-sdk 的许可内容,点下面接受的单选按钮

点击左侧 android-sdk-preview-license 查看第二个许可内容,再点下面的接受单选按钮

SDK 和安卓模拟器的下载需要消耗 50 分钟(我的网速是 1.7MB/s)

时间宝贵,你可以先干点别的。

下载好了就重启一次电脑

感觉内存不够用的可以打开虚拟内存(推荐勾选“自动管理所有驱动器的分页文件大小”)。

3.在你的项目目录安装 node modules 并进行预构建

使用 npm ci 强制使用 package-lock.json 的依赖清单安装依赖

使用 npx expo prebuild 构建出 android 工程目录

4.使用 Android Studio 打开构建出的 android 工程目录

打开之后自动执行更新索引和下载项目的依赖包,这一步耗时70 分钟(我用的 4 核 CPU ,网速是 1.7MB/s)

再次提醒,时间宝贵,你可以先干点别的。

5.1 打包出调试基座

点击左上角三个横线,鼠标放到 Build ,再放到二级菜单的 Generate App Bundles or APKs,点击 Generate APKs

这一步同样耗时巨大,需要60 分钟

5.2 打包出生产 APK

点击左上角三个横线,鼠标放到 Build ,点击 Generate Signed App Bundle or APK

选择 APK 单选框,下一步要求你使用签名,有的话就选创建好的,没有的话就创建新的

再下一步,在 debug 和 release 之间选择 release ,点蓝色的 create 按钮。大部分依赖都在制作调试基座时缓存过了,所以这次打包大概五分钟后就生成好了

5.2.1 创建新签名文件

找个存放秘密的好地方,新建文本文件,并改名成后缀为 jks 的文件如 xxx 的签名.jks

在 Android Studio 里面点 create new..., 第一个输入框是填你刚刚创建的 jks 文件路径,可以点击输入框右侧的文件夹图标选取你的 jks 文件。

Validity Years 是签名有效时长多少年,如果过了这个时间需要重新制作签名。因签名文件变化也会导致老版本无法升级成新版本。只能卸载重装为新版。

剩下的输入框如果没什么特别的安全性要求,无脑都写一样的就能用。如果有应用安全的要求就好好写。

注意事项

引入新的原生模块时需要重新制作调试基座,因为旧的调试基座不包含这部分新的原生代码。

要用的系统权限需要在 app.json 里面提前列出来,并打入调试基座,否则代码里直接请求获取权限会得到 never ask again(拒绝且不再询问)

顺带吐槽一下 Android studio 是真的很占磁盘,搞完这一套流程就占用我 25GB ,就算安装到别的盘,也会吃掉 C 盘大约 10GB 的空间

457 次点击
所在节点    React
5 条回复
xbdsky
4 小时 58 分钟前
下载慢,可以加代理试试,C 盘确实占用很多
zhengfan2016
3 小时 10 分钟前
25GB 不算多吧,手机下个原神,鳴潮都得 30GB 了,原神电脑版,三角洲这些 90GB+,xbox 极限竞速地平线,2077 至少也得 70GB ,有些像星空的大作上百 GB 都有,除了 256GB 的 mac 用户,25GB 真不算什么
HojiOShi
2 小时 23 分钟前
* 除了第三点,这不就正常的打包 Android 项目的流程,至于弄几天时间?
* C 盘占用就是 Gradle 缓存大而已,GRADLE_USER_HOME 环境变量设置一下,再把.gradle 目录转移掉也就差不多了。
HMYang33
1 小时 27 分钟前
@zhengfan2016 公司配的电脑,磁盘只有 256GB ,空间很紧张的。。。
HMYang33
1 小时 23 分钟前
@HojiOShi 首先感谢你的方案,解决了 gradle 缓存占太多 C 盘空间。

再回复第一条,因为我是新手,在接触 react-native 的时候遇到了很多对新人来说很棘手的事,而且我只是下班时摆弄两个小时,说是折腾了几天一点也不为过

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1159286

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX