ошибка компиляции при переносе приложения AudioKit iOS в приложение Catalyst macOS - PullRequest
2 голосов
/ 19 апреля 2020

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

  1. скомпилировал AudioKit-4.9.5 из исходного кода для генерации AudioKit.xcframework (ранее я использовал локально скомпилированный каркас AudioKit iOS из того же исходного релиза без проблем с версия без Catalyst)
  2. на вкладке «Общие»,
    • проверил Ma c как цель развертывания
    • удалил старый AudioKit iOS framework
    • добавлен AudioKit.xcframework
  3. на вкладке «Настройки сборки»,
    • изменить «Пути поиска платформы» из родительского каталога платформы AudioKit iOS в родительский каталог AudioKit.xcframework
  4. на вкладке «Фазы сборки»,
    • AudioKit.xcframework появляется в «Связать двоичные файлы с библиотеками»
    • AudioKit.xcframework появляется в «Embed Frameworks»

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

AudioKit.xcframework compilation errors

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

Ответы [ 2 ]

1 голос
/ 24 апреля 2020

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

0 голосов
/ 28 апреля 2020

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

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

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

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


  @objc override dynamic public init()

из @objc open class AKSampler : AKPolyphonicNode, AKComponent { section.


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

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

  @objc override dynamic public init()

из секции @objc open class AKSampler : AKPolyphonicNode, AKComponent {.

...