Reputation: 171
I have a Flutter project that uses AdMob. This works fine in Android and I'm able to view the test ads. But when I try to build for iOS, the build fails. I've googled for this and tried out various suggestions I found online but nothing helped. Hope someone can help with this issue.
snippets from my pub spec.yaml file environment: sdk: ">=2.7.0 <3.0.0"
firebase_core: ^0.7.0 firebase_admob: ^0.11.0+1
In ios/Flutter/AppFrameworkInfo.plist MinimumOSVersion is set to 10.1. And finally here are my build errors
Xcode's output:
↳
In file included from /Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTFirebaseAdMobPlugin.m:5:
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTFirebaseAdMobPlugin.h:28:4: error: expected a type
- (GADUnifiedNativeAdView *)createNativeAd:(GADUnifiedNativeAd *)nativeAd
^
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTFirebaseAdMobPlugin.h:28:45: error: expected a type
- (GADUnifiedNativeAdView *)createNativeAd:(GADUnifiedNativeAd *)nativeAd
^
In file included from /Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTFirebaseAdMobPlugin.m:9:
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTMobileAd.h:39:45: error: no type or protocol named 'GADInterstitialDelegate'
@interface FLTInterstitialAd : FLTMobileAd <GADInterstitialDelegate>
^
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTMobileAd.h:44:28: error: no type or protocol named 'GADUnifiedNativeAdLoaderDelegate'
: FLTMobileAdWithView <GADUnifiedNativeAdLoaderDelegate, GADUnifiedNativeAdDelegate>
^
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTFirebaseAdMobPlugin.m:138:16: warning: 'kGADAdSizeSmartBannerPortrait' is deprecated: Use GADPortraitAnchoredAdaptiveBannerAdSizeWithWidth. [-Wdeprecated-declarations]
adSize = kGADAdSizeSmartBannerPortrait;
^
In module 'GoogleMobileAds' imported from /Users/lk/files/projects/flutter/vocab_master/ios/Pods/Headers/Public/Firebase/Firebase.h:125:
/Users/lk/files/projects/flutter/vocab_master/build/ios/Debug-iphonesimulator/XCFrameworkIntermediates/GoogleMobileAds/GoogleMobileAds.framework/Headers/GADAdSize.h:126:5: note: 'kGADAdSizeSmartBannerPortrait' has been explicitly marked deprecated here
GAD_DEPRECATED_MSG_ATTRIBUTE("Use GADPortraitAnchoredAdaptiveBannerAdSizeWithWidth.");
^
In module 'GoogleMobileAds' imported from /Users/lk/files/projects/flutter/vocab_master/ios/Pods/Headers/Public/Firebase/Firebase.h:125:
/Users/lk/files/projects/flutter/vocab_master/build/ios/Debug-iphonesimulator/XCFrameworkIntermediates/GoogleMobileAds/GoogleMobileAds.framework/Headers/GoogleMobileAdsDefines.h:25:56: note: expanded from macro 'GAD_DEPRECATED_MSG_ATTRIBUTE'
#define GAD_DEPRECATED_MSG_ATTRIBUTE(s) __attribute__((deprecated(s)))
^
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTFirebaseAdMobPlugin.m:140:16: warning: 'kGADAdSizeSmartBannerLandscape' is deprecated: Use GADLandscapeAnchoredAdaptiveBannerAdSizeWithWidth [-Wdeprecated-declarations]
adSize = kGADAdSizeSmartBannerLandscape;
^
In module 'GoogleMobileAds' imported from /Users/lk/files/projects/flutter/vocab_master/ios/Pods/Headers/Public/Firebase/Firebase.h:125:
/Users/lk/files/projects/flutter/vocab_master/build/ios/Debug-iphonesimulator/XCFrameworkIntermediates/GoogleMobileAds/GoogleMobileAds.framework/Headers/GADAdSize.h:131:5: note: 'kGADAdSizeSmartBannerLandscape' has been explicitly marked deprecated here
GAD_DEPRECATED_MSG_ATTRIBUTE("Use GADLandscapeAnchoredAdaptiveBannerAdSizeWithWidth");
^
In module 'GoogleMobileAds' imported from /Users/lk/files/projects/flutter/vocab_master/ios/Pods/Headers/Public/Firebase/Firebase.h:125:
/Users/lk/files/projects/flutter/vocab_master/build/ios/Debug-iphonesimulator/XCFrameworkIntermediates/GoogleMobileAds/GoogleMobileAds.framework/Headers/GoogleMobileAdsDefines.h:25:56: note: expanded from macro 'GAD_DEPRECATED_MSG_ATTRIBUTE'
#define GAD_DEPRECATED_MSG_ATTRIBUTE(s) __attribute__((deprecated(s)))
^
2 warnings and 4 errors generated.
In file included from /Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTMobileAd.m:5:
In file included from /Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTMobileAd.h:6:
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTFirebaseAdMobPlugin.h:28:4: error: expected a type
- (GADUnifiedNativeAdView *)createNativeAd:(GADUnifiedNativeAd *)nativeAd
^
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTFirebaseAdMobPlugin.h:28:45: error: expected a type
- (GADUnifiedNativeAdView *)createNativeAd:(GADUnifiedNativeAd *)nativeAd
^
In file included from /Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTMobileAd.m:5:
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTMobileAd.h:39:45: error: no type or protocol named 'GADInterstitialDelegate'
@interface FLTInterstitialAd : FLTMobileAd <GADInterstitialDelegate>
^
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTMobileAd.h:44:28: error: no type or protocol named 'GADUnifiedNativeAdLoaderDelegate'
: FLTMobileAdWithView <GADUnifiedNativeAdLoaderDelegate, GADUnifiedNativeAdDelegate>
^
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTMobileAd.m:39:17: error: no known class method for selector 'configureWithApplicationID:'
[GADMobileAds configureWithApplicationID:appId];
^~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTMobileAd.m:97:79: warning: implicit conversion loses integer precision: 'FLTMobileAdStatus' to 'int' [-Wshorten-64-to-32]
NSString *statusString = (NSString *)statusToString[[NSNumber numberWithInt:_status]];
~ ^~~~~~~
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTMobileAd.m:211:69: error: expected a type
- (void)adView:(GADBannerView *)adView didFailToReceiveAdWithError:(GADRequestError *)error {
^
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTMobileAd.m:242:3: error: unknown type name 'GADInterstitial'; did you mean 'GADInterstitialAd'?
GADInterstitial *_interstitial;
^~~~~~~~~~~~~~~
GADInterstitialAd
In module 'GoogleMobileAds' imported from /Users/lk/files/projects/flutter/vocab_master/ios/Pods/Headers/Public/Firebase/Firebase.h:125:
/Users/lk/files/projects/flutter/vocab_master/build/ios/Debug-iphonesimulator/XCFrameworkIntermediates/GoogleMobileAds/GoogleMobileAds.framework/Headers/GADInterstitialAd.h:28:12: note: 'GADInterstitialAd' declared here
@interface GADInterstitialAd : NSObject <GADFullScreenPresentingAd>
^
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTMobileAd.m:271:35: error: expected a type
- (void)interstitialDidReceiveAd:(GADInterstitial *)ad {
^
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTMobileAd.m:278:23: error: expected a type
- (void)interstitial:(GADInterstitial *)ad didFailToReceiveAdWithError:(GADRequestError *)error {
^
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTMobileAd.m:278:73: error: expected a type
- (void)interstitial:(GADInterstitial *)ad didFailToReceiveAdWithError:(GADRequestError *)error {
^
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTMobileAd.m:284:40: error: expected a type
- (void)interstitialWillPresentScreen:(GADInterstitial *)ad {
^
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTMobileAd.m:288:40: error: expected a type
- (void)interstitialWillDismissScreen:(GADInterstitial *)ad {
^
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTMobileAd.m:292:39: error: expected a type
- (void)interstitialDidDismissScreen:(GADInterstitial *)ad {
^
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTMobileAd.m:296:43: error: expected a type
- (void)interstitialWillLeaveApplication:(GADInterstitial *)ad {
^
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTMobileAd.m:255:21: error: unknown receiver 'GADInterstitial'; did you mean 'GADInterstitialAd'?
_interstitial = [[GADInterstitial alloc] initWithAdUnitID:adUnitId];
^~~~~~~~~~~~~~~
GADInterstitialAd
In module 'GoogleMobileAds' imported from /Users/lk/files/projects/flutter/vocab_master/ios/Pods/Headers/Public/Firebase/Firebase.h:125:
/Users/lk/files/projects/flutter/vocab_master/build/ios/Debug-iphonesimulator/XCFrameworkIntermediates/GoogleMobileAds/GoogleMobileAds.framework/Headers/GADInterstitialAd.h:28:12: note: 'GADInterstitialAd' declared here
@interface GADInterstitialAd : NSObject <GADFullScreenPresentingAd>
^
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTMobileAd.m:255:44: error: no visible @interface for 'GADInterstitialAd' declares the selector 'initWithAdUnitID:'
_interstitial = [[GADInterstitial alloc] initWithAdUnitID:adUnitId];
~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTMobileAd.m:256:17: error: property 'delegate' not found on object of type 'GADInterstitialAd *'
_interstitial.delegate = self;
^
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTMobileAd.m:258:18: error: no visible @interface for 'GADInterstitialAd' declares the selector 'loadRequest:'
[_interstitial loadRequest:[factory createRequest]];
~~~~~~~~~~~~~ ^~~~~~~~~~~
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTMobileAd.m:313:3: error: unknown type name 'GADUnifiedNativeAdView'; did you mean 'GADNativeAdView'?
GADUnifiedNativeAdView *_nativeAd;
^~~~~~~~~~~~~~~~~~~~~~
GADNativeAdView
In module 'GoogleMobileAds' imported from /Users/lk/files/projects/flutter/vocab_master/ios/Pods/Headers/Public/Firebase/Firebase.h:125:
/Users/lk/files/projects/flutter/vocab_master/build/ios/Debug-iphonesimulator/XCFrameworkIntermediates/GoogleMobileAds/GoogleMobileAds.framework/Headers/GADNativeAd.h:114:12: note: 'GADNativeAdView' declared here
@interface GADNativeAdView : UIView
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
1 warning and 20 errors generated.
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTRewardedVideoAdWrapper.m:61:5: error: use of undeclared identifier 'GADRewardBasedVideoAd'
[[GADRewardBasedVideoAd sharedInstance]
^
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTRewardedVideoAdWrapper.m:66:5: error: use of undeclared identifier 'GADRewardBasedVideoAd'
[[GADRewardBasedVideoAd sharedInstance] setUserIdentifier:userIdentifier];
^
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTRewardedVideoAdWrapper.m:70:5: error: use of undeclared identifier 'GADRewardBasedVideoAd'
[[GADRewardBasedVideoAd sharedInstance] setCustomRewardString:customRewardString];
^
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTRewardedVideoAdWrapper.m:75:66: warning: implicit conversion loses integer precision: 'FLTRewardedVideoAdStatus' to 'int' [-Wshorten-64-to-32]
(NSString *)rewardedStatusToString[[NSNumber numberWithInt:_rewardedStatus]];
~ ^~~~~~~~~~~~~~~
1 warning and 16 errors generated.
In file included from /Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTRequestFactory.m:6:
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTFirebaseAdMobPlugin.h:28:4: error: expected a type
- (GADUnifiedNativeAdView *)createNativeAd:(GADUnifiedNativeAd *)nativeAd
^
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTFirebaseAdMobPlugin.h:28:45: error: expected a type
- (GADUnifiedNativeAdView *)createNativeAd:(GADUnifiedNativeAd *)nativeAd
^
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTRequestFactory.m:71:13: error: property 'testDevices' not found on object of type 'GADRequest *'
request.testDevices = testDevices;
^
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTRequestFactory.m:91:15: error: property 'birthday' not found on object of type 'GADRequest *'
request.birthday =
^
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTRequestFactory.m:106:19: error: property 'gender' not found on object of type 'GADRequest *'
request.gender = genderValue;
^
/Users/lk/programs/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_admob-0.11.0+1/ios/Classes/FLTRequestFactory.m:116:14: error: no visible @interface for 'GADRequest' declares the selector 'tagForChildDirectedTreatment:'
[request tagForChildDirectedTreatment:childDirected.boolValue];
~~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
6 errors generated.
Upvotes: 2
Views: 986
Reputation: 21
Add to Podfile:
target 'Runner' do
use_frameworks!
use_modular_headers!
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
# TODO: remove this once this issue is resolved:
# https://github.com/FirebaseExtended/flutterfire/issues/4931
pod 'Google-Mobile-Ads-SDK', '~> 7.69.0' # this line
end
Upvotes: 1