You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift框架集成GoogleMobileAds后OC引用时-Swift.h报模块未找到错误

问题诱因

  • 当Swift框架中被@objc public修饰的公开类继承自第三方模块(GoogleMobileAds)的类型时,Swift编译器生成Objective-C兼容头SampleFramework-Swift.h的过程中,会自动在头部插入@import GoogleMobileAds;语句,用于声明父类的所属模块。
  • 你的Objective-C主Target没有直接依赖GoogleMobileAds,也没有获取到该模块的可见性,编译时就会触发模块找不到的错误。
  • 当父类修改为非GoogleMobileAds相关的类型时,兼容头不会插入对应@import语句,错误自然消失。

解决方案

方案1(推荐,无需暴露依赖给主项目)

使用Swift 5.1及以上版本支持的@_implementationOnly声明导入GoogleMobileAds,告诉编译器该依赖仅在框架内部实现使用,不需要暴露给外部:

@_implementationOnly import GoogleMobileAds

@objc public class NativeAdView: GADNativeAdView {
    
}

修改后重新编译,生成的SampleFramework-Swift.h不会再出现@import GoogleMobileAds;语句,主项目不需要额外配置即可正常编译。

方案2(通过CocoaPods传递依赖)

在你的Swift框架的podspec文件中显式声明依赖和模块配置:

# 框架podspec添加以下配置
s.dependency 'GoogleMobileAds'
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' }

修改后在主项目目录重新执行pod install,CocoaPods会自动配置依赖传递,主项目可以间接获取GoogleMobileAds的模块可见性。

方案3(直接给主项目添加依赖)

直接在主项目的Podfile中给Objective-C的Target添加GoogleMobileAds依赖,重新执行pod install即可解决报错。

内容的提问来源于stack exchange,提问作者Rishab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 13:09:01