【问题标题】:RealityKit app and lower iOS deployment targetRealityKit 应用和较低的 iOS 部署目标
【发布时间】:2022-05-15 15:44:03
【问题描述】:

我有一个部署目标为 iOS 10+ 的 iOS 应用程序,我需要添加一些仅依赖于 RealityKit 的功能才能出现在其 iOS 版本为 13+ 的用户中,该应用程序在真实设备上编译并成功运行,但问题是是在存档上传到 AppStore 时,它​​会生成一个 Swift 文件并说:

// "No such module RealityKit"

当然原因与 iOS 版本 canImport 添加到 RealityKit)它是只读的。

我的问题是如何解决这个问题并在低版本支持的情况下成功存档?

这是一个演示,显示归档 Demo 时出现的问题。

【问题讨论】:

  • 你对为什么要支持一个 5 年的 iOS 版本,甚至 Apple 不再支持有什么限制吗?
  • iphone 5 有很多用户,我需要支持他们,因为他们至少在 ios 11 上被丢弃了,这也无法解决当前问题
  • @Fogmeister 你能试试这个演示吗?可能有一些东西可以在构建阶段/设置或其他地方完成,我想这是一个与向后兼容性相反的问题,应该有一个解决方案它 ?我在 Apple 论坛上发帖,没有任何回应
  • @rekopeek,试试我的解决方案,它有效。

标签: swift augmented-reality realitykit


【解决方案1】:

首先:

请勿在存档中包含 Reality Composer 的 .rcproject 文件以进行分发。 .rcproject 包包含带有 iOS 13.0+ 类、结构和枚举的代码。相反,为您的项目提供 USDZ 文件。

其次:

要允许 iOS 13+ 用户使用 RealityKit 功能,但仍允许非 AR 用户从 iOS 10.0 开始运行此应用,请使用以下代码:

import UIKit

#if canImport(RealityKit)
import RealityKit
import Combine

@available(iOS 13.0, *)
class ViewController: UIViewController {
    
    var arView = ARView(frame: .zero)
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        arView.frame = self.view.frame
        self.view.addSubview(arView)
                
        let entity = ModelEntity(mesh: .generateBox(size: 0.1))
        let anchor = AnchorEntity(world: [0,0,-2])
        anchor.addChild(entity)
        arView.scene.anchors.append(anchor)
    }
}

#else
import SceneKit

#endif

部署目标是iOS 10.0:

第三:

发布到 AppStore 时(如果我们的部署目标低于 iOS 13.0),我们必须在构建设置中导入此框架 weakly linked(这是因为 RealityKit 已深度集成在 iOS 和 Xcode 中)。

所以,去 Build Settings –> Linking -> Other linker Flags

双击它,按+,然后粘贴following command:

-weak_framework RealityKit -weak_framework Combine

附:在 Xcode 13.3 中,有一个项目设置也可以提供帮助

OTHER_LDFLAGS = -weak_framework RealityFoundation

第四:

所以,转到 Build Settings –> Framework Search Paths

然后输入以下命令:

$(SRCROOT)

必须是recursive

第五

档案窗口:

【讨论】:

  • 它有效。我测试了它。没有错误。
  • 从 Reality Composer 将场景导入为 USDZ,或在 Maya 中将其保存为 USD(USDA、USDC、USDZ)。 stackoverflow.com/questions/50846627/…
  • @rekopeek,创建一个新问题并发布您的代码...
  • 请不要编辑这个问题!发布一个新的!!!!
  • 好的。但是,请仔细阅读我的两篇文章——带有链接。
猜你喜欢
  • 2017-10-04
  • 1970-01-01
  • 2011-07-23
  • 1970-01-01
  • 1970-01-01
  • 2019-02-21
  • 2011-08-01
  • 2015-02-14
  • 2018-03-17
相关资源
最近更新 更多