怎么在 Windows 上用 GameMaker 打包 iOS 游戏并上架 App Store?

0 阅读5分钟

先说一个很多人不爱听但必须讲清楚的事实:GameMaker 做 iOS,你得有一台真实的 Mac。官方帮助文档写得很直白——iOS/iPadOS 目标需要一台独立的物理 Mac,Windows 上的 IDE 只是把工程传过去、由那台 Mac 上的 Xcode 完成编译。文档里还提了一句,Apple 的开发者协议本身就要求用真实的 Mac 构建和提交,所以别指望虚拟机或者什么绕过方案。

不过好消息是:你不用坐到那台 Mac 前面工作。我这边的做法是把 Mac 当成一台网络里的编译机,开发全在 Windows IDE 里做;证书、描述文件、IPA 上传、装机测试这些则用开心上架(AppUploader)在 Windows 上处理。那台 Mac 一年也没人登录几次。

哪一步真绕不开 Mac,答案是

环节我实际怎么做的
注册 Bundle ID、签发证书、生成描述文件Windows 上做完
写代码、调试、做资源Windows IDE
编译签名成 IPA要一台联网的物理 Mac,Windows IDE 把工程传过去
提交 App StoreWindows 上传
装到 iPhone 测试扫码注册 UDID,再扫码装

说明一下:我用的工具本身在 macOS 上也能用(网页版不挑系统,桌面客户端有 macOS 版)。表里"不需要 Mac"是指这一步不再需要 Xcode、钥匙串访问或 Transporter,不是说这工具只服务 Windows 用户。

第一步:把 Bundle identifier 和 Team ID 定下来

在 Game Options → iOS 里填 Bundle identifier,用反向域名,比如 com.yourcompany.gamename。同一页还有 Team ID,就是你 Apple 开发者账号那串 10 位字符——这个在开心上架的账号概览里能直接看到,不用专门登 developer.apple.com 去翻。

Bundle identifier 后面要和 Apple 注册的 Bundle ID、描述文件绑定的 App ID 三处完全一致,大小写也算。这三处对不上是 GameMaker 论坛里 iOS 构建失败最常见的原因。

第二步:在 Windows 上签出证书和描述文件

注册 Bundle ID:开心上架的「Bundle ID」页面点「新建 Bundle ID」,Identifier 填上一步那个字符串。创建后改不了,我第一次随手填了个名字,后来想改只能新建一个。游戏要用 Game Center、内购、推送的,在这个 Bundle ID 的「权限」页面勾上再保存。 注册bid 签发证书:「证书」页面点「新建证书」,上架选发布签名证书,真机调试选开发签名证书。绑定上面的 Bundle ID,填名称邮箱,设一个 .p12 保护密码——把证书导进那台 Mac 的钥匙串时要输,服务器不保存它,忘了只能吊销重签。

建议勾上「使用开心上架服务同步证书」。那台编译用的 Mac 大概率不在你手边(我们的放在另一间屋),靠云备份直接在上面登录下载同一张证书,比远程传文件省事得多。

生成描述文件:「描述文件」页面点「新建描述文件」,上架选 App Store 类型,内测选 Ad Hoc 并勾上测试设备,真机调试选开发类型。关联上面的 Bundle ID 和证书,提交后下载 .mobileprovision。

私钥和 CSR 都在本机生成后封进 .p12,不用在 Mac 上走「钥匙串访问 → 从证书颁发机构请求证书」那一套。

第三步:把签名材料装到那台 Mac 上

在 Mac 上执行(或者把文件拷过去双击导入):

# 导入证书(含私钥)
security import dist.p12 -k ~/Library/Keychains/login.keychain-db -P "你的p12密码" -T /usr/bin/codesign

# 描述文件放到 Xcode 认识的位置
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
cp AppStore.mobileprovision ~/Library/MobileDevice/Provisioning\ Profiles/

那台 Mac 上还得装好 Xcode 和命令行工具,版本要在你这个 GameMaker 版本支持的范围内——官方有一份 Required SDKs 的对照表,升 Xcode 之前最好先查一下,我升过头一次,构建直接挂在链接阶段。

第四步:在 Windows IDE 里连上 Mac 并构建

在 GameMaker 的目标设备管理里添加一台 Mac 设备,填主机名/IP、Mac 上的用户名和密码,测试连接通过之后,目标平台选 iOS,直接 Create Executable 就行。IDE 会把工程传过去,在那边调 Xcode 编译,产物再传回来。

有个实践经验值得抄:官方明确建议两台机器都走网线而不是 WiFi,尤其是用 YYC 编译大工程的时候。WiFi 下传输大工程容易中途出问题,我们换成有线之后失败率明显下降。

第五步:把 IPA 传上去

拿到 IPA 之后就跟 Mac 没关系了。我一般先在开心上架的「文件&提交」页面把包打开看一眼签名信息——Bundle ID、描述文件类型、证书有效期,确认了再点「提交 App Store」,上传日志实时滚。

想写进脚本就用命令行,在 Windows 上直接跑:

appuploader-cli upload -f Game.ipa -u dev@example.com -p abcd-efgh-ijkl-mnop

-p 是 Apple 生成的 App 专用密码(xxxx-xxxx-xxxx-xxxx),不是 Apple ID 登录密码。团队用 API 密钥更合适,它属于团队、能单独吊销:

appuploader-cli upload -f Game.ipa --api-key <KeyID> --api-issuer <IssuerID> --private-key Auth_Key.p8

密钥方式只收 .ipa,且 App 要先在 App Store Connect 里建好。

第六步:发内测包

「设备」页面点「注册设备」,二维码发群里让人扫上报 UDID(一年 100 台名额,免费账号只有 3 台)。回描述文件那边点「重建」,它会自动用当前有效的证书和设备重新生成一份 Ad Hoc 描述文件,不用从头新建。

把新描述文件拷到 Mac 上,重新构建一次,然后在「文件&提交」页面生成二维码,测试的人扫码就装上了,不用连电脑。

GameMaker 这条线绕不开那台 Mac,这点得认。但你可以把它彻底当成一个黑盒——配好一次网络连接和 Xcode,之后除了偶尔升级基本不用碰。真正需要人反复操作的证书维护、描述文件重建、包上传,全都能在 Windows 这边顺手做完.我用的是开心上架网页版,打开就能用,Team ID 和描述文件详情在里面查也方便。