使用 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 失败并显示“找不到框架”的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 Xcode sdk 编译版本

除了来自 google 的 chromecast,是不是可以使用 google cast SDK 构建我自己的 google cast 接收器?

使用 ZBar SDK 的 iPhone 应用程序的验证错误

iOS 静态框架和静态库

Unity UMP插件的使用

Google iOS SDK 无法存档(使用未声明的标识符错误)