Получение ошибки "Нет такого модуля" с использованием Xcode, но структура существует

Я сейчас кодирую в Swift, и у меня есть ошибка:

Нет такого модуля Social

Но я не понимаю, потому что модуль находится в моем проекте, объявленном в "Связанных фреймворках и библиотеках" и в "Встроенных бинарных файлах".

Фреймворки находятся в Objective-C, поэтому я написал для него заголовок Bridge.

Пожалуйста, как я могу заставить Xcode распознать фреймворк?

Error module

Project

Linkes Frameworks, Libraries

Header bridge

Ответ 1

Я не уверен, почему это происходит, но один из способов решить вашу проблему - войти в ваши настройки сборки и определить Пути поиска в каркасе в папку, в которой содержит соответствующие рамки. Если рамки размещены в каталоге проекта, просто установите путь поиска фрейма к $(SRCROOT) и установите его на рекурсивный.

Ответ 2

В случае, если в пятницу днем ​​или в любое время после 1 часа ночи:

Открытие xcodeproj вместо xcworkspace приведет к ошибке, подобной этой...

Ответ 3

Я не совсем уверен, почему Martin R ответ в комментариях к вопросу так игнорируется:

Убедитесь, что вы попробовали просто пропустить импорт фреймворка, поскольку он уже добавлен с заголовком моста.

Надеюсь, что это поможет

Ответ 4

Убедитесь, что имена ваших конфигураций в подпроектах совпадают с именами "родительского" проекта. Если имена конфигурации не совпадают точно (с учетом регистра), Xcode прервет процесс архивирования и покажет ошибку "Нет такого модуля..."

То есть, если у вас есть "родительский" проект с конфигурацией "AppStore", вы должны убедиться, что все подпроекты также имеют это имя конфигурации.

Смотрите мои скриншоты.

Configuration setup in "parent" project

Configuration setup in 1st sub project

Configuration setup in 2nd sub project

Ответ 5

У меня была такая же проблема с использованием Cocoapods и Swift. Я не заметил следующие строки в подпикселе:

# Uncomment this line if you're using Swift
# use_frameworks!

Итак, все, что мне нужно было сделать, это изменить его на:

# Uncomment this line if you're using Swift
use_frameworks!

... aaand он работал:)

Ответ 6

Сравните этот скриншот с настройкой сборки. Это может работать. Перейдите к пути поиска фреймов:

Введите описание изображения здесь

Ответ 7

Я тоже испытывал эту проблему. Исправить меня было то, что схемы Архива между двумя проектами не совпадали. У меня есть xcworkspace с проектом framework и проектом приложения. Проблема заключалась в том, что в схеме Архива для моего приложения я использовал другую конфигурацию сборки, чем схема использовала для нее схему архива. Я установил обе версии Build Configures для Release, и это устранило проблему.

Ответ 8

Следующие шаги работали для меня.

  1. Выйти из xcode
  2. Запустите "pod update" в терминале
  3. Откройте .xcworkspace и .xcworkspace снова.

Ответ 9

В моем случае, после многих попыток выяснить, что я делал неправильно при импорте фреймворка, я обнаружил, что проблема заключается в самой фреймворке. Если вы не получаете ваш фреймворк из надежного источника, вы должны проверить фреймворк и убедиться, что он содержит папку Modules с файлом module.modulemap внутри. Если файл module.modulemap отсутствует, вы получите сообщение об ошибке "Нет такого модуля" MyFramework "".

Example showing directory structure of SwiftyJSON.framework

Если в папке "Модули" отсутствует папка "MyFramework.swiftmodule", то платформа будет найдена, но XCode не будет знать о ее содержимом, поэтому вы получите различные ошибки.

Ответ 10

Предполагая, что Framework действительно есть и в пути и т.д., удалите каталог ~/Library/Developer/Xcode/DerivedData/ModuleCache (и очистите проект и удалите данные, специфичные для проекта, для хорошей оценки).

Когда вы выполняете стандартную очистку, каталог ModuleCache не восстанавливается.

Ответ 11

Убедитесь, что Find implicit Dependencies в настройках Build в Схеме включен!

Ответ 12

Я также столкнулся с той же ошибкой несколько дней назад. Вот как я решил проблему:

Ошибка: "модуль не найден"

  • Создать подфайл в корневом каталоге проекта
  • Установите cocoapods (менеджер зависимостей для проектов Swift и iOS)
  • Запустить программу установки
  • Перейдите в Настройки сборки проекта:

    • Найти Objective-c перемычку заголовка под компилятором Swift - генерация кода (если вы не найдете компилятор Swift здесь, возможно, добавьте в проект новый файл Swift)
    • Перетащите файл заголовка библиотеки с левой стороны на заголовок заголовка (см. прикрепленное изображение) введите изображение здесь
  • Создайте новый заголовочный файл моста: например, TestProject-Bridging-Header.h и поместите в Swift Compiler → Objective-c Имя заголовка сгенерированного интерфейса (см. изображение выше)

  • В файле TestProject-Bridging-Header.h напишите #import "Mixpanel/Mixpanel.h"
  • В вашем файле Swift код должен быть: Импорт Mixpanel (например, название библиотеки)

Что все.

Ответ 13

Хорошо, как одна и та же проблема была решена для меня, заключалась в том, чтобы установить производное местоположение данных относительно каталога рабочей области, а не сохранять его по умолчанию. Перейдите в настройки в xcode. Перейдите на вкладку местоположений в настройках и установите Derived data в Relative. Надеюсь, поможет.

Ответ 14

Что сработало для меня, так это решение другого вопроса. Закрытие Xcode и повторное открытие проекта как рабочей области.
Перейдите в папку вашего проекта и откройте файл .xcodeworkspace.
После того, как вы откроете рабочую область (вместо проекта), стручки должны появиться как проект верхнего уровня в Навигаторе проекта.

Ответ 15

Если вы создаете платформу, такую ​​как tvOS, убедитесь, что выбран выбранный вами Apple TV (т.е. соответствующий).

Построение приложения tvOS с выбранным iOS симулятором дало мне именно эту ошибку. Проделали большую часть часа, ища всевозможные проблемы с сборкой... doh.

Ответ 16

Я получал ту же ошибку для

import Firebase

Но потом заметил, что я не добавлял pod в основной целевой раздел, а добавлял только целевые объекты Test и TestUI в Podfile.

С помощью команды

pod init

для проекта xcode swift создается следующий файл подкачки

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'MyApp' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for MyApp

  target 'MyAppTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'MyAppUITests' do
    inherit! :search_paths
    # Pods for testing
  end

end

Итак, нужно убедиться, что вы добавляете контейнеры в любой подходящий заполнитель.

Ответ 17

Я получал ту же ошибку, что и я добавил пару фреймворков, используя Cocoapods. Если мы используем Pods в нашем проекте, мы должны использовать xcodeworkspace вместо xcodeproject. Чтобы запустить проект через xcodebuild, я добавил параметр -workspace <workspacename> в команду xcodebuild, и он отлично работал.

Ответ 18

В моем случае приложение IPHONEOS_DEPLOYMENT_TARGET было установлено на 9.3, тогда как в моем недавно созданном фреймворке оно было установлено на 10.2

Средство разрешения неявных зависимостей игнорировало мою новую платформу, поскольку требования целевой платформы выше, чем требования приложений.

После настройки фреймворка iOS Deployment Target в соответствии с моей целью развертывания приложения, фреймворк успешно скомпилирован и связан.

Ответ 19

Я исправил это с помощью

Цели → Общие → Связанные структуры и библиотеки

Добавьте фреймворк, который должен находиться в верхней части папки Workspace. Боль в заднице.

Ответ 20

Я уже установил стручки. Сборка работала без проблем, когда я собирал приложение на своем устройстве, но архив не работал. Я просто бегу:

pod install

новые модули не были установлены, только файл.xcodeproj был восстановлен и архив начал работать

Ответ 21

В Xcode 10.1 для меня решение состояло в том, чтобы изменить систему сборки в настройках Workspace в меню File. По умолчанию он установлен в New Build System, изменил его на Legacy Build System, и это помогло.

enter image description here

Ответ 22

Я обнаружил, что Import Paths в Build Settings был неправильным для настраиваемого (MySQL) модуля. После указания, что в правильном направлении сообщение исчезло.

Ответ 23

Я просто удалил свой cocoapod. Затем я выполнил установку pod, чтобы удалить ее. Затем я просто добавил его обратно в свой файл и повторно установил его. Это заставило его работать. Не знаю, почему.

Ответ 24

Если вы используете Карфаген, каркасы в здании обычно остаются в

$(PROJECT_DIR)/Carthage/Build/iOS

Если вы запустите carthage update --platform ios --no-build (чтобы сэкономить время), файлы внутри папки Build не будут повторно создаваться, тогда модули не будут доступны для XCode.

В моем случае я запустил carthage update --platform ios, затем моя проблема была решена.

Ответ 25

В общем => Связанные фреймворки и библиотеки, я добавил свой ./Pods/Pods.xcodeproj и он добился ./Pods/Pods.xcodeproj

Ответ 26

Для меня Build Active Architecture Only был установлен на Да для выбранной конфигурации. Это сделал трюк:

Выберите "Модули" в левом навигаторе проекта> Выберите "Настройки сборки"> "Создать активную архитектуру только для Нет"

Ответ 27

Для чего это стоит (я новичок в этом, используя Xcode 7.2/Swift 2), но я заметил, что просто наличие .swift файла из библиотеки в каталоге проекта автоматически дает вам доступ к нему и не нуждается в используя инструкцию.

Пример: я использую SwiftyJSON, и мне нужен только файл SwiftyJSON.swift в проекте. Оператор using фактически выдавал мне ошибку "нет такого модуля" и устранял ее, и он отлично работает.

Ответ 28

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

Ответ 29

У меня была аналогичная проблема с загрузкой FacebookSDK, я добавил ~/Documents/FacebookSDK (поиск, где ваши рамки), в пути поиска Framework в Настройки сборки, после чего мне удалось импортировать модуль FBSDKShareKit

Ответ 30

Просто для завершения с другой возможностью эта ошибка может произойти, если опция "Найти неявные зависимости" не установлена. Перейдите в "Редактировать схему" → "Сборка".

введите описание изображения здесь

Затем проверьте эти параметры.

введите описание изображения здесь