web-dev-qa-db-ja.com

iOS向けGoogle Maps SDKでは、「バンドルリソースのコピー」でターゲットの一部としてGoogleMaps.bundleが必要です。

IOS用のGoogleMaps SDKをビルドすると、これらのエラーが発生しました。

*** Terminating app due to uncaught exception 'GMSException', reason: 'Google Maps SDK for iOS requires GoogleMaps.bundle to be part of your target under 'Copy Bundle Resources''

しかし、GoogleMaps.frameworkはコピーバンドルresources.soにありますので、この問題の原因を教えてください。

63
JohnyDgoode

指示はちょっと欠けています。これが役立つことを願っています...

  1. Xcodeの起動(簡単)
  2. GoogleMaps.frameworkバンドルをプロジェクトのFrameworksグループにドラッグします。プロンプトが表示されたら、アイテムのコピーを宛先グループのフォルダに選択します。

  3. プロジェクトでGoogleMaps.frameworkを右クリックし、「Finderで表示」を選択します。 それが言っていないのは...それからResourcesという子フォルダに入ります

  4. GoogleMaps.bundleをResourcesフォルダーからプロジェクトにドラッグします。 Frameworksグループに入れることをお勧めします。プロンプトが表示されたら、コピー先グループのフォルダへのアイテムのコピーが選択されていないことを確認します。

177
sberley

SOで検索する2017年の人々にとって、最も簡単な方法は、もちろんpod installおよびpod update。最後に、次の2つのコマンドでプロジェクトとビルドをクリーンアップします。

  1. クリーンビルド:Command + alt option + Shift + K
  2. クリーンプロジェクト:Command + Shift + K

出来上がり!クラッシュは二度と起こりません。

90
Glenn

2017年にXcode 9(最初のリリース)と新しいビルドシステムでこれを試してみた人のために、以下がこれを解決しました。

注:基本的な問題は、新しいビルドシステムが正しくクリーニングされていないため、古いシステムに切り替える必要があるようです。また、9/25/17の時点で、Google Place PickerはメインスレッドからUIを呼び出しており、Xcodeでエラーをスローしています。

-古いビルドシステムに切り替える

-プロジェクトファイル「My App Name」をクリック

-「ターゲット」の下でアプリ名をクリックします(テストやUITestではありません!)

-ビルド段階

-[CP] Podリソースのコピー

-$ {PODS_ROOT}/GoogleSomethingが表示され、それらを選択してヒットします-

-Xcodeを閉じ、ポッドインストールを実行します。

-Xcode、Command-Shift-Kを開きます(クリーンで、古いビルドシステムにいることを確認してください!)

-ビルド/実行、今すぐ動作するはずです

7
user8671173

このフレームワークの最新バージョンでこの問題が発生し、CocoaPodsデプロイメントを使用している場合は、「Copy Pods Resources」セクションを確認してください。 「ビルドフェーズ」:

enter image description here

このセクションが欠落しているようですので、Podsディレクトリを削除して「pod install」を再実行するだけでは修正できません。代わりに、 this 便利なツールを入手する必要があります。

https://github.com/CocoaPods/cocoapods-deintegrate

このことを実行してから、pod installと「ポッドリソースのコピー )」セクションに戻る必要があります。マップをインスタンス化しても、この例外は発生しません。

6
RedBlueThing

「pod install」を実行すると、この問題は修正されました。

4
Abdul Hannan

CocoaPods経由でマップをインストールした場合、次の手順を試してください。

  1. [ターゲット]> [ビルドフェーズ]に移動します
  2. 「インストール時にのみスクリプトを実行する」を無効にします enter image description here
3
Sreeraj VR

私は同じ問題に直面していました、次のことをしてください:

1. Go to derived folder and delete the project folder
2. Clean build and run

問題を修正しました

2
sahiljain

私にとっては、手動インストールでも同じ問題があります。

1.プロジェクトでGoogleMaps.frameworkを右クリックし、「Finderで表示」を選択します。

  1. ダブルクリックするか、このGoogleMaps.frameworkを開きます。フォルダ "Resources"を見ることができます。 (私はGoogleMaps.bundleが利用可能な場所の画像スクリーンショットを追加しました)
  2. googleMaps.bundleを見つけることができるResourcesフォルダーをクリックします

enter image description here

  1. googleMaps.bundleをプロジェクトにドラッグアンドドロップします。 [コピー先グループのフォルダーにアイテムをコピーする]が選択されていないことを確認します。 enter image description here

注:[必要に応じてアイテムをコピー]宛先グループのフォルダーが選択されていないことを確認してください。スクリーンショットもご覧ください。

今すぐCommand + Shift + KまたはXcode-> Product-> Cleanをクリーンアップします

これは誰かに役立つかもしれません。

1
Murugan M

Xcode 9 Swift 3.2に更新したら、次の行でAppDelegate内でクラッシュを続けました。

GMSServices.openSourceLicenseInfo()

私はグレンの答えを使ってプロジェクトをきれいにしましたが、それは間違いなく機能しましたが、最終的にクラッシュが起こり続けました。

それを解決するには、 Google Maps APIインストール の指示に従う必要がありました

フォロー:

ステップ2:SDKをインストールしますおよび手動でインストールします

これは非常に簡単ですが、最初は1つのことが混乱していたので、次の人のために明確にするために追加しています:

マニュアルの指示を読んで、4番に次のように書かれています:

4. Drag the following bundles into your project (when prompted, select Copy items if needed): 

enter image description here

事はあなたがダウンロードしたZipファイルの中にあり、それを解凍すると、その中に2つのフレームワークしかありません:

GoogleMaps.framework
GoogleMapsCore.framework

GoogleMapsBase.frameworkはありません。 GoogleMaps.frameworkにバンドルされていると思いますか?

番号8: Open the Build Phases tab, and within Link Binary with Libraries, add the following frameworks:に到達したら。インポートする必要がある多くのフレームワークがリストされています。

enter image description here

問題は、Zipファイルを解凍してプロジェクトにドラッグしたときに、追加するように指定されている最初の3つが既に追加されていることです(実際には2つが追加されました-GoogleMaps.frameworkおよびGoogleMapsCore.framework)。

名前を入力し続けましたが、何も表示されませんでした。

enter image description here

最初から始めて、すべてのGoogleフレームワークを削除し続け、既に存在することに気付くまで再試行しました。基本的に、Accelerate.framework-UIKit.frameworkのすべての名前を入力すると、うまくいくはずです。

1
Lance Samaria

キャッチされない例外「GMSException」によるアプリの終了、理由:「iOS用Google Maps SDKには、「バンドルリソースのコピー」の下でターゲットの一部としてGoogleMaps.bundleが必要です。

  1. GoogleMaps.bundleGoogleMap.frameword/Resourcesを見つけると、GoogleMap.bundleが表示されます。
  2. GoogleMapsBase.frameworkでGoogleMaps.bundleBase/Frameworkにドラッグします

これが役立つことを願っています。ありがとう

0
Chea Sambath