Я сейчас кодирую в Swift, и у меня есть ошибка:
Нет такого модуля Social
Но я не понимаю, потому что модуль находится в моем проекте, объявленном в "Связанных фреймворках и библиотеках" и в "Встроенных бинарных файлах".
Фреймворки находятся в Objective-C, поэтому я написал для него заголовок Bridge.
Пожалуйста, как я могу заставить Xcode распознать фреймворк?
Я не уверен, почему это происходит, но один из способов решить вашу проблему - войти в ваши настройки сборки и определить Пути поиска в каркасе в папку, в которой содержит соответствующие рамки. Если рамки размещены в каталоге проекта, просто установите путь поиска фрейма к $(SRCROOT)
и установите его на рекурсивный.
В случае, если в пятницу днем или в любое время после 1 часа ночи:
Открытие xcodeproj
вместо xcworkspace
приведет к ошибке, подобной этой...
Я не совсем уверен, почему Martin R ответ в комментариях к вопросу так игнорируется:
Убедитесь, что вы попробовали просто пропустить импорт фреймворка, поскольку он уже добавлен с заголовком моста.
Надеюсь, что это поможет
У меня была такая же проблема с использованием Cocoapods и Swift. Я не заметил следующие строки в подпикселе:
# Uncomment this line if you're using Swift
# use_frameworks!
Итак, все, что мне нужно было сделать, это изменить его на:
# Uncomment this line if you're using Swift
use_frameworks!
... aaand он работал:)
Убедитесь, что имена ваших конфигураций в подпроектах совпадают с именами "родительского" проекта. Если имена конфигурации не совпадают точно (с учетом регистра), Xcode прервет процесс архивирования и покажет ошибку "Нет такого модуля..."
То есть, если у вас есть "родительский" проект с конфигурацией "AppStore", вы должны убедиться, что все подпроекты также имеют это имя конфигурации.
Смотрите мои скриншоты.
Debug
and Distribution
а его родительский проект пытался собрать для Release
. Решением было сделать копию Distribution
в дочернем проекте и переименовать эту копию Release
.
Сравните этот скриншот с настройкой сборки. Это может работать. Перейдите к пути поиска фреймов:
Я тоже испытывал эту проблему. Исправить меня было то, что схемы Архива между двумя проектами не совпадали. У меня есть xcworkspace с проектом framework и проектом приложения. Проблема заключалась в том, что в схеме Архива для моего приложения я использовал другую конфигурацию сборки, чем схема использовала для нее схему архива. Я установил обе версии Build Configures для Release, и это устранило проблему.
Предполагая, что Framework действительно есть и в пути и т.д., удалите каталог ~/Library/Developer/Xcode/DerivedData/ModuleCache (и очистите проект и удалите данные, специфичные для проекта, для хорошей оценки).
Когда вы выполняете стандартную очистку, каталог ModuleCache не восстанавливается.
Убедитесь, что Find implicit Dependencies
в настройках Build в Схеме включен!
В моем случае, после многих попыток выяснить, что я делал неправильно при импорте фреймворка, я в конечном итоге обнаружил, что проблема заключается в самой фреймворке. Если вы не получаете ваш фреймворк из надежного источника, вы должны проверить фреймворк и убедиться, что он содержит папку Modules с файлом module.modulemap внутри. Если файл module.modulemap отсутствует, вы получите ошибку "Нет такого модуля" MyFramework "".
Если в папке "Модули" отсутствует папка "MyFramework.swiftmodule", то платформа будет найдена, но XCode не будет знать о ее содержимом, поэтому вы получите различные ошибки.
Я также столкнулся с той же ошибкой несколько дней назад. Вот как я решил проблему:
Ошибка: "модуль не найден"
Перейдите в Настройки сборки проекта:
Создайте новый заголовочный файл моста: например, TestProject-Bridging-Header.h и поместите в Swift Compiler → Objective-c Имя заголовка сгенерированного интерфейса (см. изображение выше)
Что все.
Хорошо, как одна и та же проблема была решена для меня, заключалась в том, чтобы установить производное местоположение данных относительно каталога рабочей области, а не сохранять его по умолчанию. Перейдите в настройки в xcode. Перейдите на вкладку местоположений в настройках и установите Derived data в Relative. Надеюсь, поможет.
Следующие шаги работали для меня.
"pod update"
в терминале.xcworkspace
и .xcworkspace
снова.pod install
он работает.
В моем случае приложение IPHONEOS_DEPLOYMENT_TARGET было установлено на 9.3, тогда как в моем недавно созданном фреймворке оно было установлено на 10.2
Средство разрешения неявных зависимостей игнорировало мою новую платформу, поскольку требования целевой платформы выше, чем требования приложений.
После настройки фреймворка iOS Deployment Target в соответствии с моей целью развертывания приложения, фреймворк успешно скомпилирован и связан.
Если вы создаете платформу, такую как tvOS, убедитесь, что выбран выбранный вами Apple TV (т.е. соответствующий).
Построение приложения tvOS с выбранным iOS симулятором дало мне именно эту ошибку. Проделали большую часть часа, ища всевозможные проблемы с сборкой... doh.
Я получал ту же ошибку, что и я добавил пару фреймворков, используя Cocoapods
. Если мы используем Pods в нашем проекте, мы должны использовать xcodeworkspace
вместо xcodeproject
.
Чтобы запустить проект через xcodebuild, я добавил параметр -workspace <workspacename>
в команду xcodebuild
, и он отлично работал.
Я получал ту же ошибку для
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
Итак, нужно убедиться, что вы добавляете контейнеры в любой подходящий заполнитель.
Я уже установил стручки. Сборка работала без проблем, когда я собирал приложение на своем устройстве, но архив не работал. Я просто бегу:
pod install
новые модули не были установлены, только файл.xcodeproj был восстановлен и архив начал работать
Я просто удалил свой cocoapod. Затем я выполнил установку pod, чтобы удалить ее. Затем я просто добавил его обратно в свой файл и повторно установил его. Это заставило его работать. Не знаю, почему.
Я исправил это с помощью
Цели → Общие → Связанные структуры и библиотеки
Добавьте фреймворк, который должен находиться в верхней части папки Workspace
. Боль в заднице.
Моя проблема была с несколькими целями. Я решил это с помощью ссылок ниже: правильно настроить файл pod и исправить настройки сборки
Надеюсь, кто-нибудь найдет это полезным.
Это то, что, наконец, сработало для меня. Довольно грустно, что мне пришлось все это делать, но это было единственное, что я смог найти, что сработало.
После обеспечения библиотеки были перечислены в рамках linked framework and libraries
. Если его там нет, вы можете нажать +
и, надеюсь, увидеть свой фреймворк/модуль в списке.
Нажмите на свой проект в значке схемы (см. Изображение ниже)
Тогда вы должны увидеть свои рамки фокуса в списке:
Нажмите Manage Schemes.
Тогда вы должны увидеть что-то вроде этого:
AutoCreate Schemes now
box
для своего фреймворка, нажмите " AutoCreate Schemes now
, затем close
.
Затем попробуйте снова импортировать ваш фреймворк/модуль.
Это сработало для меня.
Я получал эту проблему, потому что я установил неверную цель в podfile (сам проект, а не раздел UITests).
У меня возникла эта проблема при разработке пользовательского Pod. Установлено, что мне просто нужно указать зависимость в моем Procfile:
Pod::Spec.new do |s|
# ... other declarations
s.dependency 'Alamofire', '~> 4.3'
end
Просто для завершения с другой возможностью эта ошибка может произойти, если опция "Найти неявные зависимости" не установлена. Перейдите в "Редактировать схему" → "Сборка".
Затем проверьте эти параметры.
Я обнаружил, что Import Paths
в Build Settings
был неправильным для настраиваемого (MySQL) модуля. После указания, что в правильном направлении сообщение исчезло.
find
если вы этого не знаете.
Еще одно предложение для Xcode 10+ и проектов, которые 1. созданы с версией Xcode <10, 2. Содержат подпроект с каркасом, от которого зависит основной проект. Проблема заключается в том, что Xcode поместит скомпилированную среду в каталог, указанный в подпроекте, который, вероятно, отличается от основного каталога сборки проекта.
Проверьте Файл> Настройки проекта. Теперь нажмите "Дополнительно..." и выберите в качестве пути сборки что-то отличное от "Legacy", например, "Уникальный". В этом случае Xcode поместит все собранные компоненты в одну папку, и он сможет найти "отсутствующий" модуль.
Если вы используете Carthage вместо Cocoapods, убедитесь, что вы используете правильный импорт:
//Если вы используете CocoaPods
import NVActivityIndicatorView
//Если вы используете Карфаген
import NVActivityIndicatorView_iOS//for iOS
Источник: https://github.com/ninjaprox/NVActivityIndicatorView#usage
В моем случае, я пробую каждое предложение выше, все еще не работающее. Я просто копирую содержимое файла, в котором отображается ошибка, без импорта, и вставляю его в другой файл с таким же импортом и комментирую файл ошибки. Запустите проект снова, он заработал, затем я удаляю исходный файл ошибок и создаю файл с тем же именем и снова возвращаю его содержимое с тем же импортом. Я думаю, что в моем случае я просто придумываю способ дать ему возможность один раз связать этот импорт, и это должно быть хорошо.
Другой возможной причиной в XCode 10 может быть то, что Supported Platforms
иногда меняют на macOS
а Valid Architectures
меняют на i386 x86_64
для проектов Pods. Предполагая, что проект предназначен для iOS, затем выберите проект Pods и измените Supported Platforms
на iOS
и Valid Architectures
на arm64 arm64e armv7 armv7s
Вы можете выполнить каждую из целей, однако это займет больше времени, если у вас более одного модуля. Кроме того, Swift version
фреймворков Swift в написанном Swift иногда устанавливается на неправильную версию.
В Xcode 10.1 для меня решение состояло в том, чтобы изменить систему сборки в настройках Workspace в меню File. По умолчанию он установлен в New Build System, изменил его на Legacy Build System, и это помогло.
В общем => Связанные фреймворки и библиотеки, я добавил свой ./Pods/Pods.xcodeproj
и он добился ./Pods/Pods.xcodeproj
На самом деле я решил эту проблему намного проще, добавив в конец build-debug.xconfig
#include "../Pods/Target Support Files/Pods-IAP/Pods-IAP.debug.xcconfig"
И до конца build-release.xconfig
#include "../Pods/Target Support Files/Pods-IAP/Pods-IAP.release.xcconfig"
поскольку эти файлы уже определяют PODS_ROOT
и связанные переменные сборки.
Если у вас есть несколько проектов в рабочей области, вам необходимо:
1) добавить новую конфигурацию для всех проектов
2) продукт → чистый
3) удалить derived data
4) pod install
в терминал
5) построить свой проект.
Надеюсь, это кому-нибудь поможет.
Если это просто простой проект, без cocoapods, как у меня, вы можете попытаться переместить ваш фреймворк в директорию вашего проекта и заново связать. Я имел это на рабочем столе, но связанный и "импорт MyFramework" сделал ошибку. Переместив его в директорию проекта и снова связав, он заработал.
Я получил награду за самую глупую причину ошибки "Нет такого модуля". В моем случае я создаю включенный фреймворк вручную и копирую его в каталог моего проекта. Мои пути поиска фреймворка были заданы правильно, и фреймворк был добавлен в проект правильно.
Когда я заархивировал структуру, которую я строил, я использовал "Показать в Finder", чтобы перенести меня в папку релиза в производных данных. Но я не заметил, что папка содержит только псевдоним для фреймворка, а не сам фреймворк. Исходный фреймворк остался в моем каталоге производных данных, поэтому позже, когда я очистил производные данные, фреймворк был удален, но мой проект этого не знал.
Повторное архивирование фреймворка, следуя псевдониму фактической фреймворк, и копирование его в каталог моего проекта работало
Если вы используете Карфаген, каркасы в здании обычно остаются в
$(PROJECT_DIR)/Carthage/Build/iOS
Если вы запустите carthage update --platform ios --no-build
(чтобы сэкономить время), файлы внутри папки Build не будут повторно создаваться, тогда модули не будут доступны для XCode.
В моем случае я запустил carthage update --platform ios
, затем моя проблема была решена.
Моя проблема (на этот раз) заключалась в том, что я использовал устаревшую версию библиотеки в моем Podfile.
Я использовал:
pod 'LBTAComponents', '~> 0.1.9'
который не работал, но когда я изменил его на:
pod 'LBTAComponents', '~> 1.0.2'
это сработало.
В моем случае проблема состояла просто в том, что некоторые из проектов, которые использовали платформу, имели целевую версию iOS для развертывания, предшествующую целевой версии iOS для платформы. Как только я изменил целевую версию iOS для развертывания фреймворка, ошибка исчезла.
Я установил pod Fakery, который был добавлен под моим файлом Pods, однако, когда я попытался его использовать, я получил ту же ошибку. Проблема была в том, что я не построил ее, после ее создания быстрый компилятор бросил несколько ошибок в быстрых файлах Fekery, которые некоторые функции были переименованы, а также предоставили исправления для них. После решения всех проблем с компилятором сборка выполнена успешно, и я смог использовать модуль. Поэтому в моем случае была проблема быстрой совместимости языков.
В моем случае с проектом в swift 4 библиотеки не были скомпилированы, поэтому их не удалось найти и импортировать. Решение заключалось в том, чтобы установить компиляционную версию для библиотек cocoapods как swift 3.2
Это хромально и весело, но я загрузил образец проекта из Github и запускал его из папки "Загрузки". Я переместил его на рабочий стол и снова сделал сборку, и это сработало! Может быть, Xcode не понравится папке "Загрузка" в качестве пути!;)
1 - В вашем podfile удалите модуль, который создает проблему, и сохраните файл 2 - Запустите pod install 3 - Повторно добавьте модуль, сохраните файл 4 - Перезапустите pod install
Проблема должна быть решена.
Е.И.В.
В моем случае мне просто пришлось перезагрузить проект. Я использовал командную строку для клонирования моего проекта, но он не правильно установил подмодуль. Чтобы исправить это, я клонировал проект через XCode, и все работает. Просто сначала сделайте резервную копию изменений.
Иногда вам нужно установить Pods.
В вашем проекте Подфайл
вы должны раскомментировать
use_frameworks!
и platform :ios, '9.0'
Эта ошибка также может быть вызвана инфраструктурой без карты модулей. Если структура, которую вы пытаетесь импортировать, является вашей, проверьте предупреждения компилятора в самой структуре. В моем случае мои рамки строились и на месте, но было предупреждение о создании:
предупреждение: нет заголовка зонтика, найденного для цели "MyFramework", карта модуля не будет сгенерирована
Изменив это предупреждение (которое связано с заголовком структуры, не совпадающим с именем модуля), я смог импортировать фреймворк.
Решение для меня было. Внутри целей → Настройки сборки → Пути поиска и добавление $(унаследовано). Однако, если это кокоаподы, ваш ответ, вероятно, внутри вывода в терминале.
Для меня это произошло в RxSwift, и проблема была в том, что я установил ее в 3.0.0 в подфайл. Изменив ограничение версии и обновив модули, обновил его до 3.1.0, который исправил его.
ЕСЛИ вы сделали все выше и все еще ничего не сработали для вас, попробуйте добавить $(inherited)
в путь поиска в каркасе вашей целевой настройки сборки.
У меня была аналогичная проблема с загрузкой FacebookSDK, я добавил ~/Documents/FacebookSDK (поиск, где ваши рамки), в пути поиска Framework в Настройки сборки, после чего мне удалось импортировать модуль FBSDKShareKit
Если все приведенные выше методы не сработали для вас, как в моем случае. В предыдущий день проблем не было, но на следующее утро я столкнулся с такой же ошибкой. Я просто удалил фреймворки, удалив ссылки и снова добавил их. Я знаю, это может показаться глупым, но вуаля это сработало.
Для чего это стоит (я новичок в этом, используя Xcode 7.2/Swift 2), но я заметил, что просто наличие .swift файла из библиотеки в каталоге проекта автоматически дает вам доступ к нему и не нуждается в используя инструкцию.
Пример: я использую SwiftyJSON, и мне нужен только файл SwiftyJSON.swift в проекте. Оператор using
фактически выдавал мне ошибку "нет такого модуля" и устранял ее, и он отлично работает.
Я столкнулся с этой проблемой, когда попытался снизить целевой показатель развертывания с iOS 11 до iOS 10. Изменение его на iOS 11 позволило мне архивировать для загрузки.
Чтобы загрузить меньшую цель развертывания, я выполнил обновление и успешно архивировал.
ПЛАТЫ Я СКАЗАЛ КОД!!!!!
Хорошо, так что вы хотите сделать, это найти Xcodeproj в Finder.
Теперь щелкните правой кнопкой мыши на .xcodeproj и щелкните содержимое пакета show show. Затем перетащите туда рамки. Вот так Теперь вернитесь к Xcode и нажмите + в Linking Binaries с библиотеками. Нажмите "Добавить другое", в котором вы должны попасть в свой файл Xcodeproj, и теперь добавьте оба болта и анализа Видно здесь
И waboosh!! Теперь вы можете импортировать Parse!