Unity iOS XCode

打包流程

首先在苹果开发者平台注册账号
下载AppleDeveloper(加入开发者计划)和Xcode软件
账号有三个类型;
个人开发者:99美元,必须要发布到App Store,否则只能通过TestFlight进行内部测试(最大100台),只允许单人开发
公司开发者:99美元,跟个人没啥区别,就是上架上显示的是公司,但是需要填写公司的邓百氏编码,支持多人开发
企业开发者:299美元,不能发布到App Store,需要填写公司的邓百氏编码,但是TestFlight内部测试无限制,支持多人开发

或者使用TestFlight,必须要安装TestFlight

使用个人开发者打包:需要证书和描述文件

(1)生成证书

在里面请求获得一个证书,保存在本地
在这里插入图片描述

存储到磁盘和让我指定密钥信息对

登录开发者网站
创建一个证书上传本地证书
Development证书 :开发证书,可以真机调试,一般在开发过程中使用
Distribution证书:分发(发布)证书,一般是用来打包ipa的,不可以真机调试
下载证书
双击下载好的证书,可以在钥匙串访问里看到
如果不能修改,那么直接手动拖入
修改完成后可以找到这个证书导出设置一个密码给别人使用

(2)生成标识

注意生成的包名和APP包名要一致

(3)生成配置文件,选中设备

下载配置文件,双击

(4)设置设备号

查看UUID可以通过iTunes查看

Xcode工程设置

设置证书
在这里插入图片描述

设置签名
在这里插入图片描述

扫描二维码关注公众号,回复: 14759507 查看本文章

构建ipa
在这里插入图片描述

找到ipa,通过xcode安装,或者将手机越狱直接安装
越狱助手:爱思助手
信任开发者:
设置 - 通用 - 描述文件与设备管理

Xcode安装ipa

在xcode中
在这里插入图片描述

C#调用Object-C

在xcode工程MainApp目录下创建一个Object-C文件
修改这个文件的后缀为.mm
.m:源代码文件。这是典型的源代码文件扩展名,可以包含Objective-C和C代码。
.mm:源代码文件。带有这种扩展名的源代码文件,除了可以包含Objective-C和C代码以外还可以包含C++代码。仅在你的Objective-C代码中确实需要使用C++类或者特性的时候才用这种扩展名
例:输出
在这里插入图片描述

将这个.mm文件复制到Unity工程目录下(Assets/Plugins/IOS)
在C#脚本中
在这里插入图片描述

方法名字和参数要相同
在C#中调用这个方法就能执行了

Object-C调用C#

UnitySendMessage()
第一个参数 填写接受方法的物品或者模型名称。
第二个参数 填写方法名字。
第三个参数 填写要穿的参数,没有要传的参数直接写"",这里不能写null,会cras

修改自定义启动页

参考:https://blog.csdn.net/weixin_40137140/article/details/108709464

C#修改XCode项目配置

通过打包完成回调调用:通过实现IPostprocessBuildWithReport接口

通过UnityEditor.iOS.Xcode.PBXProject这个类
初始化:new一个类,调用里面的ReadFromString/ReadFromFile/ReadFromStream初始化
var project = new PBXProject();

添加库文件

var targetGuid = project.GetUnityMainTargetGuid();
project.AddFrameworkToProject(targetGuid, “具体库文件”,false);

添加权限:

通过PlistDocument类,设置XCode工程里的Info.plist文件
在这里插入图片描述

PlistDocument plist = new PlistDocument();
plist.ReadFromFile(Path.Combine(buildPath,“Info.plist”));
plist.root.SetString(“权限名称,可以百度具体名称”,“权限请求提示内容”);
plist.WriteToFile(Path.Combine(buildPath, “Info.plist”));

设置签名

通过XCode配置文件里找到buildsetting下找到属性名称

project.SetBuildProperty(targetGuid,“属性名称”,“对应值”);

上架App Store和TestFlight

需在appstoreconnect中提前创建好app
在Xcode打包时,确定描述文件和证书是发布的并且是发布到App Store的。
打ipa包流程
在这里插入图片描述
上传到appstoreconnect中,
如果在appstoreconnect中看不到app,可能是被拒绝了,在开发者邮箱中看看具体情况
在这里插入图片描述
跟着提示弄即可

注意事项:

1,报错LocationService class is used but Locations Usage Description is empty. App will not work on iOS 10+.

手动增加权限
在这里插入图片描述

2,Xcode打包失败报:: The Legacy Build System will be removed in a future release. You can configure the selected build system and this deprecation message in File > Project Settings.

在这里插入图片描述
在这里插入图片描述

3,打包时报

在这里插入图片描述

解决方法:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4,打包设置在这里插入图片描述

这个选项勾上后,如果项目中没有引用Unity的代码,不会打包到XCode工程中,例如:工程没有用到Animation组件,打包时就不会把Animation这个组件打包进去,当AssetBundle里用到Animation时,会出现错误

5,热更中的注意事项

ios打包时会把类中的没有显示调用的方法会给剥离掉
比如Unity类A中有一个方法B,Unity中没有直接调用这个方法B,打包时会将这个方法B剥离掉。但是热更中:比如只有ILRuntime工程中调用了方法B,当在苹果端执行到调用方法B时,会报类A没有方法B这个key,
解决方法:在Assets/下新建一个link.xml手动排除不能被剥离的类

<linker>
      <assembly fullname="DLL名字">
                  <namespace fullname="具体命名空间" preserve="all"/>
                  <type fullname="具体的类名,记得要加命名空间." preserve="all"/>
      </assembly>
</linker>

6Xcode打不开Xcode工程

1,可能是project.pbxproj中有中文,用记事本打开
比如自己设置属性时没注意
导致
在这里插入图片描述
2,git,svn冲突的问题,检索<<<这样的,删除掉
3,检索 shellScript = “”$PROJECT_DIR/MapFileParser.sh""
注意sh\后面有两个引号,这个是Unity3DforiOS多生成了一个删除一个即可

苹果端路径是区分大写的

windows和Android下是不区分的,例如:dd文件和dD文件是同一个文件

多行注释快捷键

Mac下,Common+/,Windows虚拟机下Windows+/

猜你喜欢

转载自blog.csdn.net/weixin_44806700/article/details/122579028