Unity 打包对接 XCode 记录

由于公司需要将软件发到苹果商城,所以开始打 IOS 包。以下为打包过程中遇到问题的记录。留备以后查看。


软件环境

Windows 端:

  • Win10
  • Unity 2019.2.9f1
  • TortoiseSVN

Mac 端:

  • mac OS big Sur 11.6
  • XCode 13.2.1
  • Cornerstone

目前是采用从 Windows 端的 Unity 打出 Xcode 工程包,然后通过 SVN 传到 Mac 端再出包的流程。

其中参考文章如下:


1、记录一些 Unity 和 XCode 的设置

注意:以下一些配置的位置和名称可能会根据 Unity 和 XCode 版本的变动而有所变动。

Unity:
Scripting Backend:选 IL2CPP,因为需要支持 64 位,新版的 Unity 在切换成 XCode 时默认就是 IL2CPP
Api Compatibility Level:不要选子集,避免 dll 引用出问题
Auto Graphics API:不勾选,摒弃掉 matel 渲染,只留 OpenGLES2
Architerctures:修改为 Universal,表示同时支持 32 位,64 位架构

XCode:
Architerctures:设置为 Standard architectures,因为 32 位程序已经被苹果强制淘汰了
Capabilites->Background modes:设置问 ON,并勾选 remote notifications
Product->Scheme->Edit Scheme->run:将 “GPU Frame Capture” 设置为 Opengl ES
Build Settings->Enable Bitcode:设为 NO,否则所有第三方库都需要支持 bitcode

下面主要记录 XCode 端相关问题

2、 library not found for -liPhone-lib 问题

“library not found” 类问题都是没有找到相关 lib 引用导致的,比较可能的情况是引用的地址出现问题。
常见的修改方式是进入 Targets->Build Settings->Library Search Paths 中将 “$(SRCROOT)/Librarie” 的双引号去掉变成 $(SRCROOT)/Librarie
在这里插入图片描述
但是我使用了此方法并没有奏效,之后通过 Library Search Paths 中列出的地址找到了引用目录,在经过 Windows 端和 Mac 端的同名文件夹对比后发现是由于 Windows 端的两个 lib 文件不知何故并没有成功上传,所以导致 Mac 端确实没有这两个 lib 文件。
将文件重新标记上传和下载后,问题解决。

3、Command PhaseScriptExecution failed with a nonzero exit code 问题

进入 XCode 的 File->Project Setting 中
将 Shared Project Settings->Build System 调整为 Legacy Build System (Deprecated)
虽然这个已经说要被淘汰了,但是不用这个就报错,小白表示很郁闷。


至此,在 Build 时的问题都解决了。但是下面的问题是竟然无法直接发布到真机上进行测试。(当然真机已经加入了苹果测试机型中)

4、xcode unable to install “打包的程序名称” 问题

根据网上看到的方法:

将 File->Project Setting 中的 Per-User Project Settings->Build System 改为 Legacy Build System (Deprecated)

这之后遇到了一个权限问题:Permission denied
解决方法是:打开终端,输入命令 sudo chmod -R 777 工程根目录

经过一番折腾以后结果还是没有解决。
最后看到了这篇文章
原文如下:

It is a very hot issue with the new update of Catalina. To be very precise the issue is with the manually signing of the provisioning profile. If you check Automatically manage signing it works.

也就是说,在 Targets->Signing&Capabilities 中勾选 Automatically manage signing 就可以了。
使用后发现这个解决方案可以解决我遇到的问题。

5、关于证书的选择

证书选择不当可能会导致在真机测试时无法成功出包。
在 PROJECT 和 TARGETS 中的 Build Settings 页签里,找到 code signing identity 选项。
调试时统一选为 developer,发布时统一选为 distribution 。

出包成功。


PS: 此次记录的只是单独出游戏 iOS 包的相关步骤,而如果需要在项目中添加其他诸如 admob sdk 之类的插件则上面的第 2、3 步就不需要了,而是进行其他各种新的操作和配置。

猜你喜欢

转载自blog.csdn.net/EverNess010/article/details/123282187