配置EasyAR Sense for iOS

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

如果你需要使用EasyAR Sense Unity Plugin,请阅读 EasyAR Sense Unity Plugin

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

安装需求

  • XCode 11 或更新版本(AppStore接受的XCode最低版本请参考 苹果官方文档

  • ARM64 CPU的iPhone、iPad等iOS真机(EasyAR不支持在模拟器和ARMv7上运行)

Static framework 还是 dynamic framework

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

EasyAR Sense提供 static framework 及 dynamic framework。

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

关于选择 framework的一些提示,

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

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

  • static framework中包含x86, x86_64和armv7的空实现接口,可用于为模拟器和ARMv7编译,但不能运行。dynamic framework不包含x86和x86_64的空实现接口,只包含armv7的空实现接口。

添加 Frameworks

Static Framework

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

  • easyar.framework

  • libc++.tbd

  • Accelerate.framework

  • AVFoundation.framework

  • CoreGraphics.framework

  • CoreImage.framework

  • CoreMedia.framework

  • CoreMotion.framework

  • CoreVideo.framework

  • OpenGLES.framework

  • UIKit.framework

  • ARKit.framework (以optional方式添加)

../_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];

隐私配置

需要配置一些隐私设置。

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

../_images/image55.png

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

../_images/image56.png

其它代码

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

如何使用Swift API

EasyAR Sense Swift API 是以源代码形式提供的,这样可以提供最好的兼容性(苹果从Swift 5开始提供ABI兼容)。

使用EasyAR Sense 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

    • Accelerate.framework

    • AVFoundation.framework

    • CoreGraphics.framework

    • CoreImage.framework

    • CoreMedia.framework

    • CoreMotion.framework

    • CoreVideo.framework

    • OpenGLES.framework

    • UIKit.framework

    • ARKit.framework (以optional方式添加)

    ../_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