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

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.dtcms.com/a/354507.html

相关文章:

  • 使用Docker部署ZLMediaKit流媒体服务器实现gb/t28181协议的设备
  • Day30 多线程编程 同步与互斥 任务队列调度
  • ArcGIS学习-12 实战-综合案例
  • Unity游戏打包——iOS打包pod的重装和使用
  • Flutter:ios打包ipa,证书申请,Xcode打包,完整流程
  • Intern-S1-mini模型结构
  • SpringBoot系列之实现高效批量写入数据
  • 专项智能练习(图形图像基础)
  • 文本处理与模型对比:BERT, Prompt, Regex, TF-IDF
  • 高精度惯性导航IMU价格与供应商
  • [sys-BlueChi] docs | BluechiCtl命令行工具
  • 【C#/Cpp】CLR项目搭建的内联和托管两选项
  • IPv4和IPv6的主要区别,以及常见的过渡策略有哪些
  • OpenCV计算机视觉实战(22)——图像拼接详解
  • 机器视觉学习-day07-图像镜像旋转
  • 【开题答辩全过程】以 基于Spring Boot农产品运输服务平台为例,包含答辩的问题和答案
  • MapStruct用法和实践
  • 【笔记ing】大模型算法架构
  • android studio 同步慢问题解决
  • Logstash数据迁移之mysql-to-kafka.conf两种路由决策对比
  • WebRTC音频QoS方法五(音频变速算法之Accelerate、FastAccelerate、PreemptiveExpand算法实现)
  • Kafka、RabbitMQ 与 RocketMQ 在高并发场景下的高可用与性能对比分析
  • 游戏使用云手机在线运行怎么样?
  • 小白成长之路-k8s原理(二)
  • 【在 macOS 系统上使用 Docker 启动 Kafka 的完整指南】
  • 点评项目(Redis中间件)第二部分Redis基础
  • ArtCAM 2008安装教程
  • React 业务场景使用相关封装(hooks 使用)
  • 【AI自动化】VSCode+Playwright+codegen+nodejs自动化脚本生成
  • Git 删除文件