Unity iOS XCode

编程入门 行业动态 更新时间:2024-10-25 04:20:19

打包流程

首先在苹果开发者平台注册账号
下载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工程设置

设置证书

设置签名

构建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/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+/

更多推荐

Unity iOS XCode

本文发布于:2023-06-14 07:32:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1451275.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Unity   iOS   XCode

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!