Unity游戲打包——iOS打包基礎、傳包

本文由 NRatel 歷史筆記整理而來,如有錯誤歡迎指正。

相關參考文檔

Unity文檔 -> 平臺開發 -> IOS

https://docs.unity3d.com/cn/2021.3/Manual/iphone.html

Unity導出的Xcode 項目的結構

Modifying an Xcode project?use?Xcode.PBXProject.

https://docs.unity3d.com/2021.3/Documentation/Manual/StructureOfXcodeProject.html

iOS 構建環境(iOS Build Support、Xcode、Apple ID、Apple Developer Program)

https://docs.unity3d.com/2021.3/Documentation/Manual/ios-environment-setup.html

Add your Apple ID to Xcode

https://help.apple.com/xcode/mac/current/#/devaf282080a

構建適用于iOS的插件

https://docs.unity3d.com/cn/2021.3/Manual/PluginsForIOS.html

在 iOS 設備上進行故障排除

https://docs.unity3d.com/cn/2021.3/Manual/TroubleShootingIPhone.html

其他:

待細了解概念 Unity Remote

Unity 真機,日志不顯示C#行號,是 IL2CPP的問題:

https://docs.unity3d.com/cn/2021.3/Manual/iOSManagedStackTraces.html

--------------------------------- NRatel 割?---------------------------------

iOS App 簽名原理

開發者賬號登錄

Sign In - Apple

加入 Apple Developer Program

Apple Developer Program - Apple Developer

一些相關相關博文

Apple Developer 個人開發者賬號申請流程

Apple Developer 個人開發者賬號申請流程_蘋果開發者賬號-CSDN博客

Unity如何不使用開發者賬號進行IOS的真機調試

Unity如何不使用開發者賬號進行IOS的真機調試_unity3d開發的游戲如何在iphone上進行免費測試-CSDN博客

IOS Xcode證書配置和ipa打包流程(附詳細圖文教程)

IOS Xcode證書配置和ipa打包流程(附詳細圖文教程)_xcode打包ipa-CSDN博客

ios證書打包分發全流程

https://zhuanlan.zhihu.com/p/650886471

打包命令

xcodebuild 文檔

Technical Note TN2339: Building from the Command Line with Xcode FAQ

安裝使用證書

運營給到的證書如下:

在mac中,分別雙擊打開2個 .p12 文件,選擇“系統” -> 添加 -> 輸入密碼。

在 xcode 中,記錄操作過程如下:

取消勾選 Automatically manage signing、輸入包名,

在 Proversioning profile 中選擇剛才安裝到鑰匙串中的 .p12文件。

看到以下提示,點擊 Manage Certificates。

選擇 ios 添加

提示如下:

原因:沒有添加對應的賬戶到 xcode 中。

先,在郵件中接受運營發出的邀請。

以接受邀請的郵件,注冊 Apple ID。

然后在xcode中添加此賬號,點擊Manage,添加 Apple Development。

最后,回頭查看項目簽名處,已OK。

總結:正確順序其實應該是

1、接受邀請,注冊AppId。

2、在xcode 設置 Accounts中登錄 AppId。

3、安裝 .p12 文件。

4、項目中設置簽名(取消 automic、填寫包名、選擇 provisioning Profile)

xcodebuild?archive時設置:??? 先在Unity中填寫,后續可能應改為設置環境變量 todo

xcodebuild?-exportArchive 時設置:使用optionsPlists

注意,后續在 執行 archive 時,每次都要輸入系統管理員賬號和密碼,

原因是,雙擊安裝 .p12 文件將被安裝在“系統鑰匙串”中,而不是在“我的證書”里。可以改為拖入 “我的證書、登錄目錄”的方式進行安裝。

之后手動在xcode中archive一次,輸入密碼并選擇始終允許即可。

注意區分:

  1. ?.p12?文件?:是包含開發者簽名證書和對應私鑰的加密容器文件,用于在不同電腦間安全地遷移你的簽名身份。
  2. ?.mobileprovision?文件:是由蘋果簽發的配置文件,規定了哪個應用、能用哪些證書、在哪些設備上運行以及擁有哪些權限。
  3. ?Xcode 中的 Provisioning Profile?:是?.mobileprovision?文件在 Xcode 中的邏輯體現,是連接應用、開發者證書和設備權限的橋梁。
  4. ?Xcode 中的 Signing Certificate?:是安裝在鑰匙串中的數字證書,用于證明開發者的身份,是代碼簽名的法律印章。

ios 簽名原理

iOS App 簽名的原理 ? bang's blog

iphone 連接 XCode 測試

  1. 用數據線連接手機到mac
  2. 在 Product/Destination/ 中選擇連接的移動設備(NRatelX)
  3. 執行 Product/Run

(可提前執行 Product/Archive 確保項目可以構建成功)

提示如下:原因是,移動設備未打開開發者模式。

在 移動設備的 設置/隱私與安全性 中打開開發者模式,重啟。

  1. 重新運行,執行 Product/Run,報錯如下:

Provisioning?profile?"DevLegendsMatch20240602"?doesn't?include?the?currently?selected?device?"NRatelX"?(identifier?2b0a271100ee2d47150971211d20c65d06427e9c).

原因:此證書不包含此測試設備。

解決:讓運營添加測試設備。

先改用 發布證書測試,重新執行,可以看到:
開始構建,完成,并開始安裝(可在右上角看到進度變化)。

然后在安裝時報錯:

A valid provisioning profile for this executable was not found.

原因:發布證書(app-store-connect)無法用于真機測試

上傳

1、手動上傳

在 Xcode Archive 后,雙擊 .xcarchive 文件,然后選擇 Distribute App,選擇 Custom 繼續即可。

2、命令行上傳

命令行上傳有兩種方式:

方式⑴、在 xcodebuild -exportArchive?時,將-exportOptionsPlist

指定的 .plist 文件中的 destination 設為 upload(默認為export)

若上傳成功,日志如下:

方式⑵、使用 xcrun altool --upload-app --file /path/to/export/MyApp.ipa --username myemail@example.com --password app-specific-password?--type ios

(注意,這里的密碼需使用專用密碼,在 Apple賬戶里創建即可)

若上傳成功,日志如下:

上傳時遇到的報錯(手動和命令行報錯一致):
Invalid Bundle. The bundle at 'LegendsMatch.app/Frameworks/UnityFramework.framework' contains disallowed file 'Frameworks'. (ID: 3ea64c50-e45d-4f7d-a114-5054032dc960)

error: exportArchive: Asset validation failed. Invalid Bundle. The bundle at 'LegendsMatch.app/Frameworks/UnityFramework.framework' contains disallowed file 'Frameworks'. (ID: 3ea64c50-e45d-4f7d-a114-5054032dc960).

解決:2019.3 - validation on upload to store gives "UnityFramework.framework contains disallowed file" - Unity Engine - Unity Discussions

在Untiy項目中添加 XcodeSwiftVersionPostProcess.cs 處理即可

TestFlight?包

問題:為 IOS TestFight 打包時, 應該打開 Debug 嗎?

答案:不應該使用Debug配置,而應該使用Release配置

原因:盡管Debug配置提供了更好的調試信息和性能分析工具,但它并不適合分發給測試人員或最終用戶。Debug配置通常包含符號信息,這可能導致包的大小顯著增加,并且可能包含未優化的代碼,影響應用的性能。TestFlight是Apple官方的應用內測分發渠道,用于在應用正式發布前收集測試反饋。為了確保測試的準確性以及接近真實用戶的體驗,你應該使用Release配置來構建你的測試版本。這樣可以確保應用在測試階段的表現與最終發布到App Store的版本盡可能一致。

需注意問題:
使用?xcrun altool --upload-app?上傳同一vercode (1)時,既未覆蓋,又不報錯,而是自動提升了一個版本(2),再次上傳時報錯了。這似乎不太合理。

另:提審后,不可上傳重復的版本,會報錯:

證書更新需做的操作

首次,在 mac 上雙擊安裝2個 .p12文件,和 2個.mobileprovision
后續,在 mac 上雙擊安裝2個.mobileprovision

可利用 Unity ProjectSetting/iOS/iOS Provisioning Profile/Profile ID 選擇 .mobileprovision,查看其 Profile ID。

如:
Devxxxxx.mobileprovision 為 68ac86d8-37da-4257-a785-d519ad262754
Disxxxxx.mobileprovision 為 77bd1578-5b5f-441e-b35f-a021ab66e84e

之后,將2個 Profile ID 配置到下面4個文件中:
1、Build\BuildGame\builders\build_app\Signature\iOS\com.xxx.xxx\SignInfos 的 debug.json 和 release.json(用于Unity ios設置)
2、Build\BuildGame\builders\build_app\Signature\iOS\com.xxx.xxx\OptionsPlists 的 debug.plist 和 release.plist(用于Unity ios設置)

--------------------------------- NRatel割 ---------------------------------

注意:若添加新的測試人員,需替換 Devxxx.mobileprovision 證書,然后重新打包

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

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

相關文章

pyside6小項目:進制轉換器

from PySide6.QtUiTools import QUiLoader from PySide6.QtWidgets import QApplication,QWidgetclass MyWindow(QWidget):def __init__(self):super().__init__()self.ui QUiLoader().load(trans.ui)self.ui.show()#stor data type dictionaryself.lengthVar {米:100, 千米:…

再見 K8s!3款開源的云原生部署工具

前文,和大家分享了云原生中的核心工具 K8s: 關于 K8s:入門,這篇就夠了 K8s是個好東西,就是上手門檻有點高。這不,需求就來了? 有需求,就有工具。 為了解決K8s的配置難題&#xf…

C++ 快速復習指南(上半部分)

1.基礎語法基本結構#include <iostream> 頭名 using namesapce std ; 統一使用命名空間 int main () { 程序執行門戶 主題內容}基本輸出 cout << "string " << endl; // 輸出 string 變量和數據類型 格式int intger 10 ;常量的引入 需要在變量…

ArcGIS Pro 地圖打包與解包

如果需要在ArcGIS Pro 打包某一個地圖文檔&#xff0c;在 菜單欄中 點擊 共享&#xff0c;點擊地圖。彈出 打包地圖 面板&#xff0c;可以打包到Online、打包到地圖包&#xff0c;選擇將包保存到文件&#xff0c;修改項目詳細信息&#xff0c;點擊 包&#xff0c;即可實現打包。…

sunset: twilight靶場

sunset: twilight 來自 <sunset: twilight ~ VulnHub> 1&#xff0c;將兩臺虛擬機網絡連接都改為NAT模式 2&#xff0c;攻擊機上做namp局域網掃描發現靶機 nmap -sn 192.168.23.0/24 那么攻擊機IP為192.168.23.128&#xff0c;靶場IP192.168.23.145 3&#xff0c;對靶機…

【機器學習基礎】無監督學習算法的現代演進:從數據探索到智能系統的自主發現能力

1. 引言:無監督學習在人工智能革命中的核心價值 在人工智能技術飛速發展的今天,無監督學習正在成為推動AI系統實現真正智能的關鍵技術。與需要大量標注數據的監督學習不同,無監督學習能夠從原始數據中自主發現隱藏的模式和結構,這種能力使其在現代AI應用中具有不可替代的價…

PetaLinux的JTAG啟動

csdn–PetaLinux 使用技巧與緩存配置 xilinx官網–PetaLinux 工具文檔參考指南 (ug1144) xilinx官網–設備樹配置文檔 內核官網–設備樹文檔 軟硬件準備 分類項目說明/用途驗證方法示例硬件JTAG 線JTAG 下載、調試—UART 串口線查看 zynq 啟動日志—網口線用于 TFTP 下載—…

單片機中的按鍵防抖

按鈕&#xff08;按鍵&#xff09;抖動是單片機開發中常見的硬件問題&#xff0c;本質是機械觸點接觸瞬間的物理彈跳導致的電信號不穩定。消除抖動&#xff08;防抖&#xff09;是確保按鍵狀態檢測準確的關鍵&#xff0c;下面從原理到實現詳細講解。 一、按鈕抖動的原理&#x…

面經分享--小米Java一面

目錄 1.Kafka和RocketMQ的區別 2.反射的作用 3.類加載的具體過程&#xff0c;雙親委派模型的機制 4.TCP的四次揮手 5.多線程的優勢 6.死鎖產生的原因&#xff0c;怎么解決 7.Java并發的工作原理 8.常用的git命令 9.算法題 1.leetcode 3.無重復字符的最長子串&#xff…

Python在邊緣計算與物聯網中的創新實踐:實時數據處理與設備控制

近年來&#xff0c;Python語言的普及度持續攀升&#xff0c;尤其在人工智能、數據科學等熱門領域備受青睞。然而&#xff0c;一個新興趨勢——邊緣計算與物聯網&#xff08;IoT&#xff09;的結合——正悄然改變技術格局。邊緣計算強調在數據源頭進行實時處理&#xff0c;減少云…

Spring Cloud Gateway 網關(五)

目錄 一 概念引入 二 具體使用 1 首先創建一個網關模塊 2 啟動類 3 配置類 4 對應方法的修改 5 展示借助81端口進行轉發控制 6 斷言規則?編輯 三 過濾器 1 將前置的請求參數給過濾掉&#xff0c;降低繁瑣程度。 2 默認過濾器 3 全局過濾器 4 自定義過濾器工廠 5…

產品經理操作手冊(8)——業務需求文檔(BRD)

一、BRD的定義與價值 **業務需求文檔(BRD)**是產品開發前期的基礎性文檔&#xff0c;它將業務訴求轉化為結構化的產品需求&#xff0c;是連接業務方與交付團隊的橋梁。“BRD不僅是一份文檔&#xff0c;而是一個對齊的過程。”BRD核心價值 統一認知&#xff1a;確保各方對業務目…

Excel表格多級下拉選項,如何制作?

之前分享過如何設置下拉選項&#xff0c;但那只是簡單的一級下拉菜單&#xff0c;今天再給大家分享多級下拉菜單如何制作。也就是根據前面的下拉選項改變后面的選項。 我們現來復習一級下拉菜單&#xff0c;再接著講多級下拉菜單 一級下拉選項 首先我們先將表格內容湊填寫好…

[Sync_ai_vid] 唇形同步評判器 | 圖像與視頻處理器 | GPU測試

第4章&#xff1a;SyncNet唇形同步評判器 在前幾章中&#xff0c;我們了解了唇形同步推理流程如何協調生成唇形同步視頻&#xff0c;以及音頻特征提取器(Whisper)如何為LatentSync UNet提供關鍵音頻線索。 UNet利用這些線索巧妙調整唇部動作。但我們如何判斷UNet的生成效果&a…

算法:插入排序

插入排序&#xff08;直接插入排序&#xff09; 是一種基于“插入”的排序 思路 它的核心思想是把數組分成兩部分&#xff1a;一部分是有序區&#xff0c;另一部分是亂序區也就是待排序區。 每次從未排序部分“取出”一個元素&#xff0c;插入到前半部分合適的位置&#xff0c;…

MCP Go SDK

MCP Go SDK v0.3.0 Open in GitHub Codespaces &#xff08;在 GitHub Codespaces 中打開&#xff09; BREAKING CHANGES &#xff08;重大變更&#xff09; This version contains breaking changes. See the release notes for details PkgGoDev &#xff08;Go 官方包文檔入…

面試問題詳解十一:Qt中的線程池與 QRunnable

在 Qt 中&#xff0c;多線程的使用是開發高性能 GUI 應用的重要組成部分。為了避免頻繁創建和銷毀線程帶來的資源消耗&#xff0c;Qt 提供了 線程池&#xff08;QThreadPool&#xff09; 和 可運行任務&#xff08;QRunnable&#xff09; 的機制&#xff0c;幫助我們更加高效地…

spring-ai-alibaba-deepresearch 學習(五)——BackgroundInvestigationNode

本篇為spring-ai-alibaba學習系列第三十一篇前面介紹 rewrite_multi_query 節點最后會根據用戶上傳文件標識 user_upload_file 決定下一節點現在來看一下第二個分支&#xff0c;當 user_upload_file 為 false 時&#xff0c;轉入 background_investigator 節點該節點主要是負責…

ESP32S3:開發環境搭建、VSCODE 單步調試、Systemview 分析任務運行情況

目標: 實現點燈工程&#xff0c;并且可以基于 vscode 進行單步調試與 systemview 來分析任務運行情況。 環境搭建 如需在 ESP32-S3 上使用 ESP-IDF&#xff0c;請安裝以下軟件&#xff1a; 設置 工具鏈&#xff0c;用于編譯 ESP32-S3 代碼&#xff1b;編譯構建工具 —— CMa…

linux系統學習(6.軟件包管理)

目錄 一、概述 1.分類 2.命名方式 3.一個軟件包的組成 1. 軟件包的基本定義 2. 一個軟件包通常包含的部分 ① 程序文件 ② 庫文件 ③ 配置文件 ④ 數據文件 / 資源文件 ⑤ 文檔 / 幫助信息 ⑥ 服務腳本 / 單元文件&#xff08;如果是服務型軟件&#xff09; ⑦ 包的…