Здравствуйте. Пытаюсь подключить к своему iOS проекту сторонние библиотеки через Cocoapods.
Вот содержимое файла Podfile
platform :ios, "7.0"
target 'MyApp' do
pod 'Fabric'
pod 'Crashlytics'
pod 'SDWebImage', '~> 3.7'
pod 'SVProgressHUD', '~> 1.1'
pod 'TPKeyboardAvoiding', '~> 1.2'
end
Делал все по инструкции. Сначала pod init, потом pod install. Судя по логам в командной строке установка прошла успешно.
Что получаю в самом проекте (файл проекта с расширением .xcworkspace):
Есть отдельный модуль/проект Pods. В нем в группе "Pods" находятся папки с подключаемыми фреймворками и библиотеками. В общем все как положено.
А вот дальше странности. В группе "Products" содержится 4 библиотеки:
- libPods-MyApp.a
- libSDWebImage.a
- libSVProgressHUD.a
- libTPKeyboardAvoiding.a
Для того, что-бы SDWebImage, SVProgressHUD и TPKeyboardAvoiding заработали нужно подключить к основному проекту 3 последние библиотеки из списка выше. Ни в одном туториале я не нашел явного подключения библиотек таким образом. На сколько я понимаю, они должны были быть упакованы в одну библиотеку "libPods-MyApp.a" которую и нужно использовать в основном проекте. В моем случае - это мертвый груз который не дает ни чего.
Ладно, пусть я подключил библиотеки описанным мной способом и успокоился. Но вот с Fabric и Crashlytics такой фокус не прокатывает. При попытке компиляции мне выдается такая вот ошибка:
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_Crashlytics", referenced from:
objc-class-ref in AppDelegate.o
"_OBJC_CLASS_$_Fabric", referenced from:
objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Логично. Ведь библиотеки не подключены. Нажимаю на файл проекта, выбираю соответствующий Target, на вкладке General перехожу к группе "Linked Frameworks and Libraries" и пытаюсь добавить нужные фреймвоки. В списке их нет, так что я жму кнопку "Add another.." и указываю к ним путь. Фреймворки лежат в папках .\Pods\Fabric и .\Pods\Crashlytics (Путь указан относительно папки проекта).
Но в итоге, при попытке компиляции я натыкаюсь на такую ошибку:
ld: framework not found Fabric
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Перехожу к Target моего проекта, на вкладку "Build Settings" сморю в группе "Search Paths" настройки для "Framework Search Paths". Как для Debug так и для Release есть следующие строки:
$(PROJECT_DIR)/Pods/Fabric
$(PROJECT_DIR)/Frameworks
$(PROJECT_DIR)/Pods/Crashlytics
Все non-recursive.
Собственно у меня несколько вопросов:
1) Что нужно сделать для подключения фреймворков Fabric и Crashlytics?
2) Правильно ли я все сделал?
3) Это вообще нормальное поведение для coocapods? Судя по туториалам такого быть не должно.
PS: Crashlytics подключал по инструкции и судя по прогрессу осталось только запустить приложение. Run script добавил и он работает.
PPS: Буду рад получить хоть какой ответ. Cocoapods начал пользоваться совсем недавно и пока для меня это в новинку. Собственно и с iOS у меня опыт не большой, основная платформа для меня это Android, но там подобное делается через Gradle и с меньшими заморочками.
UPD: Попробовал подключить библиотеки к чистому проекту. Все подключилось и работает. Возможно проблема в настройках моего проекта. Но вот что может вызывать такой эффект не представляю.