适用于 iOS 的 Google Maps SDK 要求 GoogleMaps.bundle 成为“复制捆绑资源”下目标的一部分

Posted

技术标签:

【中文标题】适用于 iOS 的 Google Maps SDK 要求 GoogleMaps.bundle 成为“复制捆绑资源”下目标的一部分【英文标题】:Google Maps SDK for iOS requires GoogleMaps.bundle to be part of your target under 'Copy Bundle Resources 【发布时间】:2013-01-22 13:27:31 【问题描述】:

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

【问题讨论】:

将 GoogleMaps.framework 中的 GoogleMaps.bundle 添加到我的副本包资源后,一切顺利!!谢谢!! 清洁并运行。会成功的 【参考方案1】:

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

    启动 Xcode(简单)

    将 GoogleMaps.framework 包拖到框架中 您的项目组。出现提示时,选择复制项目到 目标组的文件夹。

    在您的项目中右键单击 GoogleMaps.framework,然后选择显示在 发现者。 没有说的是……然后进入名为 Resources 的子文件夹

    将 GoogleMaps.bundle 从 Resources 文件夹拖到您的 项目。我们建议将它放在框架组中。什么时候 提示,确保没有将项目复制到目标组的文件夹 已选中。

【讨论】:

这是比我更好的说明!谢谢! 很高兴听到这个消息 - 您是否能够获得使映射工作的 API 密钥? 您在此处添加的内容现在已反映在此处的官方文档中:developers.google.com/maps/documentation/ios/…也许有人在 Google 看到了这篇文章? 我这样做了,我的应用仍然崩溃 正如@JohnyDgoode 所说,将 GoogleMaps.framework 中的 GoogleMaps.bundle 添加到我的副本包资源后,一切顺利!【参考方案2】:

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

    干净构建:Command + alt option + Shift + K 清理项目:Command + Shift + K

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

【讨论】:

哇哦,谢谢我自己!在 Xcode 9.0 beta 2 中再次发生在我身上。 更新:Darnnit,它又崩溃了 另外,清除派生数据。似乎有帮助。 xCode -> Preferences -> Locations 然后单击派生数据路径旁边的小箭头。将 finder 中弹出的文件夹移至回收站。 是的,它有帮助,但过了一会儿,这个错误又重复了。 你救了我的命【参考方案3】:

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

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

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

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

【讨论】:

我已经在构建阶段有此部分,但地图仍然无法正常工作 对不起@sandeeptomar 我猜你的问题一定是别的。 Copy Pods 资源确实可能会丢失,并且 pod reintegrate 并没有为我修复它。我创建了一个新项目,使用相关 pod 进行了 pod 安装,然后复制了 pod 资源脚本?? 感谢@RedBlueThing。这个技巧解决了我的问题。我可以再次看到“复制 Pods 资源”部分。 deintegrate 是一个很好的工具。谢谢【参考方案4】:

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

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

-切换到旧的构建系统

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

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

-构建阶段

-[CP] 复制 Pod 资源

-您应该会看到 $PODS_ROOT/GoogleSomething ,选择它们并点击 -

-关闭 Xcode,运行 pod install。

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

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

【讨论】:

这是所有其他答案中唯一对我有用的答案【参考方案5】:

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

【讨论】:

【参考方案6】:

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

    转到目标 > 构建阶段 禁用“仅在安装时运行脚本”

【讨论】:

【参考方案7】:

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

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

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

    现在只需将 GoogleMaps.bundle 拖放到您的项目中即可。确保未选择将项目复制到目标组的文件夹。

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

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

这可能对某人有所帮助。

【讨论】:

“跟踪你的项目”是什么意思? 抱歉@FARID 这是“拖放”到您的项目中【参考方案8】:

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

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

修复了问题

【讨论】:

【参考方案9】:

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

    GoogleMap.frameword/Resources 中找到GoogleMaps.bundle 你会看到GoogleMap.bundle 使用 GoogleMapsBase.framework 将 GoogleMaps.bundle 拖入 Base/Framework

希望这会有所帮助。谢谢

【讨论】:

【参考方案10】:

一旦我更新到 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?

一旦您拨打电话号码8: Open the Build Phases tab, and within Link Binary with Libraries, add the following frameworks:。它列出了许多您必须导入的框架。

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

我一直在输入名字,但什么都没有显示出来。

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

【讨论】:

【参考方案11】:

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

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

就是这样

【讨论】:

以上是关于适用于 iOS 的 Google Maps SDK 要求 GoogleMaps.bundle 成为“复制捆绑资源”下目标的一部分的主要内容,如果未能解决你的问题,请参考以下文章

在使用适用于 iOS 的 Google Maps SDK 和适用于 iOS 的 Google Places 时,我找不到在哪里可以获得 POI 结果

带有适用于 iOS 的 Google Maps SDK 的可拖动标记

使用适用于 iOS 的 Google Maps SDK 优化自定义标记图像性能

适用于 iOS 的 Google Maps SDK 不断增加内存使用量

适用于 iOS 的 Google Maps SDK 要求 GoogleMaps.bundle 成为“复制捆绑资源”下目标的一部分

发布到 App Store 后,适用于 iOS 的 Google Maps SDK 崩溃