ошибка компиляции при переносе приложения AudioKit iOS в приложение Catalyst для macOS

У меня есть приложение для iOS, которое отлично работает со сборкой AudioKit для iOS. Я хотел попробовать портировать на macOS w Catalyst, зайдя в AudioKit.xcframework. Вот что я сделал

  1. скомпилировать AudioKit-4.9.5 из исходного кода для создания AudioKit.xcframework (ранее я использовал локально скомпилированную платформу iOS AudioKit из того же исходного выпуска без проблем в версии, отличной от Catalyst)
  2. на вкладке "Общие",
    • проверил Mac как цель развертывания
    • удален старый фреймворк AudioKit iOS
    • добавлен AudioKit.xcframework
  3. на вкладке "Настройки сборки",
    • измените "Пути поиска платформы" из родительского каталога платформы AudioKit iOS на родительский каталог AudioKit.xcframework
  4. на вкладке "Этапы сборки"
    • AudioKit.xcframework появляется в разделе "Связать двоичный файл с библиотеками"
    • AudioKit.xcframework появляется в разделе "Встроенные рамки".

Я получаю следующие ошибки:

В настоящее время используется Xcode 11.4.1.

2 ответа

Решение

Отвечая на мой собственный вопрос здесь, поскольку эта проблема, похоже, является артефактом модуля AudioKit, содержащего класс AudioKit. Переименование класса AudioKit во что-то другое решает проблему, хотя я бы отговаривал людей делать это и вместо этого ждать будущей версии AudioKit, которая сделает это.

У меня была точно такая же проблема. Я закончил редактированиемx86_64-apple-ios-macabi.swiftinterface файл и исправьте интерфейс вручную.

Мне нужно было только префикс AudioKit.в от идентификатора неразрешенный. Это больше похоже на ошибку с конфигурацией сборки XCFramework/ генератором быстрого интерфейса.

Я также сталкиваюсь со сбоем во время выполнения при использовании AKSampler(). Почему-то компилятор не понимает, что.init() не существует, и что он должен использовать AKSampler(masterVolume: 1.0, pitchBend: 0.0, ... filterEnvelopeVelocityScaling: 0.0)прототип. Вызов вручную со значениями по умолчанию исправляет это.

Изменить: вам не нужно явно вызывать длинный инициализатор, вам просто нужно удалить строку:


  @objc override dynamic public init()

от @objc open class AKSampler : AKPolyphonicNode, AKComponent { раздел.


Подводя итог: отредактируйте x86_64-apple-ios-macabi.swiftinterface в XCFramework/AudioKit.output а также AudioKit.midi.client вместо неразрешенного идентификатора.

Если вы используете AKSampler, удалите строку:

  @objc override dynamic public init()

от @objc open class AKSampler : AKPolyphonicNode, AKComponent { раздел.

Другие вопросы по тегам