Google CardBoard 之 Unity5.3.3f1 + XCode 7.2.1 部署笔记

本文主要参考 Google Developers CardBoard 官网 入门指南(iOS) 说明文档编写,不同之处在于,官网文档更新没有跟上Unity和XCode以及iOS的更新速度,造成项目生成及编译部署存在一些没有说明的情况,文中就以我实际生成项目的过程中遇到的问题及处理方式作一个笔记

Unity for iOS 入门指南

本页面介绍如何构建和部署 Cardboard SDK for Unity 中随附的演示版 Cardboard 场景。 我们假设用户以前没怎么用过 Unity,但熟悉 iOS 应用的开发。

先决条件
  • iPhone 版本:Cardboard SDK for iOS 只能与运行 iOS 8 的 iPhone 5 和更新的机型配合使用。
  • Unity 版本:如果运行的是 Unity 4.5 或更高版本,则 Cardboard SDK 只能与 iOS 配合使用。 下载最新版本的 Unity 需要自行注册帐号
  • XCode确保已经安装到Mac上

我的配置环境:


Google CardBoard 之 Unity5.3.3f1 + XCode 7.2.1 部署笔记_第1张图片
Google CardBoard 之 Unity5.3.3f1 + XCode 7.2.1 部署笔记_第2张图片

不过你可能因为天朝的GreatWall而感到无奈,不过不要紧,我共享一个工具给你 Latern 只可意会,不可言传哦,这样你就可以更加了解这个世界了 -_-#

设置 Unity for iOS

下载 Cardboard SDK for Unity
下载 Cardboard for Unity 演示版

  • 当我把上面两个包文件下载完、并安装了Unity5.3.3f1以及XCode 7.2.1后,打开了 Unity,创建一个新项目如下:

  • 导入 Cardboard SDK:转到 Assets > Import Package > Custom Package。 选择 CardboardSDKForUnity unitypackage 下载软件包并点击 Open。 确保已勾选 Importing Package 对话框中的所有复选框,并点击 Import。 注:如果您使用的是 Unity 5,系统会警告您 API 将自动升级。 如果出现上述警告,请接受它并继续操作。
    导入Cardboard 演示版:重复上述步骤,这次请选择CardboardDemoForUnity unitypackage。

Google CardBoard 之 Unity5.3.3f1 + XCode 7.2.1 部署笔记_第3张图片

选择先前下载两个包,并分别导入,确保所有复选框都选中

导入完成会看到这个:

  • 在编辑器的 Project 窗格中,导航至 Assets > Cardboard > DemoScene 文件夹,然后打开 DemoScene。 您应该能够看到这样的一个场景,在贴有纹理的网格平面上漂浮着一个立方体

  • 按Play,您会看到一个游戏视图,上面显示呈现立体感的红色立方体。 在播放模式中,按 Alt 并移动鼠标可沿水平方向和垂直方向平移,从而模拟您的头部移动。 使用 Ctrl 模拟头部从一边向另一边倾斜

Google CardBoard 之 Unity5.3.3f1 + XCode 7.2.1 部署笔记_第4张图片

基本上到这一步一般不会出问题

构建 Unity Project

在首次构建之前,您需要先进行几个设置

  • 转到 File > Build Settings,打开 Build Settings。在 Platform 下面选择 iOS。 选择 iOS 后,点击 Switch Platform 按钮。

Google CardBoard 之 Unity5.3.3f1 + XCode 7.2.1 部署笔记_第5张图片

  • 点击 Player Settings 打开 Inspector 中的 PlayerSettings 面板。
    在 PlayerSettings 中,在 iOS 设置的底部, 点击 Resolution and Presentation 可展开该面板,然后将 Default Orientation 设为 Landscape Left。

Google CardBoard 之 Unity5.3.3f1 + XCode 7.2.1 部署笔记_第6张图片

  • 点击 Other Settings 以展开该面板,并查找 Bundle Identifier 字段。 为应用输入有效的软件包名称(如 com.mycompany.cardboarddemo),该名称须遵循 Java 软件包和/或 .Net 命名空间的命名规则。 该名称格式通常为 com.yourcompany.appname ,我这里改成了com.baofeng.cardboard,你可以改成你的,但要保证不与别人的重复

  • 点击 Build之前确保勾选了symlink Unity libraries。 系统会提示您保存名称,并在 [您的 Unity 项目]/[您的保存名称] 目录中准备一个 XCode 项目 ]这就生成了一个XCode项目,之后我们用XCode 打开这个生成的项目

Google CardBoard 之 Unity5.3.3f1 + XCode 7.2.1 部署笔记_第7张图片

  • 在下一部分中,我们将该项目部署到 iPhone。

在 XCode 中部署项目(这一部分对于最新的XCode会出些问题,是我主要记录的)

  • 打开 XCode。 从 File > Open… 菜单中,打开您创建的 XCode 项目。 它将成为您在上一个部分下面刚保存的目录中名为 Unity-iPhone.xcodeproj 的文件。
  • 点击 Unity-iPhone 项目并选中它。在项目菜单栏中,点击 Build Phases 以打开该部分。展开 Link Binary With Libraries 列表。确保CoreText.framework在列表中,如果不在,点击 “Link Binary With Libraries” 列表最底部的 + 号添加
  • 转到General页给程序解决签名问题

Google CardBoard 之 Unity5.3.3f1 + XCode 7.2.1 部署笔记_第8张图片

  • 现在,通过点击 play 按钮,或转到 Product > Run 来运行项目。
    如果一切进展顺利,您应该会看到 “Build Succeeded” ,并且 Cardboard 演示版在 iPhone 上启动!

这里列出出现的的问题(官方文档没有包括)

  • ld: ‘/Users/JokerAtBaoFeng/Documents/project/CBUnity/Libraries/Plugins/iOS/libvrunity.a(vraudio_unity.o)’ does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

这是因为XCode 7默认开启了bit code功能,解决的方法要么是重新导入支持bitcode的库,要么关闭bitcode功能 ,这里当然是关闭该功能了,这里要对两个地方的bitcode设置同时进行关闭如下图,就是项目设置中的Build Settings 中搜索bitcode项,并分别对项目和设备target构建配置分别进行设置,之后再次点击play编译运行一次

Google CardBoard 之 Unity5.3.3f1 + XCode 7.2.1 部署笔记_第9张图片

Google CardBoard 之 Unity5.3.3f1 + XCode 7.2.1 部署笔记_第10张图片

上面关闭bitcode功能进行编译后又出现一个问题

  • ___75-[GTMSessionFetcher URLSession:task:didReceiveChallenge:completionHandler:]_block_invoke651 in libvrunity.a(GTMSessionFetcher.o)
    ld: symbol(s) not found for architecture armv7
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

这个问题可以通过在项目设置文件的Build Phases中的Link Binary with libraries 中添加 Security.framework,通过这个framework添加后,就可以编译成功了,并且部署到iPhone机器上,我这时机器的系统是iOS 9.2.1版本

Google CardBoard 之 Unity5.3.3f1 + XCode 7.2.1 部署笔记_第11张图片

  • 哦对了,还有一个警告可以修复,点黄色警告图标,选择perform changes就行

  • 在 XCode 中,您可能会收到一个构建错误,显示 “Multiple build commands to output file [your project] resources.bundle”。
    如果您看到此错误,表明您可能有第二个构建指令。 在 Xcode 项目的 Build Phases 部分中,有一个称为 Copy Bundle Resources 的部分。 resources.bundle 已出现两次。 删除其中一个。

对了,我是在真机上测试的,不知道怎么了,用模拟器总是会在运行的时候崩溃,有知道解决办法的回复我一下

你可能感兴趣的:(xcode,unity,demo,Cardboard,iOS9-2-1)