Подтвердить что ты не робот

"Нет такого модуля", когда я использую CocoaPods

Итак, вот моя процедура. Я создаю новый Podfile в каталоге проекта, затем добавил следующий

platform :ios, '9.0'
use_frameworks!

target 'CPod' do
pod 'AFNetworking', '~> 2.5'
pod 'ORStackView', '~> 2.0'
pod 'SwiftyJSON', '~> 2.1'
end 

Я запускаю pod install, и все идет хорошо, откройте xcworkspace. Затем я перехожу к ViewController.swift, и если я попытаюсь импортировать модуль, я получаю No such module 'SwiftyJSON', если мне нужно сделать import SwiftyJSON. Любые идеи?

EDIT: SwiftyJSON - это модуль на основе Swift, а не Obj-C

4b9b3361

Ответ 1

Попробуйте добавить Pods каркас к вашей схеме сборки и построить каркас. После того, как вы его построите, соберите/запустите ваш проект.

Шаги:

  1. Меню Схема> Управление схемами> отметьте Pods> Закрыть manage

    enter image description here

  2. Выберите Pods в меню схемы.
  3. Сборка Pods.
  4. Выберите ваш проект из того же меню, затем соберите/запустите его.

Ответ 2

После установки podfile вы должны повторно открыть файл проекта .xcworkspace(а не .xcodeproj).

  • Клонирование репо с помощью CocoaPods
  • Откройте YourWorkspace/YourApplication.xcworkspace
  • Выберите приложение, которое хотите запустить. Добавить SwiftyJSON.framework во встроенную двоичные файлы для этого проекта Hit Run

Счастливое кодирование:)

Ответ 3

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

pod deintegrate

а затем

pod install

Это исправило эту проблему для меня

Ответ 4

Нажмите Command + Option + Shift + K, а затем Запустите ваше приложение, вы увидите волшебство.

Или из меню → Продукт, нажмите Option на клавиатуре, и вы увидите папку Clean Build.

Интересно, как Xcode мог делать эти вещи с нами, но то же самое случилось со мной, когда я использовал библиотеку Swift, используя Pod, и после слишком большой борьбы я закончил с Clean Build Folder.

Ответ 5

Не уверен, что это все равно будет полезно для других. Но в моем случае это оказалось глупой ошибкой в ​​том, что они не ссылались на зависимости из файла .podspec.

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

Итак, хотя наши подфайлы имели:

Приложение/Подфайл

# Development Pods
pod 'ConsumingLibrary ', :path => '../ios-consuming-lib'
pod 'DependentLibrary1', :path => '../ios-library-one'
pod 'CommonCoreLibrary', :path => '../ios-common-core-lib'

Потребительская библиотека/Подфайл

# Development Pods
pod 'DependentLibrary1', :path => '../ios-library-one'
pod 'CommonCoreLibrary', :path => '../ios-common-core-lib'

Нужно также вызывать его в .podspec's:

ConsumingLibrary/ConsumingLibrary.podspec

  # TODO
  # Add here any resources to be exported.

  s.dependency 'DependentLibrary1', '~> 0.1.0-RC'

DependentLibrary1/DependentLibrary1.podspec

  # TODO
  # Add here any resources to be exported.

  s.dependency 'CommonCoreLibrary', '~> 0.1.0-RC'

Я думаю, что потратил около 2 часов, пытаясь понять, почему я могу создать ConsumingLibrary и запускать тесты, но как только я создал приложение, которое потребляло все три библиотеки, я продолжал получать:

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

Ответ 6

Попробуйте использовать pod update после команды pod install, что решит проблему отсутствия такого модуля. Я только что попробовал, и это работает нормально.

Спасибо, Ратнешвар

Ответ 7

Как писал @jakub-truhlář, основной проблемой является отсутствующий файл module.modulemap из-за некоторой проблемы параллелизма, связанной со смешиванием библиотек Swift и Objective-C, но вместо того, чтобы создавать эти файлы вручную, было бы лучше несколько раз очистить производные данные и построить свой проект. Когда проект будет успешно собран, передайте файлы module.modulemap в свой репозиторий, чтобы избежать потери этих файлов, например, при изменении текущей ветки.

Ответ 8

Иногда бывает, когда у вас есть объект obj-c в рамках проекта быстрый (даже если вы используете use_frameworks! в .podfile).

Если вы уверены, что модуль установлен, и вы все еще не получаете такой модуль, попробуйте следующее:

  • Перейти к проекту Pods в Xcode
  • Бобы
  • Щелкните правой кнопкой мыши на поврежденном контейнере
  • Показать в поиске

Должен быть файл пакета с суффиксом .framework. Создайте в нем папку. В этой папке создайте файл с именем module.modulemap с кодом:

framework module MODULE_NAME_HERE {
  umbrella header "MODULE_NAME_HERE.h"

  export *
  module * { export * }

  link framework LINKED_FRAMEWORKS_AND_LIBRARIES_THE_POD_NEEDS_HERE
  link framework "AdSupport"
  link "c++"
  link "z"
}

Восстановить, и вы должны быть в порядке.

Ответ 9

Я столкнулся с той же проблемой в быстрой среде, которую я разработал. У фреймворка была зависимость от git project, и сам фреймворк был добавлен в качестве модуля в мой основной проект. Таким образом, в идеале зависимость должна быть указана в файле podspec и Podfile.

Я не сталкивался с проблемой при доступе через мой основной проект, но при открытии автономного фреймворка выдает ошибку "Нет такого модуля".

Основная причина заключается в том, что базовые конфигурации задаются путем, который указывает на мой основной проект, а не на сам фреймворк, потому что я сначала запускал podinstall в своем основном проекте, а затем в проекте фреймворка.

};

};

Чтобы исправить ошибку,

  1. Файл проекта → Конфигурации → Установите для всех конфигураций значение none.
  2. Удалить папку Pods и Podfile.lock.
  3. Сначала запустите 'pod install' в директории проекта фреймворка, а затем выполните установку pod в главном каталоге проекта.

Ответ 10

Я только что обновил определенные зависимости в терминале

Перейдите в папку проекта и выполните команду ниже

pod обновить имя вашего pod

Для меня мне нужно сделать

обновление пакета ReachabilitySwift

Ответ 11

Добавление ссылки "С++" в файл module.modulemap для меня работало

Ответ 12

У меня была эта проблема, когда я открыл XCode, а затем выбрал рабочую область своего проекта через file-> открыть недавно.

Я обнаружил, что в моей файловой системе было два файла .xcworkspace для одной рабочей области/проекта.

Открытие XCode двойным щелчком по правильному файлу .xcworkspace помогло. Правильный - тот, который работает.

Я позже удалил не тот.

Ответ 13

Возникла эта проблема при добавлении CocoaPods в старый проект, который ранее уже включал библиотеки libs. Это произошло потому, что XCode не преобразовывался в Framework Search Path сгенерированный CocoaPods из-за значений, ранее установленных в целевых настройках.

Решение, которое помогло мне:

  1. скопировать старый путь

  2. нажмите "Удалить", чтобы полностью очистить параметры Framework Search Path в целевом столбце - там появится путь, сгенерированный CocoaPods

  3. добавить старый путь поиска обратно к сгенерированному (необходим только в том случае, если у вас еще есть несколько фреймворков, добавленных вручную для работы)

  4. Очистить проект, стереть производные данные, собрать.

Результат будет выглядеть следующим образом (1-я строка добавлена Xcode, 2-я добавлена CocoaPods, а 3-я вручную): enter image description here

Ответ 14

В случае нескольких целей. Например, Цель 1, Цель 2

use_frameworks!

target 'Target1' do
 pod 'Fabric'
 pod 'Crashlytics'

   target 'Target2' do
   end

end

Затем запустите pod install.

Ответ 15

Я перепробовал все эти предложения, но у меня ничего не получалось. Вместо этого, то, что работало для меня, было дезинтеграцией стручков. Затем удалите папку pods из иерархии xcode и выполните установку pod. Внезапно это сработало. Не спрашивайте меня, почему, потому что в любом случае большинство из этих предложений в любом случае попало или пропустили, но я буду рад, если это сработает и для кого-то еще :)

Ответ 16

Убедитесь, что импортировано правильное имя фреймворка, определенное в .podspec модуля.

Ответ 17

  • чистый проект
  • закрыть xcode
  • открыть xcode
  • наслаждаться

Ответ 18

Моя настройка

  • macOS 10.14 Мохаве
  • Xcode 10.3
  • Cocoapods 1.7.5

Ни один из ответов не работает для меня, хотя некоторые дали частичные подсказки. В моем случае основной причиной было то, что я настроил пути к моим продуктам сборки после запуска pod install.

Если вы запускаете cocoapods сразу после создания проекта XCode, то это обычно работает, если вы открываете сгенерированный XCode .xcworkspace вместо .xcodeproj.

Забавные вещи случаются, если вы начинаете настраивать пути сборки вашего продукта после создания рабочего пространства. Поскольку созданный проект Pods и его цель все ссылаются на ваши старые настройки проекта Xcode.

В моем случае моя проблема возникла из-за:

  • Я предпочитаю все мои продукты сборки, находящиеся в папке проекта $(SRCROOT)/build/$(CONFIGURATION)/$(EFFECTIVE_PLATORM_NAME). Поэтому я пошел дальше и заменил свой Pre-configuration Build Products Path на него.... ПОСЛЕ выполнения pod install.

Теперь сгенерированный проект Pods, включая всю его цель Framework, все еще указывает на старое местоположение, поэтому импорт заголовка и связывание вашего собственного проекта не удастся (вы увидите Command PhaseScriptExecution failed with a nonzero exit code, когда исправлено No such module),

Исправление:

  • Удалите все элементы Pod, включая рабочее пространство.
  • Восстановите проект Pods и рабочее пространство с помощью pod install. Однако в моем случае cocoapods жестко кодирует путь продукта сборки к ${SRCROOT}/../build и Pre-configuration Build Products к $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME), что обычно указывает на временную подпапку ~/Library/Developer. Все еще не совсем верно. Тогда....
  • Убедитесь, что Framework Search Path и Header Search Path моего собственного проекта охватывают вышеуказанные пути.
  • Настроить настройки проекта Pods и всю платформу зависимостей Pre-configuration Build Products Path, чтобы использовать мои предпочтительные пути.

Моральный урок: Всегда регенерируйте Pods и проверяйте ключевые пути результата всякий раз, когда вы касаетесь путей в настройках проекта Xcode.

UPDATE

С Xcode 11 Apple наконец-то удалила запутанный "Путь к продуктам предварительной конфигурации". Чтобы настроить пути продукта сборки, используйте Locations в настройках XCode с предварительно подготовленными глобальными относительными путями.

Ответ 19

Я обычно удаляю папку Pods и файл .xcworkspace, затем снова запускаю pod install, и это помогает почти в 100% случаев.

Ответ 20

Для использования Swift в Objective-C необходимо импортировать заголовочный файл, который Xcode автоматически генерирует во время компиляции (NameOfModule + Swift.h). В этом случае вы должны попробовать импортировать SwifityJSON в заголовочный файл следующим образом:

#import "SwiftyJSON-Swift.h"