Я пытался использовать модуль, написанный на Obj- C, и мой проект только для Swift. Я получил эту ошибку include of a non-modular header inside framework module
в операторе импорта зависимости внутри файла .h фреймворка.
Модуль p * c библиотеки :
Pod::Spec.new do |s|
s.name = 'flutter_vlc_player'
s.version = '0.0.3'
s.summary = 'A new Flutter project.'
s.description = <<-DESC
A new Flutter project.
DESC
s.homepage = 'http://example.com'
s.license = { :file => '../LICENSE' }
s.author = { 'Your Company' => 'email@example.com' }
s.source = { :path => '.' }
s.source_files = 'Classes/**/*'
s.public_header_files = 'Classes/**/*.h'
s.dependency 'Flutter'
s.dependency 'MobileVLCKit', '~> 3.3.10'
s.static_framework = true
s.ios.deployment_target = '9.0'
end
Зависимость MobileVLCKit
.
Я нашел несколько сообщений о похожих проблемах:
Кажется, что отсутствует Карта модулей проекта, я хочу сделать PR, чтобы исправить это в библиотеке, и это позволяет работать с Свифт проекты. Тем не менее, я не знаю, как мне настроить подспе c библиотеки. Я видел такие вещи, как в подспе c:
s.script_phase = {
:name => 'CommonCrypto',
:script => 'COMMON_CRYPTO_DIR="${SDKROOT}/usr/include/CommonCrypto"
if [ -f "${COMMON_CRYPTO_DIR}/module.modulemap" ]
then
echo "CommonCrypto already exists, skipping"
else
# This if-statement means we will only run the main script if the
# CommonCrypto.framework directory doesn not exist because otherwise
# the rest of the script causes a full recompile for anything
# where CommonCrypto is a dependency
# Do a "Clean Build Folder" to remove this directory and trigger
# the rest of the script to run
FRAMEWORK_DIR="${BUILT_PRODUCTS_DIR}/CommonCrypto.framework"
if [ -d "${FRAMEWORK_DIR}" ]; then
echo "${FRAMEWORK_DIR} already exists, so skipping the rest of the script."
exit 0
fi
mkdir -p "${FRAMEWORK_DIR}/Modules"
echo "module CommonCrypto [system] {
header \"${SDKROOT}/usr/include/CommonCrypto/CommonCrypto.h\"
export *
}" >> "${FRAMEWORK_DIR}/Modules/module.modulemap"
ln -sf "${SDKROOT}/usr/include/CommonCrypto" "${FRAMEWORK_DIR}/Headers"
fi',
:execution_position => :before_compile
}
Однако я не знаю, как правильно это сделать. Должен ли я создать файл с именем ModuleMap.h в папке library / Classes? И затем поместите что-то вроде ниже?
каркасный модуль MixModuleFramework {зонтик заголовка "MixModuleFramework.h" export * module * {export *}}
Я не хочу использовать Разрешить не- модульная Включает в Framework Модули внутри проекта. Я хочу, чтобы библиотека работала с другими проектами.
Когда я пытаюсь запустить pod lib lint --no-clean
error: include of non-modular header inside framework module 'flutter_vlc_player.FlutterVlcPlayerPlugin': 'MobileVLCKit/MobileVLCKit.framework/Headers/MobileVLCKit.h' [-Werror,-Wnon-modular-include-in-framework-module]
От ошибок Xcode:
Include of non-modular header inside framework module 'flutter_vlc_player.FlutterVlcPlayerPlugin': '/var/folders/k7/1ptshnq15zn3nz6bgp7sj8h88w6vb6/T/CocoaPods-Lint-20200423-87288-nosd33-flutter_vlc_player/Pods/MobileVLCKit/MobileVLCKit.framework/Headers/MobileVLCKit.h'
Это кажется, что cocoapods автоматически генерирует какую-то карту модулей
framework module flutter_vlc_player {
umbrella header "flutter_vlc_player-umbrella.h"
export *
module * { export * }
}
Тем не менее, я супер нуб по этому вопросу карты модулей, и он не позволяет проектам, использующим swift, создать приложение. Итак, как я могу создать приложение для собственного модуля и сообщить об этом подспе c? Или есть какая-то другая конфигурация, которую необходимо выполнить?