web-dev-qa-db-ja.com

AppDelegateに追加するときにGoogle / Analytics.hファイルが見つかりません

Cocoapodsを使用して、iOSプロジェクトにGoogleアナリティクスを統合しようとしています。ただし、プロジェクトに構成ファイルを追加するまでの手順で this を実行した後、AppDelegateにGoogle/Analytics.hをインポートすると、ファイルが見つからないというエラーが発生します。次のものを試してみました:

  1. ビルド設定のユーザーヘッダー検索パスに$(SRCROOT)/Pods/GoogleAnalyticsを追加しました。

  2. ビルドフェーズでバイナリとライブラリをリンクするlibGoogleAnalyticsServices.aを追加しました。

  3. その他のリンカーフラグに-lGoogleAnalyticsServicesを追加しました。

Cocoapodsを使わないようにするため、2と3を実行したくない。

正確には何が欠けていますか?

14
tech savvy

問題

  1. 公式ドキュメント のコード例では、1.0.0のインストールを推奨しています。 arm64用にコンパイルされたバイナリもありません。
  2. GAに関連する少なくとも3つの個別のポッドがあるようです。 GoogleAnalytics-iOS-SDK、GoogleAnalytics、Google/Analytics。

解決

これをPodfileに追加します:_pod 'Google/Analytics'_次に_pod install_。

うまくいくはずです。これで、ドキュメントで提案されているように、単にGoogle/Analytics.hをインポートできます。

_#import <Google/Analytics.h>_

さらなる議論

私が遭遇した問題の2つのセットがありました:

  1. 不適切な推奨ポッドバージョン(1.0.0)を使用すると、64ビットの互換性の問題がありました。 (ld: symbol(s) not found for architecture arm64

  2. 他のポッド(GoogleAnalytics-iOS-SDKおよびGoogleAnalytics)を使用すると、_<Google/Analytics.h>_ヘッダーファイルが見つからないという苦情がありました。 (_"Google/Analytics.h" not found_)

私はこの紳士の投稿を見つけました メーリングリストで これは、バージョン番号のないGoogle/Analyticsポッドを提案しました。 (上記のように_pod 'Google/Analytics'_。)

32
sabalaba

Swift

バージョン3.17.0(Podfileのポッド 'GoogleAnalytics'を使用してインストール)の場合:

  1. Yourproject.xcodeprojの代わりにyourproject.xcworkspaceを開きます
  2. 使用する #import <GoogleAnalytics/GAI.h>ブリッジヘッダーファイル

編集: jeremy piednoelのコメントによると、

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

これはココアポッドのバグです。

$(SRCROOT)/ Pods/Googleおよび$(SRCROOT)/ Pods/GoogleAnalyticsをユーザーヘッダーの検索パスに再帰オプションで追加する必要があります。

次に、#importの代わりに#import "Analytics.h"を含めます

6
Rajat Talwar

ビルド設定のユーザーヘッダー検索パスに$(SRCROOT)/Pods/GoogleAnalyticsを追加する場合は、recursiveオプションも選択します。プロジェクトでGoogleAnalyticsとそのすべてのサブディレクトリを検索できるようになります。

更新:チュートリアルを試しましたが、追加の手順を実行しなくても問題なく動作します。私のポッドバージョンは0.35.0です。設定ファイルを作成するときは、必ずGoogleAnalyticsサービスを有効にしてください。

更新:@RajatTalwarが指摘したように、再帰オプションで$(SRCROOT)/ Pods/Googleを追加する必要もあります。次に、#importの代わりに#import "Analytics.h"を含めます。

2
sahara108

他の誰かが#import <Google/Analytics.h>の試行でエラーが発生し、オンラインの他のソリューションが役に立たない場合は、先に読んでください。

私はこの問題を抱えていましたが、私が見つけた解決策のどれもそれを修正しませんでした。その後、ターゲットの1つは機能し、もう1つは機能しないことに気付き(同じプロジェクトに2つある)、2つのターゲットの違いを追跡しようとしました。

2番目のターゲット(機能したターゲット)にはiPhoneとiPadの個別のオプションがありましたが、最初のターゲットにはなかった、展開情報の下の[全般]タブのプロジェクトに違いがあることに気付きました。オンラインの誰かが、ターゲットを複製したときにこれらの2つの新しいオプションを受け取ったと述べました。私の2番目のターゲットも、最初のターゲットの複製でした。

長い話を短くします、ターゲットを複製すると、その複製が突然機能するようになったことがわかりました。これらの個別のiPhoneおよびiPadオプションも魔法のように登場しました。プロジェクトのターゲットが標準的ではなく、問題を引き起こしていたと思います。おそらく、このプロジェクトがずっと前に作成されたためです。

次に、元のターゲットを削除し、新しいターゲットの名前を同じ名前に変更しましたが、plistファイルに関連するビルド設定で必要なクリーンアップ作業がありました(copy.plistファイルを作成しました)。

これが誰かを助けることを願っています。

0
John Bushnell

また、これは私の終わらない話のようです。上記の提案はどれも役に立ちませんでした。 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

最後に、project.pxbprojを調べたところ、次のエントリがあることがわかりました。

HEADER_SEARCH_PATHS = "";`

明らかにこれは「定義済み」として扱われるため、次のように変更しました

HEADER_SEARCH_PATHS = "$(inherited)";

とブーム-Googleが提案したすべての作業が含まれています

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

複数のターゲットがあるかどうかを確認します。この場合、ポッドファイルにポッド 'Google/Analytics' foreachターゲットを追加します。

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