Добавление цели в CocoaPods для расширения
Окей, я борюсь с этим уже несколько часов, и у меня совершенно нет идей. Я создаю приложение с расширением Action, необходимым для получения URL-адреса просматриваемого в настоящее время веб-сайта. Мне нужно разделить некоторый код между приложением и расширением (главным образом, сетевым API), поэтому мне также нужно поделиться библиотеками для него (alamofire и т. Д.).
Вот мои CocoaPods
use_frameworks!
target 'xxxExtension' do
pod 'ObjectMapper', '~> 2.2'
pod 'SwiftyJSON'
pod 'Alamofire', '~> 4.0'
pod 'Nuke', '~> 4.0'
pod -
pod -
end
target 'yyyMain' do
pod 'ObjectMapper', '~> 2.2'
pod 'SwiftyJSON'
pod 'Alamofire', '~> 4.0'
pod 'Nuke', '~> 4.0'
pod -
pod -
pod -
pod -
pod -
pod -
target 'yyyMainTests' do
inherit! :search_paths
pod -
pod -
pod -
pod -
pod -
end
end
Как вы можете видеть, я использую неявную абстрактную цель для use_frameworks, я пытался переместить модули, которые там используются, но это не сильно изменилось. Создал abstract_target сам, такая же ошибка.
error: /Users/abc/Library/Developer/Xcode/DerivedData/yyyMain-fuuyjxathhqlfdczxrtmfewlpcpe/Build/Products/Debug-iphoneos/xxxExtension.appex: No such file or directory
Есть идеи, что происходит?
1 ответ
Хорошо, это было немного сложно, и я сделал несколько изменений, которые могли привести к решению проблемы.
Сначала было добавление
post_install do |installer_representation|
installer_representation.pods_project.targets.each do |target|
if target.name.start_with? "Pods-extensionName"
target.build_configurations.each do |config|
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= ['$(inherited)', 'AF_APP_EXTENSIONS=1']
end
end
end
end
Подфайл.
Второй - (помимо очистки, перестроения и удаления производных данных) - вручную удалить ассоциации двоичных файлов. Для этого нужно ввести настройки проекта -> цели -> приложение -> общие -> (внизу) Embedded Binaries и удалить файл *.appex.
Дополнительно может потребоваться перейти к этапам сборки и удалить бинарный файл ссылки с библиотеками.
Последнее, что нужно сделать, это переустановить pod с помощью "pod install", и новые ссылки должны быть воссозданы в очищенном проекте.
Удачи!