ошибка компиляции при переносе приложения AudioKit iOS в приложение Catalyst для macOS
У меня есть приложение для iOS, которое отлично работает со сборкой AudioKit для iOS. Я хотел попробовать портировать на macOS w Catalyst, зайдя в AudioKit.xcframework. Вот что я сделал
- скомпилировать AudioKit-4.9.5 из исходного кода для создания AudioKit.xcframework (ранее я использовал локально скомпилированную платформу iOS AudioKit из того же исходного выпуска без проблем в версии, отличной от Catalyst)
- на вкладке "Общие",
- проверил Mac как цель развертывания
- удален старый фреймворк AudioKit iOS
- добавлен AudioKit.xcframework
- на вкладке "Настройки сборки",
- измените "Пути поиска платформы" из родительского каталога платформы AudioKit iOS на родительский каталог AudioKit.xcframework
- на вкладке "Этапы сборки"
- 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 {
раздел.