Tengo una aplicación de iOS con destino de implementación iOS 10+, necesito agregar algunas funciones que dependen solo de RealityKit para que aparezcan con los usuarios cuya versión de iOS es 13+, la aplicación compila y se ejecuta correctamente en un dispositivo real, pero el problema es al archivar para subir a AppStore genera un archivo Swift y dice:
// "No such module RealityKit" Claro, el motivo está relacionado con las versiones de iOS <13.0, pero no puedo editar ese archivo (para agregar canImport a RealityKit), es de solo lectura.
Mi pregunta es cómo cruzar este problema y hacer que se archive correctamente con soporte de versiones inferiores.
Aquí hay una demostración que muestra el problema al archivar Demo .
No incluya los archivos .rcproject de Reality Composer en su archivo para su distribución. Los paquetes .rcproject contienen el código con clases, estructuras y enumeraciones de iOS 13.0+. En su lugar, proporcione su proyecto con archivos USDZ .
Para permitir que los usuarios de iOS 13+ usen las funciones de RealityKit, pero aún permitir que los usuarios que no usan AR ejecuten esta aplicación a partir de iOS 10.0, use el siguiente código:
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 #endifEl objetivo de implementación es iOS 10.0:
Al publicar en AppStore (en caso de que tengamos un objetivo de implementación inferior a iOS 13.0), debemos weakly linked la importación de este marco en la configuración de compilación (eso se debe a que RealityKit está profundamente integrado en iOS y Xcode).
Por lo tanto, vaya a Configuración de compilación -> Vinculación -> Otras banderas de vinculación.
Haga doble clic en él, presione + y pegue el siguiente comando :
-weak_framework RealityKit -weak_framework CombinePD En Xcode 13.3, hay una configuración de proyecto que también podría ayudar
OTHER_LDFLAGS = -weak_framework RealityFoundationPor lo tanto, vaya a Configuración de compilación -> Rutas de búsqueda de marco .
Luego escriba allí el siguiente comando:
$(SRCROOT) debe ser recursive .
La ventana de archivos: