Unity 打包 iOS,Xcode 构建并上传 App Store

一、准备工作(环境、账号、证书与项目基础)

  • 系统与工具

    • macOS:使用与最新 Xcode 兼容的版本。
    • Xcode:从 Mac App Store 安装最新稳定版(建议与当前 App Store 必需的 Xcode 主版本保持一致)。
    • Unity:使用一个长期支持或稳定版本;安装 iOS Build Support(含 IL2CPP 与 Mac Build Support)。
    • CocoaPods:若项目或三方 SDK 使用 Pod,安装 pod 工具:sudo gem install cocoapods
    • 命令行工具:Xcode 安装后运行 xcode-select --switch /Applications/Xcode.app
  • Apple 开发者账号

    • 申请与开通:加入 Apple Developer Program(个人或公司)。
    • 角色分配:确保有 App Manager、Developer、Access to Certificates 等权限,便于创建 App、证书与上传构建。
  • 证书、App ID、Provisioning Profile

    • App ID(Bundle ID):在开发者后台创建,如 com.company.game,开启所需 Capabilities(如 Push、Game Center、IAP、Sign in with Apple 等)。
    • 证书类型:
      • iOS Development(开发调试)
      • iOS Distribution / App Store(商店分发)
    • 描述文件(Provisioning Profiles):
      • Development(开发真机调试,需设备 UDID)
      • App Store(上架分发,不需要绑定设备)
      • Ad Hoc(线下分发,需设备 UDID;可选)
    • 注意:做 TestFlight 不需要收集测试机 UDID;Ad Hoc 才需要。
  • 素材与合规准备

    • App 图标与启动屏:iOS 要求使用 Launch Screen Storyboard(禁止旧式静态 Launch Images)。Unity 可配置“Custom iOS Target Launch Screen”或自定义 Storyboard。
    • 隐私与合规:
      • 隐私权限文案:在 Info.plist 填写各权限用途说明,如 NSCameraUsageDescription、NSMicrophoneUsageDescription、NSUserTrackingUsageDescription(若使用 IDFA/广告)。
      • 数据类型与用途:App Store Connect“隐私营养标签”填写。
      • 加密合规:如使用或链接到加密,需在提交时填写出口合规问答。
    • 截图与预览:准备 6.7" iPhone、5.5" iPhone、iPad(如支持)的截图与可选预览视频。

二、Unity 工程配置(iOS + IL2CPP)

  • 切换平台
    • File -> Build Settings -> iOS -> Switch Platform
    • Scenes In Build:勾选你的首场景在列表顶部
  • Player Settings 关键项
    • Identification
      • Company Name/Product Name:作为包信息来源
      • Bundle Identifier:与开发者后台 App ID 一致
      • Version(CFBundleShortVersionString,如 1.0.0)
      • Build(CFBundleVersion,整数自增,如 1、2、3…)
      • Signing Team ID:填你的团队 ID(可启用 Unity 自动签名)
    • Resolution and Presentation
      • Default Orientation:根据游戏设定(竖屏/横屏)
      • Status Bar:一般隐藏
      • Launch Screen:推荐使用自定义 Storyboard(符合 Apple 要求)
    • Other Settings
      • Scripting Backend:IL2CPP(iOS 必须)
      • Api Compatibility Level:.NET Standard 2.1 或兼容你项目的最低要求
      • Target minimum iOS Version:根据你的受众与 SDK 要求(常见 12.0+ 或 13.0+)
      • Architecture:ARM64(App Store 仅支持 64 位)
      • Metal:仅启用 Metal(OpenGL ES 已不再推荐)
      • Allow ‘HTTP’ downloads:如需非 HTTPS,配置 ATS(更推荐服务端改为 HTTPS)
      • Script Call Optimization:Fast but no Exceptions(性能优先);若依赖异常栈,使用 Slow and Safe
      • Managed Stripping Level:Medium/High 以减小包体,但注意反射类保留(可用 link.xml)
      • Objective-C/C++ Exceptions:如第三方 SDK 需要,可启用 C++ Exceptions
      • Bitcode:Xcode 14 起已移除,无需配置
    • Optimization
      • Strip Engine Code:开启以减小体积(注意兼容)
      • IL2CPP Code Generation:Faster(发布)或 Faster Runtime(调试)
  • 构建导出
    • Build Settings:选择 “Build”(建议不要直接 Build and Run)
    • 输出为 Xcode 工程目录
    • 如用到 Pods,Unity 会生成 Podfile;首次用 Xcode 运行前执行 pod install 生成 .xcworkspace

三、使用 IL2CPP 构建与 Xcode 编译

  • CocoaPods(如有)

    • 在 Xcode 工程目录执行:pod install
    • 之后请使用 Unity-iPhone.xcworkspace 打开工程(而非 .xcodeproj)
  • Xcode 签名与能力

    • Signing & Capabilities
      • 勾选 Automatically manage signing(推荐)并选择 Team
      • Bundle Identifier 要与 Profile 的 App ID 匹配
      • 添加所需 Capabilities(Push、IAP、Game Center 等)
    • Build Settings
      • Provisioning Profile / Code Signing:自动签名时通常无需手配
      • Build Configuration:Release 用于提交
    • 运行一次 Archive 前,先在模拟器或真机“Build”验证无编译错误

四、命令行打包(xcodebuild)

  • 清理与归档(不使用 Pods 的工程)

    • xcodebuild clean archive -project Unity-iPhone.xcodeproj -scheme Unity-iPhone -configuration Release -destination 'generic/platform=iOS' -archivePath build/Unity-iPhone.xcarchive
  • 清理与归档(使用 Pods 的工程,注意 workspace)

    • xcodebuild clean archive -workspace Unity-iPhone.xcworkspace -scheme Unity-iPhone -configuration Release -destination 'generic/platform=iOS' -archivePath build/Unity-iPhone.xcarchive
  • 导出 IPA(需要 exportOptions.plist)

    • 示例:App Store 导出 exportOptions.plist
      • {
        "method": "app-store",
        "uploadSymbols": true,
        "compileBitcode": false,
        "destination": "export",
        "signingStyle": "automatic",
        "stripSwiftSymbols": true
        }
    • 执行导出
      • xcodebuild -exportArchive -archivePath build/Unity-iPhone.xcarchive -exportPath build/ipa -exportOptionsPlist exportOptions.plist
    • 完成后在 build/ipa 下获得 .ipa 文件
  • 进阶:显式指定签名(如需)

    • 在 archive 命令后追加:
      • DEVELOPMENT_TEAM=你的TeamID CODE_SIGN_STYLE=Automatic
    • 若使用手动签名,设置 PROVISIONING_PROFILE_SPECIFIER、CODE_SIGN_IDENTITY 等

五、上传到 App Store Connect

  • 方式 A:Xcode Organizer(最稳妥)
    • Xcode -> Product -> Archive -> Distribute App -> App Store Connect -> Upload
    • 完成后在 App Store Connect 的 “TestFlight” 或 “App Store” 可看到构建
  • 方式 B:Transporter(GUI)
    • 从 Mac App Store 安装 Transporter,用 Apple ID 登录,拖拽 .ipa 上传
  • 方式 C:CI/自动化(可选)
    • 可用 fastlane deliver/pilot 实现一键上传(团队内可再落地)

六、TestFlight 测试

  • 内测(Internal):
    • 团队成员可立即使用,无需 Beta 审核
  • 外测(External):
    • 需提交 Beta 审核(通常较快),可邀请最多 10,000 名测试者
  • 测试配置
    • 填写测试信息、合规问答(加密等),设置过期提醒
    • 可分发测试说明与反馈渠道
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客柒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值