Подтвердить что ты не робот

Файл Google/Analytics.h не найден при добавлении в AppDelegate

Я пытаюсь интегрировать Google Analytics в проект ios, используя Cocoapods. Однако после выполнения этого для шагов до добавления файла конфигурации в мой проект при импорте Google/Analytics.h в AppDelegate я получаю ошибку для файла не найдено. Пробовал следующие вещи:

  • Добавлен $(SRCROOT)/Pods/GoogleAnalytics в пути поиска заголовка пользователя в настройках сборки.

  • Добавлен libGoogleAnalyticsServices.a для связывания двоичных файлов с библиотеками в фазах сборки.

  • Добавлен -lGoogleAnalyticsServices в другие флаги компоновщика.

Не хочу делать 2 и 3, поскольку они освобождают его от Cocoapods.

Что именно мне не хватает?

4b9b3361

Ответ 1

Проблемы

  • Примеры кода на официальной документации предлагают установка 1.0.0. У которого даже нет двоичных файлов, скомпилированных для arm64.
  • Кажется, что по крайней мере три отдельных модуля, связанные с Калибр GoogleAnalytics-iOS-SDK, GoogleAnalytics, Google/Analytics.

Решение

Добавьте это в свой подфайл: pod 'Google/Analytics', а затем pod install.

Это должно сработать. Теперь вы можете просто импортировать Google/Analytics.h, как это предлагается в документах:

#import <Google/Analytics.h>

Дальнейшая дискуссия

Были два набора проблем, с которыми я столкнулся:

  • При использовании неправильной предложенной версии pod (1.0.0) была проблема 64-разрядной совместимости. (ld: symbol(s) not found for architecture arm64)

  • При использовании других модулей (GoogleAnalytics-iOS-SDK и GoogleAnalytics) у меня были жалобы на отсутствующий заголовочный файл <Google/Analytics.h>. ("Google/Analytics.h" not found)

Я нашел этого джентльмена post в списке рассылки, в котором предлагался комплект Google/Analytics без номера версии. (pod 'Google/Analytics', как указано выше).

Ответ 2

Swift 3

С версией 3.17.0 (с использованием pod 'GoogleAnalytics' в подфайле):

  • Откройте yourproject.xcworkspace вместо yourproject.xcodeproj
  • Используйте #import <GoogleAnalytics/GAI.h> в файле заголовка моста

Ответ 3

Это ошибка в cocoapods.

вам нужно добавить $(SRCROOT)/Pods/Google и $(SRCROOT)/Pods/GoogleAnalytics с рекурсивным вариантом на пути поиска пользователей.

Затем включите #import "Analytics.h" вместо #import

Ответ 4

При добавлении $(SRCROOT)/Pods/GoogleAnalytics в пути поиска заголовка пользователя в настройках сборки также выберите опцию recursive. Это позволит вашему проекту выполнять поиск в GoogleAnalytics и всех его подкаталогах.

ОБНОВЛЕНО: Я пробовал учебник, и он отлично работает без лишнего шага. Моя версия pod 0.35.0. Когда вы создаете файл конфигурации, не забудьте включить службу GoogleAnalytics.

ОБНОВЛЕНО: Как отметил @RajatTalwar, вам также нужно добавить $(SRCROOT)/Pods/Google с рекурсивным вариантом. Затем включите #import "Analytics.h" вместо #import

Ответ 5

Если у кого-то есть ошибка с попыткой #import < Google/Analytics.h > , а другие решения в Интернете не помогут вам, вы должны прочитать.

У меня была эта проблема, и ни одно из найденных решений не устранило бы ее. Затем я заметил, что одна из моих целей работала, а другая - нет (у меня было два в одном проекте), и я попытался выяснить, в чем разница между двумя целями.

Я заметил, что во вкладке "Общие" в разделе "Информация о развертывании" была разница в проекте, где вторая цель (работающая) имела отдельные опции для iPhone и iPad, но первая не изменилась. Кто-то еще сказал, что они получили эти два новых варианта, когда они дублировали свою цель. Моя вторая цель была также дубликатом первого, изначально.

Чтобы сделать короткую короткую историю, я обнаружил, что если бы я продублировал свою цель, чтобы дубликат теперь внезапно работал. Те отдельные варианты iPhone и iPad также волшебным образом появились. Поэтому я предполагаю, что моя цель проекта была нестандартной и вызывала проблему, возможно, потому, что этот проект был создан давным-давно.

Затем я просто удалил исходную цель и переименовал ее в одно и то же имя, хотя в настройках сборки, связанных с файлом plist, была сделана некоторая работа по очистке (она сделала файл copy.plist).

Надеюсь, это поможет кому-то.

Ответ 6

Проверьте, есть ли у вас несколько целей, в этом случае добавьте pod 'Google/Analytics' foreach target в файл pod:

def google_pods
pod 'Google/Analytics'
end

target 'target 1' do
    google_pods
end

target 'target 2' do
    google_pods
end

target 'target N' do
    google_pods
end