配置EasyAR iOS SDK(非Unity)

这篇文章介绍如何使用EasyAR package配置EasyAR非Unity的iOS工程。

如果你需要使用EasyAR Unity package,请阅读 这篇文章 了解使用package的配置,或 这篇文章 了解Unity样例的使用。

如果你需要运行EasyAR非Unity的iOS样例,请阅读 这篇文章

安装需求

  • XCode 6 或更新版本(我们在XCode 6.4和XCode 7.1中测试通过)

  • IPhone或IPad或其它真实Apple设备(EasyAR不支持在虚拟机上运行)

Static framework 还是 dynamic framework

Static framework 和 dynamic framework 不是Apple的官方语言。我们在这里使用这些词组来表示包含静态库的framework和包含动态库的framework。

EasyAR SDK 从2.0版本开始提供 static framework 及 dynamic framework。在1.x版本中只提供了static framework。

Dynamic framework 是在 iOS 8.0 之后引入的,在使用dynamic framework的时候需要将app的编译 target 设为 iOS 8 或以后。

如果对 Apple的 dynamic framework不熟悉,可以阅读Apple的 Embedding Frameworks In An App 文档。

关于选择 framework的一些提示,

  • Dynamic framework 不能使用在 iOS 7系统上,所以如果你希望app兼容 iOS 7 ,则需要使用 static framework。

  • Apple 对上传app store的可执行文件的二进制大小有限制,所以如果你有一个非常大的可执行文件,需要选择 dynamic framework,这样做不会增加可执行文件的大小。请注意整体的app的大小并不会改变。

  • 不同类型的framework的执行时间、性能和特性不会有任何区别。

添加 Frameworks

Static Framework

在使用EasyAR static framework的时候需要添加这些 framework,

  • easyar.framework

  • libc++.tbd

  • AVFoundation.framework

  • CoreGraphics.framework

  • CoreImage.framework

  • CoreMedia.framework

  • CoreVideo.framework

  • OpenGLES.framework

  • UIKit.framework

../_images/image51.png

对于 EasyAR SDK Pro,需要额外添加这些framework

  • Accelerate.framework

  • CoreMotion.framework

../_images/image52.png

Dynamic Framework

在使用EasyAR dynamic framework的时候只有 easyar.framework 是需要添加的,

  • easyar.framework

../_images/image53.png

不要忘记将 easyar.framework 加入 Embedded Binaries 列表。

禁用 Bitcode

EasyAR 不使用bitcode也不提供 bitcode 兼容性。

需要保证在配置中禁用bitcode,

../_images/image54.png

初始化EasyAR

使用easyar_Engine的initialize: 方法来初始化EasyAR。你可以添加初始化代码如下,

[easyar_Engine initialize:key];

设置rotation

使用easyar_Engine的setRotation: 方法来设置rotation。你可以添加代码如下,

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];

    switch (toInterfaceOrientation)
    {
        case UIInterfaceOrientationPortrait:
            [easyar_Engine setRotation:270];
            break;
        case UIInterfaceOrientationPortraitUpsideDown:
            [easyar_Engine setRotation:90];
            break;
        case UIInterfaceOrientationLandscapeLeft:
            [easyar_Engine setRotation:180];
            break;
        case UIInterfaceOrientationLandscapeRight:
            [easyar_Engine setRotation:0];
            break;
        default:
            break;
    }
}

隐私配置

需要配置一些隐私设置。

如果要使用 camera,添加 Privacy - Camera Usage Description

../_images/image55.png

如果要使用录屏,添加 Privacy - Microphone Usage Description

../_images/image56.png

其它代码

剩下的就是写EasyAR的逻辑以及其它代码。你可以参考EasyAR的样例来实现。

如何使用Swift API

EasyAR SDK Swift API 是在 2.1.0 版本中引入,如果你需要使用内置的 Swift API,请确保使用 EasyAR SDK 2.1.0 或更新版本。

EasyAR SDK Swift API 是以源代码形式提供的,这样可以提供最好的兼容性(苹果没有对不同Swift版本提供严格的ABI兼容方案)。

使用EasyAR SDK Swift API需要首先创建一个framework工程然后将framework target嵌入到你的工程中。由于不同项目的配置可能会有所不同,所以EasyAR没有提供预先配置好的XCode工程。

创建 EasyARSwift framework 工程

  1. 创建一个 Cocoa Touch Framework 类型的新工程并命名为EasyARSwift

    ../_images/image91.png ../_images/image92.png

    你可以选择将EasyARSwift工程嵌入到你的app工程里面或创建独立的工程。

    ../_images/image93.png
  2. 导入EasyAR Swift代码到 EasyARSwift 工程

    ../_images/image94.png

    XCode自动生成的 EasyARSwift.h 文件并没有被使用,可以安全删除。

  3. 在build settings中配置 Objective-C Bridging Header

    ../_images/image95.png

    请注意,这个选项在导入swift文件之前不会显示在XCode选项中,所以请一定先导入Swift代码再进行配置更改。

  4. 导入 static easyar.framework 到 EasyARSwift 工程中

  5. 添加 Linked Frameworks and Librarires

    在使用EasyAR static framework的时候需要添加这些 framework,

    • easyar.framework

    • libc++.tbd

    • AVFoundation.framework

    • CoreGraphics.framework

    • CoreImage.framework

    • CoreMedia.framework

    • CoreVideo.framework

    • OpenGLES.framework

    • UIKit.framework

    ../_images/image51.png

    对于 EasyAR SDK Pro,需要额外添加这些framework

    • Accelerate.framework

    • CoreMotion.framework

    ../_images/image52.png
  6. 关闭 Bitcode

    EasyAR 不使用bitcode也不提供 bitcode 兼容性。

    需要保证在配置中禁用bitcode,

    ../_images/image54.png
  7. Deployment Target

    根据你自己的app工程修改 deployment target,保证 EasyARSwift的工程的deployment target比app工程的小或相等。

    ../_images/image96.png

嵌入和使用 EasyARSwift framework

  1. 在工程中嵌入EasyARSwift framework

    ../_images/image97.png ../_images/image98.png
  2. 在Swift源代码中 import EasyARSwift

    ../_images/image99.png
  3. 代码书写方式可以参考 HelloARSwift 样例中的代码或 API reference