在 'Framework' -Swift.h 文件中找不到模块

Module not found inside 'Framework' -Swift.h file

我创建了这个示例 Swift 框架,其中 GoogleMobileAds 通过 Cocoapods 集成。我有一个 class NativeAdView 继承自 GADNativeAdView.

import GoogleMobileAds

@objc public class NativeAdView: GADNativeAdView {
    
}

我还有一个示例目标,它是一个 Objective-C 应用程序。我在 AppDelegate.m.

中导入框架 header,如下所示
#import <SampleFramework/SampleFramework-Swift.h>

现在,当我 运行 Objective-C 目标时,它会在文件 SampleFramework-Swift.h[ 中引发错误=42=]

@import GoogleMobileAds; -------- Module 'GoogleMobileAds' not found.

但是,如果我将 NativeAdView 的 parent class 更改为 Google 广告 class 以外的任何内容,错误就会消失并且构建编译并 运行s 成功。

另外 @import GoogleMobileAds; 行从 SampleFramework-Swift.h 文件

我不知道发生了什么。

Github link - https://github.com/rishabdutta/FrameworkSample

首先,将您的目标 SampleFramework、SampleSwift、SampleObjc 的包标识符更新为不同的。

尝试按如下方式更新 Podfile。 Cocoapods 的工作方式是,在您的设置中,您必须为每个使用它的目标指定 'Google-Mobile-Ads-SDK',但为了避免复制该行,您可以使用 abstract_target,以便自动将依赖项添加到内部的所有目标:

use_frameworks!

abstract_target 'Common' do
  pod 'Google-Mobile-Ads-SDK'

  target 'SampleFramework' do
  end

  target 'SampleObjc' do
  end

  target 'SampleSwift' do
  end
end

但这样您将面临运行时警告“Class APMAdExposureReporter 已在两者中实现...”,但该应用程序可以运行,警告不会导致实际问题 - , 但我个人不知道如何处理它的最佳实践。