我已经创建了这个示例Swift框架,其中通过Cocoapods集成了GoogleMobileAds
。我有一个继承自GADNativeAdView
的类NativeAdView
。
import GoogleMobileAds
@objc public class NativeAdView: GADNativeAdView {
}
我也有一个样本目标,这是一个Objective-C应用程序。我导入框架头如下在我的AppDelegate.m.
#import <SampleFramework/SampleFramework-Swift.h>
现在当我运行Objective-C目标时,它会在文件SampleFramework-Swift.h中抛出一个错误
@import GoogleMobileAds; -------- Module 'GoogleMobileAds' not found.
但是,如果我将NativeAdView
的父类更改为Google广告类以外的任何东西,则错误消失,构建编译并成功运行。
@import GoogleMobileAds;
line也远离SampleFramework-Swift.h
文件我不知道发生了什么事。
Github link - https://github.com/rishabdutta/FrameworkSample首先,更新目标SampleFramework, samplesswift, SampleObjc的bundle标识符,使其不同。
尝试如下更新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
但是这样你将面对一个运行时警告"类APMAdExposureReporter被实现在…",但应用程序将工作,警告不会引起真正的问题-它在这里讨论,但我个人不知道如何处理它的最佳实践