RealityKit 应用和较低的 iOS 部署目标
RealityKit app and lower iOS deployment target
我有一个部署目标为 iOS 10+ 的 iOS 应用程序,我需要添加一些仅依赖于 RealityKit 的功能,以显示其 iOS 版本为 13 的用户+,该应用程序在真实设备上编译并成功运行,但问题是在存档以上传到 AppStore 时,它会生成一个 Swift 文件并显示:
// "No such module RealityKit"
确定原因与 iOS 版本 <13.0 有关,但我无法编辑该文件(将 canImport
添加到 RealityKit)它是只读的。
我的问题是如何解决这个问题并使其在低版本支持下成功存档?
这是一个展示存档时问题的演示 Demo。
首先:
请勿在您的存档中包含 Reality Composer 的 .rcproject
文件以供分发。 .rcproject
捆绑包包含 iOS 13.0+ 类,结构和枚举。相反,为您的项目提供 USDZ 个文件。
其次:
要允许 iOS 13+ 用户使用 RealityKit 功能,但仍允许 non-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
部署目标是iOS10.0:
第三:
发布到 AppStore 时(如果我们的部署目标低于 iOS 13.0),我们必须在构建设置中导入此框架 weakly linked
(这是因为 RealityKit深度融入 iOS 和 Xcode).
所以,转到Build Settings –> Linking -> Other linker Flags。
Double-click它,按+,然后粘贴following command:
-weak_framework RealityKit -weak_framework Combine
P.S。在 Xcode 13.3 中,有一个项目设置也可以帮助
OTHER_LDFLAGS = -weak_framework RealityFoundation
第四次:
因此,转到 构建设置 –> 框架搜索路径.
然后输入以下命令:
$(SRCROOT)
必须是recursive
.
第五次
档案window:
我有一个部署目标为 iOS 10+ 的 iOS 应用程序,我需要添加一些仅依赖于 RealityKit 的功能,以显示其 iOS 版本为 13 的用户+,该应用程序在真实设备上编译并成功运行,但问题是在存档以上传到 AppStore 时,它会生成一个 Swift 文件并显示:
// "No such module RealityKit"
确定原因与 iOS 版本 <13.0 有关,但我无法编辑该文件(将 canImport
添加到 RealityKit)它是只读的。
我的问题是如何解决这个问题并使其在低版本支持下成功存档?
这是一个展示存档时问题的演示 Demo。
首先:
请勿在您的存档中包含 Reality Composer 的 .rcproject
文件以供分发。 .rcproject
捆绑包包含 iOS 13.0+ 类,结构和枚举。相反,为您的项目提供 USDZ 个文件。
其次:
要允许 iOS 13+ 用户使用 RealityKit 功能,但仍允许 non-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
部署目标是iOS10.0:
第三:
发布到 AppStore 时(如果我们的部署目标低于 iOS 13.0),我们必须在构建设置中导入此框架 weakly linked
(这是因为 RealityKit深度融入 iOS 和 Xcode).
所以,转到Build Settings –> Linking -> Other linker Flags。
Double-click它,按+,然后粘贴following command:
-weak_framework RealityKit -weak_framework Combine
P.S。在 Xcode 13.3 中,有一个项目设置也可以帮助
OTHER_LDFLAGS = -weak_framework RealityFoundation
第四次:
因此,转到 构建设置 –> 框架搜索路径.
然后输入以下命令:
$(SRCROOT)
必须是recursive
.
第五次
档案window: