Flutter iOS应用崩溃:google-mobile-ads指针缺失空性类型标注
Flutter iOS端因google-mobile-ads空性标注崩溃的解决办法
问题根源
崩溃来自google-mobile-ads插件的FLTAdUtil文件,原因是Objective-C代码中部分指针缺少空性类型标注,触发Xcode的空性检查报错,导致应用崩溃。Android端无此问题是因为平台类型检查机制不同。
具体解决步骤
1. 更新插件到最新稳定版
官方大概率已经修复了这类空性标注问题,优先尝试更新:
- 打开项目根目录的
pubspec.yaml,将google_mobile_ads的版本号改为最新稳定版 - 执行命令:
flutter pub upgrade - 重新编译iOS项目:
flutter run ios
2. 手动修复空性标注(更新无效时用)
找到插件的FLTAdUtil.h文件(路径一般为ios/Pods/google-mobile-ads/Classes/FLTAdUtil.h),修改以下代码:
#import <Flutter/Flutter.h> #import <Foundation/Foundation.h> #import <WebKit/WebKit.h> @interface FLTAdUtil : NSObject // 给参数添加空性标注 + (BOOL)isNull:(id _Nullable)object; + (BOOL)isNotNull:(id _Nullable)object; + (WKWebView *_Nullable)getWebView:(NSNumber *_Nonnull)webViewId flutterPluginRegistry: (id<FlutterPluginRegistry> _Nonnull)flutterPluginRegistry; // 给属性添加非空标注 @property(readonly, class) NSString *_Nonnull requestAgent; @end
修改后保存,重新编译iOS项目即可。注意:下次执行pod install时修改会被覆盖,建议配合pod lock锁定插件版本,或者等待官方更新。
3. 关闭Xcode的空性完整性检查(临时规避)
如果不想修改插件代码,可通过关闭Xcode的严格检查来解决:
- 用Xcode打开项目的
ios/Runner.xcworkspace - 选中
RunnerTarget,进入Build Settings - 搜索
CLANG_WARN_NULLABILITY_COMPLETENESS,将其值改为NO - 或者在
Other C Flags中添加-Wno-nullability-completeness - 重新编译项目
内容的提问来源于stack exchange,提问作者user22187566
相关产品推荐
相关产品推荐

