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.
Также другие альтернативы