这篇文章主要用于记录本人亲身经历过的Unity发布到IOS平台所遇到的所有坑(其实也就是一些自己并不明白的强制设定),以便于后续再有类似需求时少走些弯路。

我的环境:

Unity 5.2.2 个人版(破解版)

macOS Sierra 10.12.1

Xcode 8.2

iPhone 6S真机一台

以上只是我的个人环境,如果因为unity的版本不同或是mac的版本不同,或是xcode的版本不同,很可能会遇到一些未知的坑,这里我也不可能把所有坑都踩一遍了,所以只能看个人的运气如何了,运气好一次就能成功,运气不好,卡在这里随随便便就是几天时间过去了,也没个头绪。

好吧,那现在开始吧。

第一步:安装环境

Unity 5.2.2个人版直接在unity官网下载,破解补丁在此

没有真机或黑苹果的话,安装虚拟机VM,虚拟机的安装流程百度很多,这里只有一个重点,VM安装成功以后需要使用对应的unlocker破解,破解以后才能直接安装apple os系统,这里有mac os x10.11.1的镜像系统,安装完后可以升级到最新版http://pan.baidu.com/s/1gft8azx

Xcode可以直接在app store下载,当然速度十分不可观,所以最好还是选择在苹果开发者中心下载,百度搜索苹果开发者中心

第二步:Unity发布Xcode工程

这里有两种方式,第一种是在windows上用Unity发布,第二种是在Mac上用Unity发布,这两种方式的操作流程几乎没什么区别,但某些项目因为引用了特殊插件的原因发布可能会失败,而在windows上发布失败的项目在mac上一般都是能成功的,我也不知道这是什么原因了,只能猜测是windows上缺少某些必要的组件,所以最好还是在mac系统上用unity发布xcode的工程,无论是真机、黑苹果还是虚拟机都行。

1、首先,在Build Setting里将当前平台切换至IOS(点击platform中的IOS,选择switch platform),Run in Xcode as 选择Release,其他保持默认

2、点击player setting,选择other setting(其他的设置可以保持默认,splash image 加载背景如果需要的话自行替换)

Auto Graphics API取消勾选,并取消Metal(选中Metal,点击右边的减号删除),让APP只用OpenGLES2渲染

Bundle Identfier按照标准的格式com.XXXX.XXXX,注意这里的XXXX不能写得太随意,否则Xcode编译可能不会通过

Target SDK选择Device SDK(真机),因为我这里是真机测试,模拟器的坑还没去踩,没有真机的请选择另一个(模拟器),不过不敢预测是否有更大的坑

AOT Compatibility Options 填上字符串:nrgctx-trampolines=8096,nimt-trampolines=8096,ntrampolines=4048  参考的这里,如果你的APP有不知名的闪退情况的话,请加上这条属性

其他的保持默认属性即可,大致如下:

然后就可以直接Build发布了(mac系统中build and run会在发布完成后自动打开xcode),当然这里可能会报另一个错(几率性的),如下,大概就是DLL加载不出来的意思,我这里是unityengine.UI及部分组件加载失败,这自然是致命性的,除非项目中没用到UGUI。

解决办法参考的这里,思路就是在unity的安装文件夹中找到这些加载失败的DLL,将他们全部移出去,然后运行一次unity,记住,千万不要保存场景,只运行打开窗口就可以了,接着关闭unity,将之前移出去的所有文件再放回原位,然后再打开unity,奇迹般的是,这些错误不复存在了,之前无法加载的组件已经加载成功了,只能说目前这应该算是一个bug吧。

第三步:用Xcode打开工程,进行相关设置并发布

1、打开Xcode,选择右下角的Open another Project,选择我们用Unity发布出来的Xcode工程并打开

2、到这里你不清楚要更改哪些配置的话,直接点击上方菜单栏Product -> Build生成项目,生成失败会弹出报错信息

3、查看报错信息,点击左侧的一个三角感叹号图标,并再次点击你的项目配置文件(项目的名称),我这里是Unity-iPhone,显示所有配置信息

4、到这里我们发现报错的原因是team id为空,所以我们必须为APP指定一个team id

5、点击这个team输入框后面的蓝色按钮,选择Add an Account,弹出一个窗口后,这里会提示你用Apple ID登录,有账号的话就直接登录,没有的话就点击左下角Create Apple ID去申请一个,这是免费申请的,过程很简单就不再描述了

6、选中我们登录的ID,可以在右下角(根据网络问题可能会加载缓慢)看到ID默认就有的一个个人团队证书

7、好,我们关闭这个窗口,这下直接在team输入框后面的蓝色按钮的下拉框中就可以选择我们的个人团队证书了

8、我们再次biuld项目,如果不出意外应该可以直接build成功,但据说是因为unity版本问题,这里还会报这一个错,如下,解决的办法在这里,很简单,直接删除NORETURN就可以了,这算是个bug吧,unity更新到5.3.2就修复了这一bug

9、然后,到这里再次build项目的话应该就能成功了,不过如果项目用到了摄像机以及定位之类的,还需要在配置信息中阐明使用的理由,不然发布到真机就会黑屏或闪退,在xcode编辑界面的左侧点击一个文件夹图标,展开项目的工程目录,选中info.plist,在Information Property List选项后面点击加号,在新生成的行的key值中选择:Privacy - Camera Usage Description  ,value值选项中输入要使用摄像机的理由,内容随意,只是用户在打开app的时候会看到这个string,如果写得太不友好,用户自然有可能会拒绝app访问摄像头,然后你就没辙了

10、然后用数据线连接上真机,在xcode编辑界面左上方选择我们的iPhone设备

11、现在就可以再次biuld,成功以后点击左上角的三角箭头运行图标,当显示Running XXX on iPhone的时候,就可以打开你的iPhone,app就能自动运行了,不能自动的手动点击图标运行就可以了

这里其实就是最麻烦的,很多做unity开发的并没有接触过IOS开发,自然也对xcode的一些标准配置完全就不清楚,当然我这里也并没有发布至App store,只是发布到真机的测试版,后面有时间再添加发布到app store的流程。

发布越狱版:如何在xcode打包越狱ipa文件

Unity发布至IOS的流程(踩坑记录)的更多相关文章

  1. Unity 发布到IOS,Android的各种坑

    Unity 发布到IOS的注意事项1.开发环境MAC环境:Xcode环境 7.2.1Unity环境:Unity5.32.基本说明首先,我说一下,这是我在对Unity发布到IOS的实际使用中,总结出来的 ...

  2. Unity AssetBundle 踩坑记录

    Unity AssetBundle 踩坑记录 editor 下选择什么平台的 ab 加载 Material doesn't have a color property '_Color' UnityEd ...

  3. python发布包到pypi的踩坑记录

    前言 突然想玩玩python了^_^ 这篇博文记录了我打算发布包到pypi的踩坑经历.python更新太快了,甚至连这种发布上传机制都在不断的更新,这导致网上的一些关于python发布上传到pypi的 ...

  4. DevOps落地实践点滴和踩坑记录-(2) -聊聊平台建设

    很久没有写文章记录了,上一篇文章像流水账一样,把所见所闻一个个记录下来.这次专门聊聊DevOps平台的建设吧,有些新的体会和思考,希望给正在做这个事情的同学们一些启发吧. DevOps落地实践点滴和踩 ...

  5. 你真的了解字典(Dictionary)吗? C# Memory Cache 踩坑记录 .net 泛型 结构化CSS设计思维 WinForm POST上传与后台接收 高效实用的.NET开源项目 .net 笔试面试总结(3) .net 笔试面试总结(2) 依赖注入 C# RSA 加密 C#与Java AES 加密解密

    你真的了解字典(Dictionary)吗?   从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面 ...

  6. IDFA踩坑记录

    IDFA踩坑记录: 1.iOS10.0 以下,即使打开“限制广告跟踪”,依然可以读取idfa: 2.打开“限制广告跟踪”,然后再关闭“限制广告跟踪”,idfa会改变: 3.越狱机器安装开发证书打的包, ...

  7. VUE使用微信JDK(附踩坑记录)

    VUE使用微信分享SDK(附踩坑记录) 微信分享官方文档 安装JS-SDK npm i -S weixin-jsapi 引入包 ES5 写法 const wx = require('weixin-js ...

  8. manjaro xfce 18.0 踩坑记录

    manjaro xfce 18.0 踩坑记录 1 简介1.1 Manjaro Linux1.2 开发桌面环境2 自动打开 NumLock3 系统快照3.1 安装timeshift3.2 使用times ...

  9. 移动端Video标签踩坑记录

    需求 用户能在手机上上传视频并预览. 问题 上传完成后安卓下封面展示正常,ios下封面空白.如下图所示: 利用canvas截取视频第一帧发现,ios下截取到的第一帧一直是空白图片, 安卓正常. 后端利 ...

随机推荐

  1. Excel和Word 简易工具类,JEasyPoi 2.1.5 版本发布

    Excel和Word 简易工具类,JEasyPoi 2.1.5 版本发布 摘要: jeasypoi 功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导 ...

  2. 大数据处理架构hadoop

    Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础架构.它是基于java语言开发的,具有很好的跨平台特性,其核心是分布式文件系 ...

  3. 关于手机APP开发的一些常见误解

    移动应用不适用于小型企业和创业公司 如果你想要开发一款移动APP,那么在前期开发一种偏见的态度并不是一个好主意.如果你认为移动APP只有跨国公司和大企业创业者才会去开发,那么你可能错过了成功的捷径.而 ...

  4. bzoj 4919: [Lydsy六月月赛]大根堆

    Description 给定一棵n个节点的有根树,编号依次为1到n,其中1号点为根节点.每个点有一个权值v_i. 你需要将这棵树转化成一个大根堆.确切地说,你需要选择尽可能多的节点,满足大根堆的性质: ...

  5. 51 nod 1610 路径计数(Moblus+dp)

    1610 路径计数 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题   路径上所有边权的最大公约数定义为一条路径的值. 给定一个有向无环图.T次修改操作,每次修改一 ...

  6. [BZOJ]1064: [Noi2008]假面舞会

    题目大意:n个人,k种假面,每人戴一种,戴第i种的可以看见第i+1种,戴第k种的可以看见第1种,给出m条关系表示一个人可以看到另一个人,问k可能的最大值和最小值.(n<=100,000,m< ...

  7. inline使用

    二八法则: 1.将inline限定在最小的,最频繁调用的函数上面.这会使你的调试,二进制升级变得容易,并能将潜在的代码膨胀问题最小化,提高程序运行速度可能性最大化. 2.不要仅仅因为函数模板出现在头文 ...

  8. C++内存机制中内存溢出、内存泄露、内存越界和栈溢出的区别和联系

    当我们在用C++做底层驱动的时候,经常会遇到内存不足的警告,究其原因,往往是因为内存出现溢出,泄露或者越界等原因.那么他们之间有什么联系吗? 内存溢出(out of memory) 是指程序在申请内存 ...

  9. JSSDK实现微信自定义分享---java 后端获取签名信息

    一.首先说下关于微信Access_token的问题,微信Access_token分为2中: 1.授权token获取方式: 这种token需要code值(如何获取code值查看官方文档) "h ...

  10. ⏰Day.js 2kB超轻量时间库 和Moment.js一样的API

    Moment.js 是一个大而全的 JS 时间库,很大地方便了我们处理日期和时间.但是 Moment.js太重了(200k+ with locals),可能一般项目也只使用到了她几个常用的API.虽然 ...