Unity发布至IOS的流程(踩坑记录)
这篇文章主要用于记录本人亲身经历过的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的流程(踩坑记录)的更多相关文章
- Unity 发布到IOS,Android的各种坑
Unity 发布到IOS的注意事项1.开发环境MAC环境:Xcode环境 7.2.1Unity环境:Unity5.32.基本说明首先,我说一下,这是我在对Unity发布到IOS的实际使用中,总结出来的 ...
- Unity AssetBundle 踩坑记录
Unity AssetBundle 踩坑记录 editor 下选择什么平台的 ab 加载 Material doesn't have a color property '_Color' UnityEd ...
- python发布包到pypi的踩坑记录
前言 突然想玩玩python了^_^ 这篇博文记录了我打算发布包到pypi的踩坑经历.python更新太快了,甚至连这种发布上传机制都在不断的更新,这导致网上的一些关于python发布上传到pypi的 ...
- DevOps落地实践点滴和踩坑记录-(2) -聊聊平台建设
很久没有写文章记录了,上一篇文章像流水账一样,把所见所闻一个个记录下来.这次专门聊聊DevOps平台的建设吧,有些新的体会和思考,希望给正在做这个事情的同学们一些启发吧. DevOps落地实践点滴和踩 ...
- 你真的了解字典(Dictionary)吗? C# Memory Cache 踩坑记录 .net 泛型 结构化CSS设计思维 WinForm POST上传与后台接收 高效实用的.NET开源项目 .net 笔试面试总结(3) .net 笔试面试总结(2) 依赖注入 C# RSA 加密 C#与Java AES 加密解密
你真的了解字典(Dictionary)吗? 从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面 ...
- IDFA踩坑记录
IDFA踩坑记录: 1.iOS10.0 以下,即使打开“限制广告跟踪”,依然可以读取idfa: 2.打开“限制广告跟踪”,然后再关闭“限制广告跟踪”,idfa会改变: 3.越狱机器安装开发证书打的包, ...
- VUE使用微信JDK(附踩坑记录)
VUE使用微信分享SDK(附踩坑记录) 微信分享官方文档 安装JS-SDK npm i -S weixin-jsapi 引入包 ES5 写法 const wx = require('weixin-js ...
- manjaro xfce 18.0 踩坑记录
manjaro xfce 18.0 踩坑记录 1 简介1.1 Manjaro Linux1.2 开发桌面环境2 自动打开 NumLock3 系统快照3.1 安装timeshift3.2 使用times ...
- 移动端Video标签踩坑记录
需求 用户能在手机上上传视频并预览. 问题 上传完成后安卓下封面展示正常,ios下封面空白.如下图所示: 利用canvas截取视频第一帧发现,ios下截取到的第一帧一直是空白图片, 安卓正常. 后端利 ...
随机推荐
- scrapy爬取全部知乎用户信息
# -*- coding: utf-8 -*- # scrapy爬取全部知乎用户信息 # 1:是否遵守robbots_txt协议改为False # 2: 加入爬取所需的headers: user-ag ...
- jacascript 立即执行函数(IIFE)与闭包
前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! 一直没搞清楚立即执行函数和闭包之间的关系,总结一下: 闭包有很多种理解:访问不到内部作用域,函数就是这样, ...
- .NET MD5 加密
using System; using System.Security.Cryptography; using System.Text; namespace Md5Demo { /// <sum ...
- 我的webstorm 使用总结
有一次 ,我改了公共组件里的好多组件 ,然后我肯定是哪里改的不对 ,出语法错误了 ,但是我的 webstorm 编译并没有报错,然后我就手动一点点 改 ,去看 ,最后还是没有找到 ,我就把文件夹给删了 ...
- ios开发-指纹识别
最近我们使用支付宝怎么软件的时候,发现可以使用指纹了,看起来是否的高大上.当时苹果推出了相关接口,让程序写起来很简单哈. 在iPhone5s的时候,苹果推出了指纹解锁.但是在ios8.0的时候苹果才推 ...
- java制作验证码(java验证码小程序)
手动制作java的验证码 Web应用验证码的组成: (1)输入框 (2)显示验证码的图片 验证码的制作流程: 生成验证码的容器使用 j2ee的servlet 生成图片需要的类: (1) Buffere ...
- 2015 多校联赛 ——HDU5386(暴力)
Sample Input 1 3 5 2 2 1 2 3 3 2 1 3 3 3 3 3 3 3 3 3 3 H 2 3 L 2 2 H 3 3 H 1 3 L 2 3 Sample Output ...
- [APIO2012]
来自FallDream的博客,未经允许,请勿转载,谢谢. --------------------------------------------------- A.dispatching 派遣 上次 ...
- 勤拂拭软件Android开发之旅(1) 之 Android 开发环境搭建
勤拂拭软件工作室原创出品,欢迎转载,欢迎交流. 转载请注明原文:http://www.cnblogs.com/wangleiblog/p/6019063.html 勤拂拭软件Android开发之旅目录 ...
- spring boot新建项目问题总结
1.启动报:Unregistering JMX-exposed beans on shutdown 原因:以来的Tomcat没有启动 解决办法:在pom.xml加入依赖 <dependency& ...