尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Windows 上开发 Expo iOS,用 KXBuild 本地生成工程、真机调试与打包 ipa
这篇从新建一个 Expo 工程开始在 Windows 本机生成 iOS 工程装到 iPhone 上跑开发版最后打出能上传 App Store Connect 的 ipa。你需要 Apple 开发者账号、一台 iPhone 和数据线并且已经安装 KXBuild。第一次走完大约一小时大部分时间花在下载依赖上。本地构建和 EAS Build 怎么选 {#eas-or-local}EAS Build 在 Expo 的云端 macOS 上构建不用自己维护构建环境证书也可以交给 EAS 管理。代价是免费账户每月的构建次数有限高峰期要排队每次改完原生配置都要等一轮云端构建。eas build --local可以在本机构建但 iOS 端仍然要求 macOS 和 Xcode。在 Windows 上用 KXBuild 本地构建不排队、不占云端次数还能对原生代码下断点。需要你自己准备证书和描述文件ios 目录也在本机生成。两种方式可以并存团队里有人用 EAS 出正式包、有人在 Windows 上本地调试互不影响。新建 Expo 工程 {#create}已有工程在 VS Code 中「文件 → 打开文件夹」打开工程根目录即可跳到下一节。没有现成工程的用 Expo 官方命令新建。工程的父目录用短路径node_modules 层级很深放得太深在 Windows 上容易遇到路径过长的错误。cd D:\work npx create-expo-applatest expohello新建完成后在 VS Code 中打开D:\work\expohello。也可以直接用 KXBuild 的模板新建以下两种做法任选其一。VS Code 插件。命令面板运行KXBuild: 新建项目模板选「Expo 应用」。命令行。执行kxbuild project create -t expo_app -n expohello -o D:\work。模板的说明见项目模板。在 app.json 里填好 iOS 配置 {#app-json}Expo 工程的 ios 目录是按 app.json 生成的所以在生成之前先把 iOS 相关的字段填好能省掉一次重新生成。下面只列出和 iOS 相关的字段其他字段保持原样。{expo:{name:expohello,version:1.0.0,ios:{bundleIdentifier:com.example.expohello,buildNumber:1,appleTeamId:ABCDE12345,infoPlist:{NSCameraUsageDescription:用于扫描二维码,NSMicrophoneUsageDescription:用于录制视频中的声音}}}}各字段的作用如下。字段作用version商店里显示的版本号对应 CFBundleShortVersionStringios.buildNumber构建号对应 CFBundleVersion每次上传 App Store Connect 都要比上一次大ios.bundleIdentifierBundle ID要和开发者后台注册的 App ID、描述文件一致ios.appleTeamId开发者账号的 Team ID在 developer.apple.com 的 Membership 页能看到ios.infoPlist直接写进 Info.plist 的键权限说明文字放在这里用到相机、麦克风、相册、定位的 App 必须写对应的权限说明缺了会在调用时直接闪退审核也会被拒。有些 Expo 库例如 expo-camera支持在plugins里配置权限文字按该库文档写即可效果相同。签名需要的 .p12 证书和 .mobileprovision 描述文件放进证书目录开发阶段用 Apple Development 证书和包含这部 iPhone UDID 的 Development 描述文件获取和放置方法见证书与签名。体检并安装原生依赖 {#doctor}第一次打开工程必须先体检。它会检查 Expo 环境并生成、准备好 iOS 端的工程完成后工程下多出 ios 目录。以下两种做法任选其一。VS Code 插件。在 KXBuild 视图标题栏「···」中运行「体检并修复开发环境」。命令行。执行下面的命令。kxbuild doctor D:\work\expohello体检之后进入 ios 目录安装原生依赖。第一次会下载较多内容时间取决于网络。cd D:\work\expohello\ios pod install完成后 ios 目录下会有expohello.xcworkspace之后构建都用它。CocoaPods 的更多用法见 CocoaPods。在 iPhone 上运行开发版 {#run}先用数据线连上 iPhone解锁后点「信任此电脑」并在「设置 → 隐私与安全性 → 开发者模式」中打开开发者模式手机会重启一次。驱动和手机设置见设备准备。开发版的 JS 从电脑上的 Metro 加载所以先另开一个终端在工程根目录启动 Metro。cd D:\work\expohello npx expostart然后在 KXBuild 视图中选中这台 iPhone按 F5。KXBuild 会依次构建、签名、安装、启动 App 并附加调试器。第一次调试某个 iOS 版本时会自动下载对应的符号库有几个 GB只需一次。App 启动后改 JS 或 TypeScript 代码保存即可自动刷新不用重新构建。两种代码各用各的调试器。原生代码ios 目录下的 Swift、Objective-C在 VS Code 中下断点F5 启动后直接生效用法见运行与调试。JS 代码在运行npx expo start的终端按j打开 Expo 的调试器在里面下断点。App 一打开就红屏通常是手机连不上电脑上的 Metro。确认手机和电脑在同一个局域网Windows 防火墙放行 Node.js 或 Metro 的 8081 端口。改了原生代码要先停止调试再按 F5调试工具栏上的「重启」不会重新编译。修改 app.json 之后重新生成 iOS 工程 {#regenerate}改了 Bundle ID、版本号、权限说明、图标或者新装了带原生代码的库都要重新生成 ios 目录否则改动不会进入 App。体检只在 ios 目录不存在时生成它所以要先删掉旧的 ios 目录再体检。cd D:\work\expohelloRemove-Item-Recurse-Force.\ios kxbuild doctor D:\work\expohello cd ios pod install插件用户删掉 ios 目录后在 KXBuild 视图运行「体检并修复开发环境」再到 ios 目录执行pod install效果相同。重新生成会覆盖 ios 目录下的所有手动修改。需要长期保留的原生配置写进 app.json 或 config plugin这是 Expo 推荐的做法。如果你的工程已经把 ios 目录纳入版本管理、直接改原生文件就不要删目录改用 属性列表编辑器和工程设置编辑器直接修改。打出 Release ipa {#release}上架前先确认两件事。ios.buildNumber比上一次上传的大改过就按上一节重新生成。证书目录里有 Apple Distribution 证书和 App Store 类型的描述文件用 Development 描述文件签的包上传时会被拒。Release 构建会把 JS 打包进 App运行时不再依赖 Metro。以下两种做法任选其一。VS Code 插件。在 KXBuild 视图的「构建配置」节点切到 Release命令面板运行KXBuild: 构建。命令行。在工程根目录执行下面的命令。kxbuild build.\ios\expohello.xcworkspace-c Release工程的 Release 配置没有指定发布证书时命令行加-D CODE_SIGN_IDENTITYApple Distribution临时覆盖。构建完成后得到ios\build\expohello.ipa结构和 Xcode 导出的一样。在 Windows 上用 Appuploader 上传到 App Store Connect处理完成后出现在 TestFlight 页先发给测试员验证再提交审核详见发布与上架。常见问题 {#faq}体检没有生成 ios 目录。带-v再运行一次kxbuild doctor D:\work\expohello -v输出里会写明失败的步骤多数是依赖没装完或网络中断。编译报找不到 Pods 里的头文件或模块。确认已经在 ios 目录执行过pod install并且构建的是.xcworkspace而不是.xcodeproj。报文件名过长或找不到文件。把工程移到D:\work这类短路径下删掉 ios 目录重新生成。安装后启动就退出提示 didn’t start in time。App 很可能启动即崩溃常见原因是缺少权限说明或原生库没有重新生成。查看设备日志和崩溃报告的方法见运行与调试和排错与 FAQ更多信息可以查看官网教程https://www.kxbuild.net/zh
RELATED

相关推荐

UDP组播实现IPC自动探测:Python收包解析与批量巡检避坑

UDP组播实现IPC自动探测:Python收包解析与批量巡检避坑

简介:围绕海康网络摄像机(IPC)自动探测的C示例工程,面向从事安防系统集成、ONVIF对接与网络通信开发的中高级开发者,解决大型监控网络中免手工逐台配置、快速发现同网段设备的问题。其思路是把UDP套接字设为组播模式并…

📅 2026/10/29 11:15:31
7代酷睿Win7核显驱动手动改INF安装指南

7代酷睿Win7核显驱动手动改INF安装指南

简介:面向仍在Windows 7环境使用Intel第七代酷睿(如i5-7500、i7-7700)并需要解决HD Graphics核显驱动兼容问题的用户与旧机维护人员,这份驱动合集围绕系统识别、驱动安装与设备状态校验场景整理,适合系统重装、老平台维…

📅 2026/10/29 11:15:31
C# WinForms 自绘仪表控件:圆表、直表、旋钮、开关与指示灯实战

C# WinForms 自绘仪表控件:圆表、直表、旋钮、开关与指示灯实战

简介:这份资源面向 C# 桌面开发与工控组态界面设计的学习者,聚焦模拟真实设备的仪表控件实践。围绕圆表、直表(测量标尺)、旋钮、开关与指示灯等常见控件,给出可运行的示例工程与配套 ActiveX 组件,解决了自…

📅 2026/10/29 11:15:31
MORE NEWS

更多资讯

📰

SSRF漏洞实战指南:协议绕过、内网探测与WAF突破

1. 项目概述:为什么SSRF是靶场里绕不开的“必修课”“靶场练习day12--SSRF”这个标题看似平淡,但背后藏着渗透测试工程师日常最常遭遇、也最容易被低估的一类漏洞——服务端请求伪造(Server-Side Request Forgery)。我带过不少刚入…

📰

AI听声辨位技术:原理、实现与应用场景

1. 项目概述 "听声辨位"这个项目听起来像是某种利用声音进行定位的技术实现。作为一个在音频处理领域摸爬滚打多年的从业者,我见过太多关于声音定位的尝试,但真正能做到实用化的并不多。这个项目标题虽然简短,但包含了几个关键信息…

📰

强化学习在医疗影像标注中的应用与优化

1. 项目概述:当强化学习遇上医疗影像标注 医疗影像数据标注一直是AI落地医疗领域的核心瓶颈。传统人工标注不仅成本高昂(单个CT扫描标注费用可达数百元),更面临专业医师资源稀缺的困境。我在参与某三甲医院肺部结节检测项目时&…

📰

基础算法专项训练:高效刷题方法与实战解析

1. 国庆做题记录:基础算法专项训练的价值与方法 作为一名算法工程师,每逢长假我都会给自己安排专项训练。去年国庆期间,我集中刷了87道基础算法题,收获远超预期。这种短期高强度的刻意练习,对夯实基础、突破瓶颈有奇效…

📰

达梦数据库核心技术解析与应用实践

1. 达梦数据库技术概述:国产数据库的崛起之路 达梦数据库作为国产数据库"四朵金花"之一(与OceanBase、GaussDB、TiDB并列),已经悄然走过了三十余年的发展历程。这个源自华中科技大学的数据库项目,如今已成长…

📰

信号与系统知识地图:三层响应驱动的时频域分析框架

简介:本资源是一份面向电子信息类专业本科生与考研学生的《信号与系统》核心考点精要复习文档,聚焦课程重难点突破与应试梳理。全文系统覆盖信号分类与典型奇异信号(阶跃、冲激及其性质)、时域运算(移位、反褶、尺度变…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬