Приложение RealityKit по умолчанию не работает

При запуске сгенерированного приложения дополненной реальности с RealityKit из Xcode на экране ничего не появляется, и я получаю странные журналы на консоли:

2020-09-16 16:54:29.246883+0200 TestAR[494:29654] Metal GPU Frame Capture Enabled 
2020-09-16 16:54:29.247203+0200 TestAR[494:29654] Metal API Validation Enabled
2020-09-16 16:54:29.792709+0200 TestAR[494:29654] Compiler failed to build request
2020-09-16 16:54:29.792957+0200 TestAR[494:29654] [Graphics] makeRenderPipelineState failed [output of type ushort is not compatible with a MTLPixelFormatR16Float color attachement.].
2020-09-16 16:54:29.792989+0200 TestAR[494:29654] [Graphics] makeRenderPipelineState failed.

Я попытался запустить приложение на двух своих устройствах, и результат тот же. Также пытался использовать Xcode 12, результат тот же. Что еще более тревожно, так это то, что я заставил приложение работать как 2 раза на 20+ попытках наугад, ничего не меняя, просто убивая приложение и перезапуская или закрывая xcode и перезапуская.

Вот код, но это только базовый сгенерированный код:

struct ContentView : View {
    var body: some View {
        return ARViewContainer().edgesIgnoringSafeArea(.all)
    }
}

struct ARViewContainer: UIViewRepresentable {
    
    func makeUIView(context: Context) -> ARView {       
        let arView = ARView(frame: .zero)
        let boxAnchor = try! Experience.loadBox()
        arView.scene.anchors.append(boxAnchor)
        return arView       
    } 
    func updateUIView(_ uiView: ARView, context: Context) {}
}

На данный момент я не совсем понимаю, что делаю не так, вот дополнительная информация:

  • macOS Catalina v10.15.5
  • iPhone X 13.5.1
  • iPhone X 13.7
  • iPhone 6S Plus 13.5.1
  • Xcode 11.7
  • Xcode 12

person Wimps    schedule 16.09.2020    source источник


Ответы (1)


Сначала вы должны убедиться, что вы не изменили содержимое в AppDelegate.swift файле. Контроллер корневого представления окна должен происходить от contentView:

let contentView = ContentView()
window.rootViewController = UIHostingController(rootView: contentView)
window.makeKeyAndVisible()


Решение I

Иногда в Xcode вы можете наблюдать ошибку - ваше приложение не может быть запущено или запущено из-за некоторых ошибок, обнаруженных в промежуточной папке скомпилированных данных. Все, что вам нужно сделать, это очистить каталог DerivedData.

Для этого в Finder просто нажмите сочетание клавиш Cmd - Shift - G и укажите следующий путь для перехода в желаемый каталог:

~/Library/Developer/Xcode/DerivedData/

После удаления содержимого каталога DerivedData ваше скомпилированное приложение должно работать должным образом.

Дополнительная информация о DerivedData:

DerivedData - это папка, расположенная по умолчанию в ~/Library/Developer/Xcode/DerivedData. Это место, где Xcode хранит все виды промежуточных результатов сборки, сгенерированные индексы и т. Д. Местоположение DerivedData можно настроить в настройках Xcode (вкладка «Местоположения»).


Решение II

Если два вышеуказанных шага не помогли, вам следует переустановить Xcode.

person Andy Fedoroff    schedule 17.09.2020