Cocoapod - ошибка сборки для пользовательской конфигурации в смешанном проекте Objective-C и Swift

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

MainProject ( Mixed Objective-C and Swift)
 |_ SubProject1 ( Only Objective-C)

MainProject build configs :
 |_ Debug
 |_ Inhouse
 |_ Adhoc
 |_ Store

SubProject1 build configs:
 |_ Debug
 |_ Release

Pod File:

workspace 'MainProject.xcworkspace'
platform :ios, '9.0'

target 'MainProject' do
   use_frameworks!

   def shared_pods
     # all the pods go here
     pod 'CocoaLumberjack/Swift'
   end

   target 'MainProject' do
     project 'MainProject'
     shared_pods
   end

   target 'SubProject1' do
     project 'Subprojects/SubProject1/Subproject1'
     shared_pods
   end
end

В основном проекте и под-проекте используется Cocoalumberjack. Поскольку подпроект является проектом obj-c, он использует версию cocoalumberjack obj-c со следующим оператором импорта.

#import "CocoaLumberjack/CocoaLumberjack.h"

в то время как конфигурация отладки является сборкой, сбоя сборки нет. Но когда конфигурация Inhouse/Adhoc/Store собрана, она не может найти файл заголовка cocoalumberjack в пути поиска заголовка. Из журналов сборки я могу сделать вывод, что

Когда основной проект Debug config является сборкой, такая же конфигурация используется для сборки модулей и подпроектов. Итак, стручки размещены в пути Debug-iphonesimulator. Поскольку подпроекты имеют конфигурацию Debug, он также ссылается на заголовки pod в пути Debug-iphonesimulator. Сборка завершается успешно.

когда другая настраиваемая конфигурация в Main project является сборкой, скажем, Inhouse, модули помещаются в путь Inhouse-iphonesimulator. Поскольку подпроект не имеет конфигурации Inhouse, он по умолчанию выпускает конфигурацию. Это приводит к поиску файла заголовка cocoalumberjack по промежуточному пути выпуска при создании подпроектов. Но заголовки Cocoalumberjack отсутствуют в пути конфигурации выпуска, но присутствуют в промежуточном пути Inhouse. Это приводит к ошибке сборки. Пожалуйста, найдите журнал ошибок сборки ниже.

CompileC /Users/someusername/Library/Developer/Xcode/DerivedData/MainProject-gslvjyjvbpzplkerotbufvukmpac/Build/Intermediates/Subproject1.build/Release-iphonesimulator/SubProject1.build/Object86_

/Users/someusername/Library/Developer/Xcode/DerivedData/MainProject-gslvjyjvbpzplkerotbufvukmpac/Build/Intermediates/Subproject1.build/Release-iphonesimulator/SubProject1.build/SubProject/bu / Xcode / DerivedData / MainProject-gslvjyjvbpzplkerotbufvukmpac / Build / Products / Release-iphonesimulator

> -F / Users / имя_пользователя / Библиотека / Разработчик / Xcode / DerivedData / MainProject-gslvjyjvbpzplkerotbufvukmpac / Build / Продукты / Release-iphonesimulator / CocoaLumberjack -iquote / Пользователи / someusername / Библиотека / Разработчик / Xcode / DerivedDatas / Buker -jpvjvvvjvvvvjvvvjvvvjvvvvvvv / Продукты / Release-iphonesimulator / CocoaLumberjack / CocoaLumberjack.framework / Заголовки -c /Users/someusername/Anand/iOS/Practices/Stackru/MainProject/Subprojects/SubProject1/SubProject1/SubProject1.m -o / Пользователи / Библиотека / Someuser Xcode / DerivedData / MainProject-gslvjyjvbpzplkerotbufvukmpac / Build / полупродукты / Subproject1.build / Release-iphonesimulator / SubProject1.build / Объекты-нормальный /x86_64/SubProject1.o

В файл включен из /Users/someusername/Anand/iOS/Practices/Stackru/MainProject/Subprojects/SubProjects/SubProject1/SubProject1/SubProject1.m:10: /Users/someusername/Anand/iOS/Practices/Stackru/MainProject/Subprojects/Subprojects SubProject1/Logger.h:9:9: фатальная ошибка: файл "CocoaLumberjack/CocoaLumberjack.h" не найден

импорт "CocoaLumberjack/CocoaLumberjack.h"

    ^ 1 error generated.

Может ли кто-нибудь помочь мне в устранении этой ошибки сборки пользовательских конфигов? Пожалуйста, дайте мне знать, если нужно больше деталей.

1 ответ

Это должно исправить вашу проблему:

Шаг 1

Обновите ваш Podfile с этим:

workspace 'MainProject.xcworkspace'
platform :ios, '9.0'
use_frameworks!

def shared_pods
  # all the pods go here
  pod 'CocoaLumberjack/Swift'
end

target 'MainProject' do
 project 'MainProject'
 shared_pods
end

target 'SubProject1' do
 project 'Subprojects/SubProject1/Subproject1'
 shared_pods
end

Шаг 2

Запустите эту команду на терминале для удаления модуля из проекта для чистой установки позже:

pod deintegrate

Шаг 3

удалить Podfile.lock

rm -rf Podfile.lock

Шаг 4

Запустите установку снова:

pod install

Шаг 5

Если вы используете Lumberjack в качестве основы, вы можете импортировать как:

@import CocoaLumberjack

Надеюсь, это все исправит, пожалуйста, дайте мне знать результат...

Замечания:

В качестве альтернативы вы можете попробовать NSLogger работает со смешанными проектами target -c + swift.

Также другие альтернативы

Другие вопросы по тегам