Я пытаюсь создать расширение приложения для фотографий в Xcode 6 Beta-6, которое использует библиотеки cocoapods. Заголовок моста, который Xcode создает для расширения фотографий, не может видеть ничего от cocoapods.
Например: #import <GPUImage/GPUImage.h>
приводит к ошибке "GPUImage/GPUImage.h" file not found
.
Я пробовал все мыслимые пути для импорта (в скобках и кавычках) и почти не добился успеха. Исключением является то , что для простых стручки нравится SVProgressHUD
следующая некрасиво ужасный хак работает:
#import "../Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.h"
.
Но для GPUImage он входит в GPUImage.h
заголовок и решает, что внезапно не видит, GPUImageContext.h
несмотря на отсутствие проблем, когда он импортируется с заголовком моста для обычного быстрого кода, который не является частью расширения приложения.
Чем отличается компиляция расширений приложений, которая мешает нормальному поведению заголовка моста?
Примечание: я прочитал все возможные варианты этого руководства, и они не применимы сразу, на всякий случай, если кто-то думает, что нашел там ответ.
Кроме того, проблема, описанная в этом вопросе SO, может быть связана, но я все равно задал этот вопрос, если моя проблема связана с расширениями приложений.
источник
Ответы:
Правильный способ сделать это - обновить ваш подфайл, добавив только одну строку:
и обновление модуля должно решить проблему.
источник
Podfile
файл: [!] Спецификацияlink_with
в Podfile теперь не поддерживается, используйте вместо этого целевые блоки ..»link_with
в Podfile теперь не поддерживается, используйте вместо них целевые блоки. Это решение устарело.РЕДАКТИРОВАТЬ (2015/03/10)
См. Новый принятый ответ. Я попробовал это в новом проекте, и это сработало, хотя оба моих тестовых модуля использовали sharedApplication, что запрещено в расширениях. Тот факт, что они показали эти ошибки, означает, что они правильно связаны. Вперед, @LeChatNoir!
Успех.
Решение заключается в следующем: если у вас есть расширение приложения и его заголовок моста в проекте, использующем cocoapods, и вы хотите использовать одну из этих библиотек cocoapods, попытка включить модуль, например,
#import <GPUImage/GPUImage.h>
не удастся сfile not found
.Во-первых, убедитесь, что вы указали расширение приложения (щелкните файл проекта, а затем цель расширения) для ссылки
libPods.a
, так же как и цель вашего приложения.Затем в вашем фактическом проекте (щелкните файл проекта, затем снова файл проекта в разделе «Проект» на внутренней боковой панели) на вкладке «Информация» установите конфигурацию расширения для отладки, выпуска и внутреннего использования. конфигурацию «Pods» из раскрывающегося списка. Pod Install не сделает этого за вас, поэтому вам нужно будет сделать это самостоятельно.
Наконец, убедитесь, что и цели проекта Pods, и цели вашего проекта имеют все архитектуры, которые вам нужно построить в переменной Valid Architectures, иначе вы получите вечно забавную ошибку неопределенных символов.
Это должно работать и позволить вам импортировать выбранные вами модули как обычно.
РЕДАКТИРОВАТЬ (2014/10/14): в стороне, поскольку вы также можете включать файлы Objective-C из собственного кода проекта в расширение Swift, вы должны убедиться, что все
.m
файлы, которые вы помещаете в заголовок моста, также скомпилированы по цели расширения. Вы можете сделать это из меню источников компиляции для целевого объекта или в самом.m
файле, используя раздел «Целевое членство» на правой боковой панели в Xcode.источник
Вышеупомянутые ответы будут работать, но мне нужна была только пара модулей в моем расширении, поэтому я сделал следующее со своим Podfile:
target '[Main App Target Name]' do pod ... pod ... pod ... end target '[Extension Target Name]' do pod ... end
И тогда он это
pod install
сделает!источник
link_with
в Podfile теперь не поддерживается, пожалуйста, используйте вместо этого целевые блоки ..link_with, вы больше не будете его использовать.
Ниже приведен идеальный ответ, также проверенный.
source 'https://github.com/CocoaPods/Specs.git' platform :ios, ‘9.0’ use_frameworks! inhibit_all_warnings! target 'DemoTodayWidget' do pod 'Reachability', '~> 3.2' end target 'My Widget' do pod 'Reachability', '~> 3.2' end
источник