怎么用 Godot 导出 iOS 应用并上架 App Store?签名字段该填什么?

用 Godot 做 iOS 的人第一次打开导出预设,多半会被签名那几个字段卡住------Provisioning Profile UUID、Code Sign Identity、Team ID,每个都要填,但 Godot 不会告诉你这些值从哪来。我当初也是对着空白输入框发呆了半天。

另外要先说清楚:Windows 上导出之后拿不到能上架的 IPA ,Godot 产出的是需要 Xcode 继续处理的工程,编译签名归档还是得在 macOS 上做。这个没法绕。但那几个字段对应的证书和描述文件,完全可以在 Windows 上申请,最后把 IPA 传上去也不用回 Mac------我用的是开心上架(AppUploader)。

结论,哪一步绕不开 Mac

环节 我实际怎么做的
注册 Bundle ID、签发证书、生成描述文件 Windows 上做完
Godot 导出 iOS 工程 Windows 版编辑器就行
编译签名成 IPA 要 macOS------用 Xcode 或 macOS CI
提交 App Store Windows 上传
装到 iPhone 测试 扫码注册 UDID,再扫码装

顺带说明:我用的工具不是 Windows 专用的,网页版换成 macOS 或 Linux 的浏览器一样能开,桌面客户端也有 macOS 版。表里"不需要 Mac"说的是这一步摆脱了 Xcode、钥匙串访问、Transporter 的依赖。

第一步:填 Bundle Identifier 和 Team ID

在「项目 → 导出 → 添加 iOS 预设」里,Application 分组下的 Bundle Identifier 填反向域名,比如 com.yourcompany.gamename。顺手把 Short Version、Version(build number)、App Store Team ID 也填上。

Team ID 就是开发者账号那串 10 位字符,在开心上架的账号概览里能直接看到。这个字段空着或者填错的话,Xcode 归档阶段会报签名失败,而且错误信息不会明说是 Team ID 的问题。

对了,导出之前先确认「编辑器 → 管理导出模板」里装了和引擎同版本的模板,没装的话导出直接失败------这是引擎侧的事,和证书无关,但很多人第一次会撞上。

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

注册 Bundle ID :开心上架的「Bundle ID」页面点「新建 Bundle ID」,Identifier 填第一步那个字符串。创建后改不了。游戏要用 Game Center、推送、内购的,在这个 Bundle ID 的「权限」页面勾上再保存。

签发证书 :「证书」页面点「新建证书」,上架选发布签名证书,真机调试选开发签名证书。绑定 Bundle ID,填名称邮箱,设一个 .p12 保护密码,服务器不保存它,忘了只能吊销重签。勾上「使用开心上架服务同步证书」可以在打包用的那台 Mac 上直接下载,不用拷来拷去。

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

第三步:把 UUID 填进导出预设

Godot 的 iOS 导出预设里,Capabilities 下面有一组签名字段,一般包括:

  • Provisioning Profile UUID Debug / Release:填对应描述文件的 UUID;
  • Code Sign Identity Debug / Release :填证书的通用名称,比如 Apple Development / Apple Distribution
  • Export Method Debug / Release:Debug 用 Development,上架用 App Store。

UUID 从哪看是个常见问题。我的做法是在开心上架的「文件&提交」页面把 .mobileprovision 直接打开,详情里 UUID、绑定的 App ID、关联证书、有效期都列着,不用在 Mac 上敲 security cms 解一遍。

注意这里要的是 UUID(一串带连字符的十六进制),不是描述文件名称,填错了 Xcode 那边会找不到 profile。

具体字段名和分组在不同 Godot 版本里略有差异,以你用的版本为准。

第四步:导出并在 macOS 上编译

Godot 里点「导出项目」,选个输出目录,Windows 上会生成 iOS 工程文件。拷到 Mac 上打开:

bash 复制代码
open <导出目录>/<项目名>.xcodeproj

在 Xcode 里关掉 Automatically manage signing,手动选证书和描述文件(先把 .p12 导进钥匙串、.mobileprovision 拷到 ~/Library/MobileDevice/Provisioning Profiles/),然后 Product → Archive → Distribute App 导出 IPA。

CI 上就是把两个文件用 base64 存进加密变量,构建时解码导入,再用 xcodebuild archivexcodebuild -exportArchive 出包。

第五步:把 IPA 传上去

拿到 IPA 之后 Xcode Organizer 和 Transporter 都可以不用了。我一般先在开心上架的「文件&提交」页面把包打开看一眼签名信息,确认了再点「提交 App Store」,日志实时滚。

命令行:

bash 复制代码
appuploader-cli upload -f Game.ipa -u dev@example.com -p abcd-efgh-ijkl-mnop

-p 是 Apple 生成的 App 专用密码(xxxx-xxxx-xxxx-xxxx),不是登录密码。用 API 密钥也行:

bash 复制代码
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 描述文件。

这里有个容易忘的点:重建之后 UUID 会变,记得回导出预设把新的 UUID 填进去,Export Method 也改成 Ad Hoc,再重新导出编译。然后在「文件&提交」页面生成二维码让人扫码装。

Godot 最麻烦的其实就是导出预设里那几个字段,一旦搞明白值从哪来,后面就是机械操作了。编译那一环还得靠 Xcode,但证书、描述文件、上传、装机都能可以在 Windows 上实现。

相关推荐
2601_963870201 小时前
基于springboot的综合网上购物商场系统
微信小程序·小程序·课程设计
智慧物业老杨3 小时前
物业日常巡查的数智化重构:从“打卡式巡检“到“闭环式风控“
android·java·人工智能·系统架构·rxjava
alexhilton9 小时前
藏在设备上的秘密,终究藏不住
android·kotlin·android jetpack
2601_9638699511 小时前
力序健身房管理系统
微信小程序·小程序
2501_9159184112 小时前
iOS编程用什么软件好?主流工具Xcode、AppCode、CodeRunner与新兴快蝎对比
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
郑州光合科技余经理14 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
一 乐15 小时前
二手交易平台|基于springboot + vue二手交易平台(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序
hai_android15 小时前
Kotlin / Android 常用函数使用示例手册
android·java·kotlin
Lsetea16 小时前
Nginx报No required SSL certificate was sent:mTLS客户端证书排查
运维·nginx·https·ssl·openssl