使用 Google UMP SDK 构建 Xcode 失败并显示“找不到框架”
Posted
技术标签:
【中文标题】使用 Google UMP SDK 构建 Xcode 失败并显示“找不到框架”【英文标题】:Xcode build with Google UMP SDK fails with 'framework not found' 【发布时间】:2020-11-04 18:21:27 【问题描述】:我们使用 Cordova 和 AdMob 制作中间件来展示广告。 Cordova 为我们生成了一个 Xcode 项目。但是,生成的 Xcode 项目现在无法构建,并出现错误 ld: framework not found UserMessagingPlatform.xcframework
。
这似乎是由Google UMP SDK 更新到版本 1.3.0 引起的,其中指出“将 SDK 从 .framework 更新为 .xcframework”。我联系了 AdMob 支持,他们声称构建对他们有效,但没有提供任何有用的帮助。
我不知道为什么我们的构建现在失败了,我不知道该怎么办。这是一个示例 Xcode 项目:https://www.dropbox.com/s/y1ly2c3yi45rop6/TestBuild.ios.project.zip?dl=0
谁能确定这个 Xcode 项目出了什么问题导致它无法构建,并找出解决方法?
【问题讨论】:
查看***.com/questions/29865899/… 【参考方案1】:问题
问题似乎是框架/依赖项未添加到 Xcode 项目,因此它没有编译应用程序所需的代码。 AdMob 依赖于 UserMessagingPlatform
来工作,如果您的代码库中没有 Mobile Ads SDK,则缺少 UserMessagingPlatform
并且您的应用程序本质上是在请求不存在的代码。为了解决这个问题,你必须告诉 cocoapods(一个依赖管理器,想想 npm,但对于 Swift/Objective-C)找到缺失的代码并将其添加到你的项目中。
首先,如果您还没有安装 cocoapods。我使用 Homebrew 来做到这一点,因为它似乎是唯一没有头痛的方法。许多人已经拥有 Homebrew,但如果你没有,请先安装它,然后运行:
brew install cocoapods
接下来,使用终端进入您的项目目录。进入目录后,运行:
pod install --repo-update
在 Xcode 中重新打开您的项目,现在应该可以成功编译了。
逐步解决:
跳过您的环境不需要的任何步骤。
-
安装Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
安装cocoapods:brew install cocoapods
打开终端,导航到您的项目目录:cd /path/to/your/project
更新依赖:pod install --repo-update
免责声明:我不是 Swift 或 Objective-C 开发人员,我对 Apple/Xcode 的经验有限。我也不熟悉“cocoapods”和 AdMob。我刚刚下载了示例代码并解决了这个问题,直到我成功编译为止。
【讨论】:
另外请注意,您不一定需要 cocoapods 来安装缺少的代码,这只是最简单的方法。在Google's documentation 中有更多关于如何手动安装框架的信息。我过去曾使用过 Cordova(通过 ngx-rocket),一旦您安装了缺少的 SDK,我希望您不必再次执行此操作,只要您不删除 cordova 项目并重新添加它(不幸的是,这有时是必要的)但如果你这样做了,只需重复这些步骤。我喜欢在 README 中注明这些内容 非常感谢。你为我节省了很多时间 @AlexZhulin 很高兴为您提供帮助 :)【参考方案2】:您是否在 XCode 项目中使用 Cocoapods?
This *** answer suggest updating cocoapods
尝试更新 cocoapods:
sudo gem install cocoapods
Cocoapods changelog contains fixes for XCFrameworks
【讨论】:
【参考方案3】:.xcframework
文件只能用于 CocoaPods 1.10.0 或更高版本,在您使用 1.8.4 的示例应用中。
将 CocoaPods 更新到最新版本并再次运行 pod install
。
【讨论】:
以上是关于使用 Google UMP SDK 构建 Xcode 失败并显示“找不到框架”的主要内容,如果未能解决你的问题,请参考以下文章
除了来自 google 的 chromecast,是不是可以使用 google cast SDK 构建我自己的 google cast 接收器?