Cocoa Pods и Google Maps SDK

При использовании CocoaPods для получения Google Maps SDK для iOS у меня возникают проблемы с импортом файла заголовка sdk (#import <GoogleMaps/GoogleMaps.h>).
Я новичок в CocoaPods, но думаю, что все работает нормально с другими библиотеками, которые я использую. (RestKit, AFNetworking...). Для этих API мне все еще нужно импортировать библиотеку #import <AFNetworking/AFNetworking.h>, а не только #import "AFNetworking". Но работает нормально.
Для Google Maps SDK мне нужно импортировать его вот так #import <Google-Maps-iOS-SDK/GoogleMaps/GoogleMaps.h>, что приводит к ошибке компиляции, потому что в заголовке GoogleMaps.h другие файлы импортируются вот так:

#import <GoogleMaps/GMSCameraPosition.h>
#import <GoogleMaps/GMSCameraUpdate.h>
#import <GoogleMaps/GMSCircle.h>
...

Я что-то пропустил?


person florian    schedule 03.07.2013    source источник


Ответы (2)


Вам не нужно импортировать что-либо, связанное с CocoaPods, используя < и >. Это должно быть просто #import "Foo.h". В случае с Картами Google, основанными на моем тестовом проекте, мне просто нужно было использовать #import "GoogleMaps.h", и он импортировался правильно. Убедитесь, что вы устанавливаете последнюю версию CocoaPods (pod --version в настоящее время 0.21.0), в противном случае вам может потребоваться обновить ее ([sudo] gem update). Также убедитесь, что вы открываете созданный файл xcworkspace вместо файла xcodeproject.

person Keith Smiley    schedule 03.07.2013
comment
На домашней странице CocoaPods есть строка #import <Reachability.h>. Я использую версию CocoaPods 0.21.0. Если я попытаюсь импортировать с помощью простых кавычек, ничего не будет завершено. Также цели libPods-FRAMEWORK.a все красные, как будто они никогда не собирались. Есть идеи? - person florian; 04.07.2013
comment
Он не завершается автоматически, но в любом случае должен связать. - person Keith Smiley; 04.07.2013
comment
Сегодня я обновил CocoaPods до версии 0.22.1. И все работает нормально. Я снова запускаю pod install после обновления, и теперь я могу импортировать файл, как вы сказали. Так что спасибо, что направили меня в правильном направлении. - person florian; 04.07.2013

Я столкнулся с той же проблемой (и использую Cocopods), в частности, где файл ошибки «GoogleMaps.h» не найден. Мое решение (если вышеперечисленное не работает) заключается в том, что файлы целевой поддержки ваших модулей не содержат правильный путь заголовка для «GoogleMaps.h».

Шаг 1

Если вы просмотрите каталог своего проекта в Finder, щелкните каталог Pods, затем каталог Public, затем каталог GoogleMaps, вы заметите, что есть второй каталог GoogleMaps. Внутри этого второго каталога GoogleMaps содержатся файлы заголовков, относящиеся к модулю GoogleMaps. Теперь пришло время проверить, что файлы поддержки целевых модулей Pod имеют этот путь в качестве пути заголовка для GoogleMaps.

Шаг 2

Закройте проект Xcode. Перейдите в родительский каталог вашего проекта. Для меня это мой домашний каталог, доступ к которому можно получить по адресу cd ~. Перейдите к файлам поддержки Target ваших модулей:

cd ~/{your_project_name}/Pods/Target Support Files/Pods

Затем откройте файл Pods.debug.xcconfig в вашем любимом редакторе:

vi Pods.debug.xcconfig

Изменить строку

HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GoogleMaps"

с новым путем заголовка

HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GoogleMaps/GoogleMaps"

Остальную часть файла Pods.debug.xcconfig оставьте нетронутой. Выполните тот же процесс для Pods.release.xcconfig.

Шаг 3

Снова откройте файл .xcworkspace. Очистите свой проект (cmd-shift-k), а затем перестройте (cmd-b).

person SpikeyCoder    schedule 25.12.2015
comment
В моем случае (по крайней мере) это Pods/Header/Public, а не Pods/Public. - person Nicolas Miari; 17.02.2016