打包流程

首先在苹果开发者平台注册账号
下载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.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+/

Unity iOS XCode相关推荐

  1. unity打包xcode,在iOS11设备调试报错

    unity版本:5.4.5p5 Xcode版本:Xcode9 iOS版本:ios11 unity打包xcode,进行调试状态下报错: validateRenderPassDescriptor:551: ...

  2. unity iOS 微信支付 教程

    时间:2018.6 Unity版本:5.6.2 平台:Unity+iOS 微信SDK版本:2018.6月 1.8.2版本 适用人群:unity 开发,oc基础较弱 食用前提:请确保已经清楚官方的整个支 ...

  3. Unity iOS内购

    前言:最近项目需要切换到iOS平台做一些提交审核和支付对接相关的工作,上一篇刚分享了最新的iOS10提交审核的一些坑,这篇分享一些内购相关的流程. Unity iOS内购 思路: Unity调用iOS ...

  4. Unity iOS截图并保存到手机相册总结

    Unity iOS捕捉相机拍到的画面并截图保存到手机相册总结 本文专门针对小白,详细(图文)的写了通过unity 3d实现ios捕捉相机拍到的画面并截图保存到手机相册的方法.(对大佬来说可能写的略显繁 ...

  5. Unity iOS打开AppStore评星页面,浅谈Application.OpenURL()方法。

    http://fairwoodgame.com/blog/?p=38 Unity iOS打开AppStore评星页面,浅谈Application.OpenURL()方法. Posted in  Uni ...

  6. ios xcode真机调试获取屏幕截屏

    ios xcode真机调试获取屏幕截屏 非常多时候我们须要在调试的过程中把手机屏幕截图发给其它人看,在android开发中我们能够非常方便的截图保存.而xcode开发ios的时候发现这个需求却如此困难 ...

  7. [转]phonegap 2.9 IOS Xcode 搭建环境

    phonegap 2.9 IOS Xcode 搭建环境 一:下载phoneGap2.9和安装Xcode5(目前最新版) 选择2.9是因为3.0以上坑爹版本编译神马的要在有网络情况. 二: 下载phon ...

  8. iOS XCode 解决 Showing Recent Messages :-1: Unable to load contents of file list

    iOS XCode 解决 Showing Recent Messages

  9. iOS/Xcode异常:no visible @interface for XXX declares the selector YYY

    iOS/Xcode异常:no visible @interface for XXX declares the selector YYY 参考文章: (1)iOS/Xcode异常:no visible ...

  10. iOS Xcode 中类文件后面标记A、D、M、R、C、?、! 等含义 'A' 新增 'D' 删除 'M' 修改 'R' 替代 'C'

    //联系人:石虎 QQ:1224614774 昵称:嗡嘛呢叭咪哄 一.概念 iOS Xcode 中类文件后面标记A.D.M.R.C.?.!等含义 'A'  新增 'D'  删除 'M'  修改 'R' ...

最新文章

  1. unity中摄像机的控制---调整摄像机,不让他摔倒
  2. 论坛报名 | 从捉迷藏、星际争霸到新一代人工智能:多智能体深度强化学习的理论与实践...
  3. BZOJ 3745: [Coci2015]Norma(分治)
  4. 使用网站模板快速建站_建站工具使用教程看了就懂网站建设
  5. java 中的对象序列化
  6. linux查找替换grep以及正则表达式
  7. 处理ASP.NET Core中的HTML5客户端路由回退
  8. sqlalchemy与mysql区别_sqlite3和sqlalchemy有什么区别?
  9. Ubuntu18.04 安装搜狗输入法后无法启动的问题
  10. Random Forest算法中的参数详解
  11. ESP32 ESP-IDF开发环境搭建,Windows下基于ESP-IDF | Cmake | VScode插件的 ESP32 开发环境搭建
  12. 微信小程序——诉讼费计算
  13. 序列化和反序列化(六)——Java对象的网络传输(一)
  14. 根据分隔符将一个长字符串分割保存到动态数组中
  15. B2B、C2C、B2C是什么意思
  16. 虚拟互动展会沉浸式体验方案设计优势
  17. Pyth学习中一定从基础抓起
  18. 以数为基,云启健康未来|“对标世界一流管理——走进一心堂暨生命科学行业峰会”圆满落幕
  19. docker使用教程
  20. python凯撒密码e_凯撒密码python实现

热门文章

  1. aodv协议C语言代码,AODV协议入门必读
  2. 中国保安服务行业发展状况及前景预测分析报告2022-2028年版
  3. Unity之IL2CPP
  4. android nano app,实战nanoHTTPD嵌入android app(3)
  5. html星星连线特效代码,js实现飞入星星特效代码
  6. Java JDK11的下载与安装
  7. Matlab 三角函数(sin)
  8. c语言计算圆周率随机数法,C语言求圆周率的简单实现方法
  9. Mysql和Oracle索引简介
  10. 工行U盾出现“没有检测到卡片/PKCS11初始化失败”错误的原因和解决办法