#ios #swift #cocoapods
#iOS #swift #cocoapods
Вопрос:
Сегодня я открыл проект iOS (Swift), к которому некоторое время не прикасался, и он не создавался. Первая инструкция import для платформы Cocoapods выдавала No such module
ошибку компиляции в Xcode. Изменение порядка инструкций импорта привело к возникновению ошибки в зависимости от того, какая внешняя зависимость была первой в моем списке импорта.
Я исправил это, добавив каждый из моих Cocoapods в Framework Search Paths
в основную цель моего проекта (у него есть несколько целей, включая тесты, расширение общего доступа и фреймворк общего кода для приложения и расширения). Эти пути поиска были пустыми и теперь выглядят следующим образом:
После этого проект был собран нормально, но теперь я получаю эту SIGABRT
ошибку каждый раз, когда пытаюсь запустить приложение (как на симуляторе, так и на устройстве):
dyld: Library not loaded: @rpath/CocoaLumberjack.framework/CocoaLumberjack
Referenced from: [path removed]
Reason: image not found
Я предполагаю, что это связано с тем, что CocoaLumberjack необходимо связать где-то еще / каким-то другим способом из-за его макросов, но я действительно не знаю.
Я также попытался запустить pod install
, очистить папку сборки и удалить производные данные и запустить pod deintegrate
pod install
без успеха.
Возможно ли заставить Cocoapods автоматически правильно настраивать пути поиска, чтобы у меня не возникало этих проблем? Или есть какой-то ручной шаг, который я пропустил или, возможно, сделал неправильно?
Отредактировано, чтобы добавить мой Podfile:
platform :ios, '11.0'
use_frameworks!
# ignore all warnings from all pods
inhibit_all_warnings!
# This is my shared framework, used by both my app and share extension
target 'XXXShared' do
pod 'SnapKit', '~> 4.0'
pod 'KeychainSwift', '~> 7.0'
pod 'Reveal-SDK', :configurations => ['Debug']
pod 'IQKeyboardManagerSwift'
pod 'APESuperHUD', :git => 'https://github.com/apegroup/APESuperHUD.git'
pod 'WSTagsField', '~> 3.1'
pod 'Cache', '~> 4.2'
pod 'TableKit', '~> 2.5'
pod 'GRDB.swift', '~> 3.2'
pod 'PromiseKit', '~> 6.0'
pod 'Toast-Swift', '~> 3.0.1'
pod 'CocoaLumberjack/Swift'
pod 'CollectionKit'
pod 'PinLayout'
pod 'FlexLayout'
pod 'LayoutKit'
pod 'PromiseKit/Alamofire'
pod 'Alamofire', '~> 4.7'
end
target 'XXX' do
pod 'Reveal-SDK', :configurations => ['Debug']
end
target 'XXX share extension' do
inherit! :search_paths
end
Отредактировано для добавления скриншотов:
Комментарии:
1. Пожалуйста, поделитесь своим файлом podfile
2. И вам не обязательно явно определять путь для каждого модуля, Cocoapods должен справиться с этим за вас. Это должно было выполняться только в тех случаях, когда библиотека запрашивает специальную настройку.
3. @MCMatan Я не думал, что мне нужно явно добавлять эти модули, кроме Reveal , у которого есть это конкретное требование. Но я не знаю, почему Cocoapods не делает это для меня правильно, или чего еще мне не хватает, что мешает приложению создавать в противном случае.
4. Кажется, вы пытаетесь создать CocoaLumberjack как фреймворк, а его не существует. Не могли бы вы добавить изображение ваших «Связанных фреймворков и библиотек» и «Встроенных библиотек»
5. Странно, у вас тоже есть «Встроенные фреймворки»?