晦涩的问题,Google AdMob SDK,XCode 8.2 + Cocoapods 集成

Obscure issue, Google AdMob SDK, XCode 8.2 + Cocoapods integration

我遇到了一个非常奇怪的问题,它让我忙了一个多星期,我认为这是 GoogleAdMob SDK、Xcode 8.2、cocoapods 或它们的组合的错误。

我把它贴在这里,希望工程师能确认错误并为我们的团队指明正确的解决方向。

问题是这样的:

  1. 创建一个空的 Xcode 项目
  2. Add/InstallGoogleAds-IMA-iOS-SDK-For-AdMob豆荚
  3. 提交所有内容并从本地计算机删除存储库
  4. 再次检查存储库
  5. 点击构建。项目将无法构建并出现错误 ld: framework not found GoogleMobileAds
  6. 要修复,请注释掉 GoogleAds-IMA-iOS-SDK-For-AdMob pod 和 运行 pod update,然后再次取消注释并再次 运行 pod update,项目将构建。
  7. 如果您此时尝试提交,git 将不会收到任何更改
  8. 重复第 3 步和第 4 步,您将回到第 5 步

我在这里创建了一个存储库 https://github.com/piterwilson/testAdmob 可以重现错误。

我发现的 'fix' 对我们的团队不起作用,因为我们提交了代码并将其发送到 Jenkins 服务器,该服务器创建了许多具有我们业务所需的不同代码签名的构建。

Jenkins 构建总是失败并显示 ld: framework not found GoogleMobileAds

额外信息:这只是从今年开始发生的。也许是因为 Xcode 8.2 (?) 但我们不能确定问题到底出在哪里。

我创建了一个以可靠方式解决问题的 PR:https://github.com/piterwilson/testAdmob/pull/1

存储库缺少 GoogleAdMobs 二进制文件。这是一个相当大的文件(38M),所以也许问题的提交者有一些自动忽略大文件的本地配置?二进制文件应该在这个提交中:https://github.com/piterwilson/testAdmob/commit/a0834a4d2f2b82da98add1bc3c49d8c0c28ffd86(至少当我试图重现这个问题时它出现在我面前。)