Cocoapods неправильно устанавливает пути поиска

#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. Странно, у вас тоже есть «Встроенные фреймворки»?