晋级第三方库不可怕,可怕的是附送bug

有bug不可怕,可怕的是第一个吃螃蟹

第一个也不可怕,可怕的是大家都不分享

一、 晋级Flutter3.3

太难得了,等了一个半月总算更新了,太等待能有新的功能提升,新的特性参加。使得能有更好的体验,更棒的开发效率。想要的有(1)Android Studio的自动完结,愈加智能。(现在每次提示的,都不是我想要的)(2)页面的动画愈加的流通。(很多时刻都是没有动画,感觉起来便是H5)(3)功能的优化。(More and More)

Flutter3.3打包iOS填坑记录

第一时刻更新到3.3.0,迫不及待的那种。开发(Android开发,然后适配下iOS),一切都是那么地Nice。当自鸣得意没有附送新bug时,打包iOS提测却一向都是报错,报错的原因有了。可是这个过错如同是有提示,又如同没有。(打包2天才成功,所以值得我记载一下)

之后七天又发布了3.3.1,这个周期是正常合理了。可我有点不敢晋级了。

二、 碰到了BUG

开端适配iOS的时分,build都是失利的,一向在报错。

1. 找不到FlutterPluginRegistrant

Flutter3.3打包iOS填坑记录

pod install都是正常的。为啥忽然就找不到了FlutterPluginRegistrant,之前一向都是好的。在swift中 import FlutterPluginRegistrant也试了,在xx-Bridging-Header.h中增加#import "FlutterPluginRegistrant,h"也试了,都是报错的。

2. Flutter的Frameworks为空

找不到FlutterPluginRegistrant不可能吧。在Pods的Development Pods中找到FlutterPluginRegistant,在的。

Flutter3.3打包iOS填坑记录

那为啥找不到呢。 尝试着把import FlutterPluginRegistrant删去吧。看看会不会有啥报错。公然报错来了,找不到#import <Flutter/Flutter.h>。这真的是一环扣一环啊。在上图中,可以明晰的看到Flutter中的Frameworks空空如也。是不是这个问题啊,是吗?

3. 怀疑Flutter加了新特性

翻开将 Flutter module 集成到 iOS 项目看看吧,不出意外的话,一定是Flutter整了个啥了。

Flutter3.3打包iOS填坑记录

新增了

post_install do |installer|
  flutter_post_install(installer) if defined?(flutter_post_install)
end

大概率是这个原因了。将这句话,参加到Podfile的最下面,然后进行pod install

三. 逼近本相

1. 找不到targets

在这个报错前,有一些其他的过错。(这些应该是我环境导致的,晋级ruby和cocoapods后消失)

Flutter3.3打包iOS填坑记录

podhelper.rb中,找不到targets。这个看起来好眼熟啊。记住之前在增加IPHONEOS_DEPLOYMENT_TARGETEXCLUDED_ARCHS[sdk=iphonesimulator*时,也一样用到了。

post_install do |installer|
  flutter_post_install(installer) if defined?(flutter_post_install)
 
  installer.pod_target_subprojects.flat_map { |p| p.targets }.each do |target|
   target.build_configurations.each do |c|
    c.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
    c.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
   end
  end
end

那是不是可以如法炮制,干起来。

2. 修正podhelper.rb

找到报错的地方

Flutter3.3打包iOS填坑记录

installer.pods_project.targets.each do |target|替换为installer.pod_target_subprojects.flat_map { |p| p.targets }.each **do** |target|.

回到项目目录中,履行pod install。报错消失了。

3. 成功

一般就能正常debug和打包了。

假如碰到二般,那仍是不可。那只能拿出杀手锏:

第一步. 清缓存

(1)shift + commond + k 清理builder文件。 (2)清理DerivedData文件夹。

第二步. 重装pod

Podfile.lockPods这2个文件删去。再履行一次pod install


成功了,又没彻底成功。正常运行到手机上了,可看着Xcode红红的报错,真的是表示很遗憾,这个锅不背。

Flutter3.3打包iOS填坑记录

四. 题外

开端怀疑是cocoapods不是最新版别,因为之前碰到过。也许是ruby不是最新版别呢。

最终通过晋级ruby,重新安装cocoapods

sudo gem install  -n /usr/local/bin cocoapods

pod引起的问题消失。