web-dev-qa-db-fra.com

Fichier Google/Analytics.h introuvable lors de l'ajout à AppDelegate

J'essaie d'intégrer Google Analytics dans mon projet ios à l'aide de Cocoapods. Cependant, après avoir suivi this pour les étapes jusqu’à l’ajout du fichier de configuration à mon projet, lors de l’importation de Google/Analytics.h dans AppDelegate, une erreur s’affiche pour le fichier introuvable. Essayé des choses suivantes:

  1. Ajout de $(SRCROOT)/Pods/GoogleAnalytics aux chemins de recherche d'en-tête d'utilisateur dans les paramètres de construction.

  2. Ajout de libGoogleAnalyticsServices.a pour lier le binaire avec les bibliothèques dans les phases de construction.

  3. Ajout de -lGoogleAnalyticsServices dans Autres drapeaux de l'éditeur de liens.

Ne veulent pas vraiment faire 2 et 3 car ils le rendent libre de cocoapods.

Qu'est-ce qui me manque exactement?

12
tech savvy

Problèmes

  1. Les exemples de code sur la documentation officielle suggèrent Installant 1.0.0. Qui n'a même pas compilé de binaires pour Arm64. 
  2. Il semble y avoir au moins trois groupes distincts liés à GA. SDK GoogleAnalytics-iOS, GoogleAnalytics, Google/Analytics.

Solution

Ajoutez ceci à votre fichier Podfile: pod 'Google/Analytics' puis pod install.

Cela devrait fonctionner. Maintenant, vous pouvez simplement importer Google/Analytics.h comme suggéré dans la documentation:

#import <Google/Analytics.h>

Discussion complémentaire

J'ai rencontré deux types de problèmes:

  1. L'utilisation de la version de pod suggérée incorrecte (1.0.0) posait un problème de compatibilité 64 bits. (ld: symbol(s) not found for architecture arm64)

  2. Lors de l'utilisation des autres pods (GoogleAnalytics-iOS-SDK et GoogleAnalytics), je me suis plaint d'un fichier d'en-tête <Google/Analytics.h> manquant. ("Google/Analytics.h" not found)

J'ai trouvé le message de ce monsieur sur une liste de diffusion qui suggérait le pod Google/Analytics sans numéro de version. (pod 'Google/Analytics' comme indiqué ci-dessus.)

31
sabalaba

Swift 3

Avec la version 3.17.0 (installée à l’aide du pod «GoogleAnalytics» dans Podfile):

  1. Ouvrez votreproject.xcworkspace au lieu de votreproject.xcodeproj
  2. Utilisez #import <GoogleAnalytics/GAI.h> dans le fichier d'en-tête de pontage

Edit: Par le commentaire de jeremy piednoel vous pourriez aussi avoir besoin 

#import <GoogleAnalytics/GAIDictionaryBuilder.h>
#import <GoogleAnalytics/GAIFields.h>
41
paul

Ceci est un bug dans les cocoapods.

vous devez ajouter $ (SRCROOT)/Pods/Google et $ (SRCROOT)/Pods/GoogleAnalytics avec option récursive à vos chemins de recherche d'en-tête d'utilisateur. 

Ensuite, incluez le #import "Analytics.h" au lieu de #import 

5
Rajat Talwar

Lorsque vous ajoutez $(SRCROOT)/Pods/GoogleAnalytics aux chemins de recherche d'en-tête d'utilisateur dans les paramètres de construction, sélectionnez également l'option recursive. Cela permettra à votre projet de rechercher dans GoogleAnalytics et tous ses sous-répertoires.

MISE À JOUR: J'ai essayé le tutoriel et il fonctionne bien sans aucune étape supplémentaire. La version de mon pod est 0.35.0. Lorsque vous créez un fichier de configuration, n'oubliez pas d'activer le service GoogleAnalytics.

MISE À JOUR: Comme @RajatTalwar l'a souligné, vous devez également ajouter $ (SRCROOT)/Pods/Google avec l'option récursive. Ensuite, incluez le #import "Analytics.h" au lieu de #import 

2
sahara108

Si quelqu'un d'autre tente de #importer <import <Google/Analytics.h> et que les autres solutions en ligne ne vous aident pas, vous devriez lire la suite.

J'avais ce problème et aucune des solutions que j'ai trouvées ne résoudrait le problème. Ensuite, j'ai remarqué que l'une de mes cibles fonctionnait alors que l'autre ne fonctionnait pas (j'en avais deux dans le même projet), et j'ai essayé de déterminer quelle était la différence entre les deux cibles.

J'ai remarqué qu'il y avait une différence dans le projet sous l'onglet Général sous Informations de déploiement, où la deuxième cible (celle qui fonctionnait) avait des options séparées pour iPhone et iPad, mais pas la première. Un autre utilisateur en ligne a déclaré avoir reçu ces deux nouvelles options lorsqu'il dupliquait sa cible. Ma deuxième cible était également une copie du premier, à l'origine.

Pour faire court, J’ai trouvé que si je dupliquais ma cible, le doublon fonctionnait soudainement. Ces options séparées pour iPhone et iPad sont également apparues comme par magie. Je suppose donc que ma cible de projet était non standard et posait problème, probablement parce que ce projet a été créé il y a longtemps.

Je viens alors de supprimer la cible d'origine et de renommer le nouveau en même nom, bien que des travaux de nettoyage soient nécessaires dans les paramètres de construction liés au fichier plist (il s'agissait d'un fichier copy.plist).

J'espère que ça aide quelqu'un.

0
John Bushnell

Aussi mon 0,02 $ à cela, car il semble être une histoire sans fin. Aucune des suggestions ci-dessus n'a aidé. J'ai reçu ce message obscur de pod install

[!] The `blabla [Release]` target overrides the `HEADER_SEARCH_PATHS` build setting defined in `Pods/Target Support Files/Pods-blabla/Pods-blabla.release.xcconfig'. This can lead to problems with the CocoaPods installation

Finalement, j'ai inspecté mon project.pxbprojet découvert que j'avais cette entrée:

HEADER_SEARCH_PATHS = "";`

Évidemment, cela est traité comme "défini", donc je l'ai changé pour

HEADER_SEARCH_PATHS = "$(inherited)";

et boom - tout le Google a suggéré comprend le travail

#import <GoogleAnalytics/GAI.h>
#import <GoogleAnalytics/GAIDictionaryBuilder.h>
#import <GoogleAnalytics/GAIFields.h>
0
decades

Vérifiez si vous avez plusieurs cibles, dans ce cas, ajoutez le pod 'Google/Analytics' pour chaque cible dans votre fichier de 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
0
christian mini