68

当我为 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 在副本包资源中。所以,我很困惑。请告诉我这个问题的原因。

4

11 回答 11

180

说明有点欠缺。我希望这有帮助...

  1. 启动 Xcode(简单)
  2. 将 GoogleMaps.framework 包拖到项目的 Frameworks 组中。出现提示时,选择将项目复制到目标组的文件夹中。

  3. 右键单击项目中的 GoogleMaps.framework,然后选择 Show In Finder。 它没有说的是......然后进入名为Resources的子文件夹

  4. 将 GoogleMaps.bundle 从 Resources 文件夹拖到您的项目中。我们建议将它放在框架组中。出现提示时,确保未选择将项目复制到目标组的文件夹。

于 2013-02-20T23:04:31.050 回答
90

对于在 SO 上搜索的 2017 年人们来说,最简单的方法确实是尝试安装和更新您的 pod,当然pod install还有pod update. 最后,通过这两个命令清理项目和构建:

  1. 清洁构建:Command + alt option + Shift + K
  2. 清洁项目:Command + Shift + K

然后瞧!崩溃不会再发生。

于 2017-08-10T08:00:44.967 回答
7

如果您在此框架的更新版本中遇到此问题并且正在使用 CocoaPods 部署,请检查“构建阶段”的“复制 Pods 资源”部分:

在此处输入图像描述

显然这部分丢失是一件事情,删除您的 Pods 目录并重新运行“ pod install ”不足以修复它。相反,您需要使用这个方便的工具:

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

运行这个东西然后重新运行pod install并且你的“ Copy Pods Resources ”部分应该回来了,当你实例化你的地图时你不会得到这个异常。

于 2015-11-24T02:32:59.763 回答
7

对于那些在 2017 年尝试使用 Xcode 9(第一个版本)和新构建系统的人,以下内容为我解决了这个问题。

注意:根本问题似乎是新的构建系统没有正确清理,因此您需要切换回旧系统。此外,截至 2017 年 9 月 25 日,谷歌地点选择器正在从主线程调用 UI,并在 Xcode 中引发错误。

-切换到旧的构建系统

-单击您的项目文件“我的应用程序名称”

- 在“目标”下单击您的应用名称(不是测试或 UITests!)

-构建阶段

-[CP] 复制 Pod 资源

- 你应该看到 ${PODS_ROOT}/GoogleSomething ,选择那些并点击 -

- 关闭 Xcode,运行 pod install。

- 打开 Xcode,Command-Shift-K(干净,并确保您使用的是旧构建系统!)

-构建/运行,现在应该可以工作了

于 2017-09-25T15:59:41.060 回答
4

运行“pod install”为我解决了这个问题。

于 2017-03-22T11:36:51.473 回答
4

如果您通过 CocoaPods 安装了地图,请尝试以下步骤。

  1. 转到目标 > 构建阶段
  2. 禁用“仅在安装时运行脚本” 在此处输入图像描述
于 2017-12-28T06:49:37.950 回答
3

对我来说,我在手动安装中遇到了同样的问题。

1.在您的项目中右键单击 GoogleMaps.framework,然后选择 Show In Finder 。

  1. 双击或打开此 GoogleMaps.framework。我们可以看到文件夹“资源”。(我已经为 GoogleMaps.bundle 可用的地方添加了图像屏幕截图)
  2. 点击 Resources 文件夹我们可以找到 GoogleMaps.bundle

在此处输入图像描述

  1. 现在只需将 GoogleMaps.bundle 拖放到您的项目中即可。确保未选择将项目复制到目标组的文件夹。 在此处输入图像描述

注意:确保未选择“如果需要,复制项目”目标组的文件夹。也请参阅屏幕截图。

现在清理 Command+Shift+K 或 Xcode-->Product--> Clean

这可能对某人有所帮助。

于 2018-07-03T12:20:20.960 回答
2

我遇到了同样的问题,请执行以下操作:

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

修复了问题

于 2018-05-14T07:05:31.487 回答
1

由于未捕获的异常“GMSException”而终止应用程序,原因:“适用于 iOS 的 Google Maps SDK 需要 GoogleMaps.bundle 成为“复制捆绑资源”下目标的一部分

  1. 找到你GoogleMaps.bundleGoogleMap.frameword/Resources看到 GoogleMap.bundle
  2. GoogleMaps.bundleBase/FrameworkGoogleMapsBase.framework拖入

希望这能有所帮助。谢谢

于 2017-06-18T02:16:27.867 回答
1

更新到 Xcode 9 Swift 3.2 后,我在 AppDelegate 中不断崩溃:

GMSServices.openSourceLicenseInfo()

我一直在使用 Glenn 的回答来清理确实有效的项目,但最终崩溃不断发生。

为了解决它,我必须按照Google Maps API Installation中的说明进行操作

跟随:

第 2 步:安装 SDK手动安装

这很容易做到,但一开始有一件事情让我感到困惑,所以为了让下一个人清楚起见,我将其添加进去:

一旦您阅读了手册说明并在第 4 条上显示:

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

在此处输入图像描述

东西在你下载的 zip 文件中,一旦你解压它,里面只有 2 个框架:

GoogleMaps.framework
GoogleMapsCore.framework

不会有GoogleMapsBase.framework。我假设他们将它捆绑到GoogleMaps.framework?

一旦你到达 number 8: Open the Build Phases tab, and within Link Binary with Libraries, add the following frameworks:。它列出了许多您必须导入的框架。

在此处输入图像描述

问题是当您解压缩该 zip 文件并将它们拖到项目中时,它说要添加的前 3 个已添加(实际上其中两个已添加 -GoogleMaps.framework和)。GoogleMapsCore.framework

我一直在输入名字,什么都不会出现。

在此处输入图像描述

我一直在删除所有的谷歌框架,从头开始,然后再试一次,直到我意识到它们已经存在。基本上输入所有内容的名称Accelerate.framework-UIKit.framework你应该很好。

于 2017-10-30T00:26:14.890 回答
0

这样我就解决了我的问题。

 1. Delete the derived folder.
 2. pod update
 3. Clean Project and build.

就这样

于 2020-01-04T15:33:49.470 回答