当前位置: 首页 > backend >正文

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.xdnf.cn/news/18963.html

相关文章:

  • java后端的各种注解
  • Linux 禁止 su 的几种限制手段:从 NoNewPrivileges 到 PAM 配置
  • GitHub 宕机自救指南:确保开发工作不间断
  • 大数据毕业设计选题推荐-基于大数据的存量房网上签约月统计信息可视化分析系统-Hadoop-Spark-数据可视化-BigData
  • 学习嵌入式之驱动——I2C子系统
  • 深度学习篇---VGGNet
  • 一个基于物理信息神经网络(Physics-Informed Neural Network, PINN)的多变量时间序列预测模型MATLAB代码
  • Windows 7-11通用,这工具让电脑提速300%
  • 2025.8.28总结
  • HTTP 范围请求:为什么你的下载可以“断点续传”?
  • Chrome 插件开发实战:从入门到精通
  • vue2使用el-form动态参数展示并非空校验
  • 数据结构青铜到王者第九话---二叉树(2)
  • 自下而上的树形dp
  • 深度学习——卷积神经网络(PyTorch 实现 MNIST 手写数字识别案例)
  • pcl_案例2 叶片与根茎的分离
  • 机器视觉学习-day09-图像矫正
  • Day30 多线程编程 同步与互斥 任务队列调度
  • leetcode_73 矩阵置零
  • 【LLM】Transformer模型中的MoE层详解
  • vue布局
  • 架构设计——云原生与分布式系统架构
  • Android中设置RecyclerView滑动到指定条目位置
  • 搜维尔科技核心产品矩阵涵盖从硬件感知到软件渲染的全产品供应链
  • 万博智云联合华为云共建高度自动化的云容灾基线解决方案
  • 【Python开源环境】Anaconda/Miniconda
  • 【数据结构与算法】(LeetCode)141.环形链表 142.环形链表Ⅱ
  • 重置 Windows Server 2019 管理员账户密码
  • 深入理解QLabel:Qt中的文本与图像显示控件
  • 国产的服务器