Swiftで書かれたiOSアプリにGoogle Analyticsを追加しようとしています。 CocoaPodsを介してフレームワークを追加し、ブリッジングヘッダーを追加したガイドに従いましたが、まだ取得しています:
Linker command failed with exit code 1
私のポッドファイルにはuse_frameworksがあります!だからそれと何か関係があるのだろうか... Analyticsサイトに私が見ることができるものからの追加情報はない。
編集:私は完全なエラーメッセージを表示した後、次が表示されることに気づきました:
ld: '/Users/simon/Programming/VenueNow/Pods/GoogleUtilities/Libraries/libGTM_NSData+zlib.a(GTMNSData+zlib.o)' does not contain bitcode.
You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64
そして、その問題を検索すると、Googleはビットコードをサポートするように更新されましたが、その時点でココアポッドフレームワークは更新されていませんでした。
これと同じ問題がありました。幸いなことに、BitCodeを有効にしてGoogleアナリティクスを使用できますが、GoogleがCocoaPodsサポートをどのように設定したかにより、少し混乱します。
実際に使用できるCocoaPodsは2つあります。
最初のものは「最新」ですが、より大きなGoogleポッドに関連付けられているため、ビットコードをサポートしていません。 2つ目は分析専用で、BitCodeをサポートします。ただし、後者には追加のGoogleポッドが含まれていないため、設定方法の一部の指示が正しくありません。
アナリティクスを設定するv2メソッドを使用する必要があります。
// Inside AppDelegate:
// Optional: automatically send uncaught exceptions to Google Analytics.
GAI.sharedInstance().trackUncaughtExceptions = true
// Optional: set Google Analytics dispatch interval to e.g. 20 seconds.
GAI.sharedInstance().dispatchInterval = 20
// Create tracker instance.
let tracker = GAI.sharedInstance().trackerWithTrackingId("XX-XXXXXXXX-Y")
GoogleアナリティクスAPIの残りの部分では、v3ドキュメントを使用できます(v2を使用する必要はありません)。
この記事の執筆時点での「Google/Analytics」ココアポッドは、まだBitCodeをサポートしていません。 こちらを参照
ビルド設定に移動し、今のところターゲットの設定をENABLE_BITCODE = YES
に切り替えます。
この問題はありましたが、ビットコード設定とは関係ありませんでした。 XCodeプロジェクトのFrameworksフォルダーにあるフレームワークファイルが重複してしまいました。赤い(および重複した)フレームワークファイルをすべて削除しました。これにより、「Apple Mach O、リンカーコマンドが終了コード1で失敗しました」エラーが解決されました。
これは私のために働いた:
ターゲットのLinked FrameworksおよびLibrariesセクションからlibPods.aライブラリを削除する必要があります。
ポッドを使用する場合は、xCode Projectメニューのプロジェクトファイルではなく、。xcworkspaceファイルを開いてください。これでリンクの問題が解決するはずです。
Xcodeを閉じて、フォルダーの名前を変更します。次に、以前の名前で新しいフォルダーを作成します。プロジェクトを実行し、プロジェクトを停止します。新しいフォルダーを削除し、古いフォルダーの名前を変更して再実行します。
IPad Proシミュレーターはこの問題の影響を受けます。それは私を動揺させ、とても大変な仕事です...うまくいけば、Googleは次のSDKのバグを解決します。
静的表記法を使用せずにヘッダーファイルで定数を宣言すると、いくつかの場合があります。このような
const int k = 10;
そのはず:
static const int k = 10;
別のオプションがあります... CocoaPodsを使用せずにGoogle Analyticsをインストールします。
https://developers.google.com/analytics/devguides/collection/ios/v3/sdk-download
ビルド設定>ビットコードを有効にする>いいえ
pod deintegrate
を使用してココアポッドポッドの痕跡をすべて削除してから、pod install
を実行してください
「iOS Deployment Target」を「IOS 10.0」から現在の(私の携帯電話の)「iOS 10.2」に変更すると、問題はなくなりました。
建物の設定>展開> iOS展開ターゲット
これは通常、Cocoapodsを使用していて、cocoapodライブラリを知らないxcprojectからビルドしている場合に発生します。
Xcode 7.3でも同じ問題がありました。これは、私の.hファイルと.mファイルの一部が2回追加されたためです。
ココアポッドを介して再度Analyticsを追加し、ビットコードを無効にしました。
将来のココアポッドバージョンがそれをサポートすることを願っています。