web-dev-qa-db-ja.com

Google MapsSDKでのXcode7リンカーの問題

Xcode 7ベータ4をダウンロードし、Swift 2.0アプリケーションをビルドしようとしていますが、次のエラーが発生し、解決策がわかりません。

ld:警告:-weak_frameworkは、-bitcode_bundle(Xcode設定ENABLE_BITCODE = YES)とともに使用すると、-frameworkとして扱われます。ヘッダーldの可用性マークアップに基づいて弱いリンクが引き続き発生する可能性があります: 'path/Pods/GoogleMaps/Frameworks/GoogleMaps.framework/GoogleMaps(GMSBillingPointRecorder.o)'にビットコードが含まれていません。ビットコードを有効にして再構築するか(Xcode設定ENABLE_BITCODE)、ベンダーから更新されたライブラリを入手するか、このターゲットのビットコードを無効にする必要があります。アーキテクチャarm64clangの場合:エラー:リンカーコマンドが終了コード1で失敗しました(呼び出しを確認するには-vを使用してください)

誰かがこの問題を解決する方法を知っていますか?

17
KPath001

ENABLE_BITCODEフラグをNoに変更し、正しくコンパイルしました。@ Visputの回答に感謝します。

20
KPath001

ENABLE_BITCODEフラグを[〜#〜] no [〜#〜]問題を解決します。

それを無効にしても安全かどうか疑問に思っている人のために。 はい、そうです。

Apple Doc

ビットコード(iOS、watchOS)

ビットコードは、コンパイルされたプログラムの中間表現です。ビットコードを含むiTunesConnectにアップロードするアプリは、AppStoreでコンパイルおよびリンクされます。ビットコードを含めると、Appleは、アプリの新しいバージョンをストアに送信しなくても、将来的にアプリのバイナリを再最適化できます。

Xcodeは、デフォルトでビルド時に生成されたシンボルを非表示にするため、Appleはそれらを読み取ることができません。アプリをiTunesConnectにアップロードするときに記号を含めることを選択した場合にのみ、記号がAppleに送信されます。 Appleからクラッシュレポートを受け取るには、記号を含める必要があります。

注:iOSアプリの場合、ビットコードがデフォルトですが、オプションです。ビットコードを提供する場合、アプリバンドル内のすべてのアプリとフレームワークにビットコードを含める必要があります。 watchOSアプリの場合、ビットコードが必要です。

ビットコードは、アプリの間引きのためのAppleの新しい取り組みの一部です。この記事の執筆時点では、これはオプションですが、後で必要になる可能性があります。 Appleは、frameworks/libsコミュニティに適応する時間を与えていると思います。

編集:Xcode 7では、Bitcodeという中間状態でアプリをiTunesConnectにアップロードします。ユーザーがアプリをダウンロードすると、App Storeは、ユーザーが使用しているデバイスに一致するように、アプリの最適化されたバージョン(つまり、必要に応じて64ビット)を自動的に生成します。

今のところ、ビットコードを無効にして、Google MapsSDKの更新を待つことができます。

[〜#〜]更新[〜#〜]

SDK1.11.0-ビットコードをサポートするようになりました

https://developers.google.com/maps/documentation/ios-sdk/releases?hl=en

リソース:

Xcodeビルドオプションの影響「ビットコードを有効にする」はい/いいえ

https://developer.Apple.com/library/prerelease/ios/documentation/IDEs/Conceptual/AppDistributionGuide/AppThinning/AppThinning.html

https://www.hackingwithswift.com/ios9

22
Teffi

ビットコードを無効にする場所を明確にするために:[ターゲット]-> [ビルド設定]-> [ビットコードを有効にする]-> [いいえ]

Disable Bitcode

GIF画像は@stevechenの好意による

5
nikans

GoogleはSDKバージョン1.11.0でこの問題を解決しました-2015年12月。 リリースノート を参照してください:

ビットコードは、すべてのデバイスアーキテクチャのSDKバイナリに含まれるようになりました。 ( 問題8219 )。

0
ehhhuang