Xcode 界面生成器未检测到 Admob 框架类

2023-11-25

我一直在尝试在我的 iOS 应用程序中实现原生 Google adMob 广告,并遵循 admob 官方教程:https://developers.google.com/admob/ios/native/advanced

无论我是手动添加所需的admob框架还是通过CocoaPods添加,admob框架中的所有类都未被界面生成器检测到,因此我无法将UIView的自定义类设置为所需的admob视图类。但奇怪的是,在我的 swift 文件中导入框架后,我可以使用所有与 admob 相关的类。 请看下面的截图:

enter image description here

enter image description here

我发现了一个github项目,它什么也没做,只是通过Cocoapoding admob框架实现了admob原生广告(项目链接)。我下载了它的源代码,奇怪的是,admob 框架类可以通过该项目中的界面检测到。

enter image description here

我已经挠头好几天了,一直在寻找解决方案,但没有运气。如果您知道为什么会发生这种情况,请帮助我,并且非常感谢您的帮助。


TL;DR

将 CocoaPods pod 版本降级为7.67.0. (-:

Podfile

pod 'Google-Mobile-Ads-SDK', '7.67.0'

解释

这是因为GoogleMobileAds.framework became GoogleMobileAds.xcframework in 7.68.0+ - source。这意味着框架 (iOS 9) 和主要目标 (iOS 14.0+) 之间的 Objective C 运行时有所不同。XCFrameworks 是一种特殊类型二进制框架,因此在编译完成后手动编辑 iOS 版本不会产生任何影响,事实上,即使您在Podfile这不会有什么不同。

主代码在底层有一个不同的、更快的 Objective-C 运行时,因此跟踪使用不同数据结构的类XCFramework。例如,如果在框架中定义了一个类别,即使未使用新的重写方法(在运行时),该类别也将存储在读写内存中。另一方面,iOS 14.0+ 中的 Objective-C 运行时doesn't加载这些方法,直到它们被用来节省 RAM。这是一个重大改变对于旧的iOS版本,因为用于索引这些类的旧数据结构不再包含类别方法(在同一存储区域中)并且框架中的依赖逻辑(读取这些数据结构)将不再工作。方法混合处理方式不同,这就是GoogleUtilities也是如此(依赖于GoogleMobileAds)所以这可能会导致问题。因此,即使 IB 自动完成不起作用(这没什么大问题),也不会在运行时动态找到该类。我没有提到更改method list表示在新运行时的引擎盖下发生了变化,因为这超出了这个问题的范围,但旧的方法列表在运行时仍然可用(不间断的改变).

要解决这个问题,只需使用7.67.0你的版本Podfile目前。你不能做任何其他事关于这个作为end-user的框架,因为podspec将框架类型指定为vendored_framework这只能在框架的源代码中编辑。我尝试禁用use_frameworks但这不能编译。如果您可以编辑podspec对于您自己的框架,更改为静态框架是一个可行的解决方案(有注意事项)。框架在构建时而不是静态框架的加载时链接,因此您应该能够在 IB 中看到框架类,但随后您必须使框架的依赖 pod 也是静态的(更多工作)。更简单的等效方法是降级 pod,或者禁用use_frameworks在 Podfile 中。然而,框架具有更快的性能(链接时间)并且通常是首选,这就是为什么 CocoaPods 默认启用它们。

我还建议针对此错误创建一个新的 GitHub Issue,但看起来 SDK 不是开源的。也许苹果将来会解决这个错误,或者一旦谷歌意识到这个错误就会被谷歌解决,但是这是一个解决方法目前。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xcode 界面生成器未检测到 Admob 框架类 的相关文章

随机推荐

  • 在 constrOptim 中设置约束

    有没有一种简单的方法可以在 constrOptim 函数中为以下约束设置 theta ui ci c1
  • 如何使用 Eloquent 对分组结果进行排序?

    我已经尝试解决这个问题有一段时间了 但似乎无法使其发挥作用 我有一张与此类似的桌子 表 问题 id yearly issue year stock created at updated at magazine id 1 10 2000 1
  • 如何使用 HTML 验证日期范围?

    或者 是否可以使用 HTML 验证另一个字段的值 一个常见的示例是选择一个日期范围 其中 起始 日期应小于或等于 截止 日期 如果您可以在语法中使用元素引用 则以下内容将描述值之间所需的关系
  • 更改 Velocity.Log 文件的位置

    看起来很简单 文档位于http velocity apache org engine devel developer guide html Configuring Logging说要设置runtime log属性 这是我所有财产的所得 ve
  • 获取android中用户的语言

    http web archiveorange com archive v fwvde0wN3xcViMtADw6x 似乎 navigator language 属性在 android 上的 webview 中始终为 en 那么 获取用户语言
  • 确定硬币组合的算法

    最近 我遇到了一个关于编程算法的提示 但我不知道该怎么做 我以前从未真正编写过算法 所以我在这方面还是个新手 该问题要求编写一个程序来确定收银员根据硬币价值和硬币数量找零的所有可能的硬币组合 例如 一种货币可能有 4 个硬币 2 分 6 分
  • 有没有办法获取当前函数的函数名?

    defun foo send to debug log Error Function terminated get current function name 我目前这样做 defun foo send to debug log Error
  • 当购物车达到一定数量时添加促销产品

    我正在 WooCommerce 中寻找正确的钩子 因为当达到一定的购物车数量 例如 100 个常规单位 时 我需要将促销产品添加到购物车 我也用过钩子 init 但我认为这是不对的 这是我的代码 function add free prod
  • OpenCV for Android:无法加载级联分类器错误

    这是我第一次使用 openCV 库 我想用它来检测眼睛 我已经用过FdActivity本教程中提供的代码 http romanhosek cz android eye detection updated for opencv 2 4 6 本
  • 使用 Perl 匹配两个重叠模式

    我希望我的问题还没有被其他人提出 因为我试图查看网站上的几乎所有地方 但我无法找到答案 我的问题是 我正在制作一个 PERL 脚本 它必须检测每一次出现 of one or字符串中的另一个模式 例如 string betaalphabeta
  • 从 C# 类生成 UML 图

    我有 nHibernate 生成的类 用作持久保存到 SQL 数据库的 MVC 项目的 BO 我想将现有代码呈现为 UML 图表 以便我可以开始使用代码生成实用程序 与所问的类似here仅适用于 SQL nhibernate SO 建议从
  • 如何在 javascript 中对 url 进行编码并在 C# 中对其进行解码

    我有一个带有查询字符串的网址 通过它传递一些数据 我想在服务器端检索数据 这个问题的解决办法是什么 您可以使用 javascript 的转义函数对 URL 进行编码 Example escape It s me result It 27s
  • 我应该如何理解&**self in Box

    boxed rs 中的代码 stable feature rust1 since 1 0 0 rustc const unstable feature const box issue 92521 impl
  • 全新的rails应用程序,无法生成脚手架

    虽然我不是专家 但我已经在内部开发了一些 Rails 应用程序 用于一些相对小型 中型的项目 并且之前没有遇到过与此类似的问题 我只是想创建一个新的应用程序 然后创建一个脚手架 但我收到了有关 sqlite3 gem 的错误 看看这个 我的
  • ExpandableListView 显示没有子项的组的指示器

    我正在创建一个ExpandableListView与数据库中的数据 为此 我正在使用CursorTreeAdapter我用一个填充它Cursor包含我从数据库检索的数据的对象 我认为 默认情况下Android会考虑没有孩子的组 不可扩展 但
  • 为什么从 v6 升级到 IdentityModel v7 后出现 IDX20803 错误?

    升级后Microsoft IdentityModel Tokens and System IdentityModel Tokens Jwt to 7 0 0 我收到此错误 IDX20803 无法从 https example com rea
  • 修改本地存储?

    我正在使用 simplecartjs 为在线商店提供支持 它将数据存储在本地存储中 如下所示 SCI 1 quantity 1 id SCI 1 price 20 name Mattamusta teippi size Tyhj SCI 3
  • Android:如何将预览帧保存为jpeg图像?

    我想将预览帧保存为 jpeg 图像 我尝试编写以下代码 public void onPreviewFrame byte data Camera camera if settings isRecording Camera Parameters
  • 使用 TypeScript 和 React 输入 redux 表单 v7

    我有一个简单的由react redux驱动的表单 我希望有一个 form container tsx 和一个 form component tsx 其中 form container tsx 保存所有到 redux 状态的连接减去 Fiel
  • Xcode 界面生成器未检测到 Admob 框架类

    我一直在尝试在我的 iOS 应用程序中实现原生 Google adMob 广告 并遵循 admob 官方教程 https developers google com admob ios native advanced 无论我是手动添加所需的