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 名測試者
  • 測試配置
    • 填寫測試信息、合規問答(加密等),設置過期提醒
    • 可分發測試說明與反饋渠道

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/94893.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/94893.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/94893.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Windows系統安裝stata軟件教程

1、解壓縮2、點擊next3、選擇第一個,然后next4、這里隨便填寫就行5、選擇stataMP,然后next6、這里改個路徑,例如D:\Program Files\Stata18\7、這里不用管,選擇next8、點擊install,開始安裝過程9、安裝過程展示。10、最…

Android 開發 - 數據共享(數據共享、內容提供者實現、動態權限申請)

一、數據共享 1、內容提供者 內容提供者 ContentProvider 為 APP 存取內部數據提供統一的外部接口,讓不同的應用之間得以共享數據2、流程理解 Client APP 將用戶的輸入內容通過 ContentProvider 跨進程通信傳遞給 Server APP3、數據訪問 利用 ContentProvider 只實現…

【51單片機按鍵按下數碼管秒增計時并LED亮釋放停計時LED熄】2022-11-12

緣由單片機控制數碼管及LED燈-嵌入式-CSDN問答 #include "REG52.h" sbit k1P3^0; unsigned char Js0;//計時 unsigned char code smgduan[]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07 ,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0,64,15,56}; //共陰0~F消隱減號 void…

IBMS集成管理系統與3D數字孿生智能服務系統的應用

一九九二九九零七八八三一、數據全生命周期安全:從采集到銷毀的閉環防護整合系統的核心風險之一是數據泄露或篡改(如設備控制參數、建筑安防布局、人員動線數據),需覆蓋數據流轉的每個環節:1. 數據采集階段&#xff1a…

Vue3組件加載順序

父組件&#xff1a;QualityFile.vue<script setup lang"ts" name"QualityFile"> ...... </script><template><el-container class"container"><el-header class"header"><!-- 標題 --><div cl…

GitHub 宕機自救指南:應急預案與替代平臺

GitHub 宕機自救指南:應急預案與替代平臺 對于全球數百萬開發者而言,GitHub 的穩定運行至關重要。然而,即便是最可靠的服務也可能出現意外中斷。當 GitHub 無法訪問時,代碼托管、協作開發、持續集成與部署(CI/CD)等關鍵環節都將受到影響。本指南旨在為您提供一套完整的應…

將跨平臺框架或游戲引擎開發的 macOS 應用上架 Mac App Store

隨著 macOS 用戶數量的增長&#xff0c;越來越多的開發者希望將自己的桌面應用或游戲上架到 Mac App Store&#xff0c;以便觸達更多用戶并獲得官方的分發優勢。但 Apple 的上架流程相比其他平臺要嚴格得多&#xff0c;涉及簽名、打包、沙盒、審核、公證等環節。本文將以博文的…

拷貝構造和賦值重載有什么區別

問題拷貝構造和賦值重載有什么區別我的回答拷貝構造函數和賦值運算符重載是C中兩個看似相似但用途和行為有明顯區別的特性。拷貝構造函數是用來創建一個新對象作為已存在對象的副本。它的形式是ClassName(const ClassName& other)&#xff0c;在以下情況會被調用&#xff1…

(筆記)輸入法框架協作機制深度分析

概述 Android輸入法框架&#xff08;IMF - Input Method Framework&#xff09;是Android系統中負責管理虛擬鍵盤和文本輸入的核心組件。該框架協調輸入法服務&#xff08;IME&#xff09;、應用程序和系統輸入系統之間的復雜交互&#xff0c;為用戶提供靈活高效的文本輸入體驗…

解開 Ansible 任務復用謎題:過濾器用法、Include/Import 本質差異與任務文件價值詳解

1. 什么是變量過濾器&#xff08;Variable Filters&#xff09;&#xff1f;請列舉幾個常用的Jinja2過濾器及其用途。變量過濾器是在Jinja2模板中用于修改或格式化變量輸出的工具。常用過濾器&#xff1a;to_json/to_yaml&#xff1a;將數據結構&#xff08;如字典、列表&#…

LangGraph-笑話評估器 應用實戰

場景&#xff1a;用戶指定冷笑話主題&#xff0c;生成冷笑話后&#xff0c;進行評估&#xff0c;如果不搞笑就需要重新生成以下代碼實現了一個基于LangGraph的冷笑話自動生成與評估工作流。系統包含兩個核心節點&#xff1a;生成器根據用戶主題創作冷笑話&#xff0c;評估器對笑…

Paimon——官網閱讀:Flink 引擎

Flink 引擎 快速入門 本文檔是在Flink中使用Paimon的指南。 相關JAR包 Paimon目前支持Flink 1.20、1.19、1.18、1.17、1.16、1.15 。為獲得更好的體驗&#xff0c;我們推薦使用最新的Flink版本。 下載對應版本的JAR文件。 目前&#xff0c;Paimon提供兩種類型的JAR包&…

2025.8.28總結

工作日精進&#xff1a;今天終于把SPN控制器對接成功了&#xff0c;之前對接出現各種各樣的問題&#xff0c;搞得自己都有些心力交瘁。感覺自己明明很忙&#xff0c;也在努力的去推動進度&#xff0c;但還是阻塞了兩三天。最后求助了另一個同事&#xff0c;結果在他的指導和幫忙…

使用 Action 自動部署 VuePress 到 GitHub Pages

?? 成果&#xff1a; 框架&#xff1a;VuePress 2 vuepress/plugin-blog打包工具&#xff1a;Vite&#xff08;viteBundler&#xff09;包管理&#xff1a;pnpmCI/CD&#xff1a;GitHub Actions部署方案&#xff1a; 源碼倉庫&#xff1a;urfread1010/mind-elevation打包結…

【人工智能】2025年AI代理開源革命:社區驅動的智能體生態重塑未來

還在為高昂的AI開發成本發愁?這本書教你如何在個人電腦上引爆DeepSeek的澎湃算力! 2025年,AI代理(AI Agents)的開源浪潮席卷全球,標志著人工智能從封閉的商業模式向社區驅動的協作生態轉型。這一浪潮由開源社區主導,推動了智能體的快速迭代和民主化發展。本文深入探討了…

QT:【第一個QT程序】【信號和槽】

目錄 一. 第一個QT程序 1.1純代碼實現 1.2可視化操作實現 1.3 項目文件解析 1.3.1 .pro文件解析 1.3.2 widget.h 文件解析 1.3.3 main.cpp文件解析 1.3.4 widget.cpp 1.3.5 widget.ui文件解析 1.4對象樹 演示自動釋放的過程 1.5 中文亂碼 1.6 Qt窗口坐標系 二. 信…

河南萌新聯賽2025第(七)場:鄭州輕工業大學

河南萌新聯賽2025第&#xff08;七&#xff09;場&#xff1a;鄭州輕工業大學 If I only could, Id be running up that hill&#xff01;鄭輕有品&#xff01;背景終于不是二次元了… 是Stranger Things&#xff01;希望我能像主題曲里那樣&#xff0c;勇攀高峰&#xff0c;R…

Java 獲取淘寶商品詳情(item get)API 接口實戰指南

在電商領域&#xff0c;獲取商品詳情數據對于市場分析、價格監控、用戶體驗優化等場景具有重要意義。淘寶作為國內領先的電商平臺&#xff0c;提供了豐富的 API 接口供開發者使用&#xff0c;其中 taobao.item.get 和 taobao.item.get_pro 接口可以用來獲取商品的詳細信息。本文…

配送算法17 AFramework for Multi-stage Bonus Allocation in meal delivery Platform

AFramework for Multi-stage Bonus Allocation in meal delivery Platform本文針對美團每日數十萬單因無人接單而被取消的痛點&#xff0c;提出“多階段動態獎金分配”框架&#xff1a;先用半黑盒模型預估獎金—接單概率關系&#xff0c;再用拉格朗日對偶動態規劃離線算出階段乘…