晋级第三方库不可怕,可怕的是附送bug
有bug不可怕,可怕的是第一个吃螃蟹
第一个也不可怕,可怕的是大家都不分享
一、 晋级Flutter3.3
太难得了,等了一个半月总算更新了,太等待能有新的功能提升,新的特性参加。使得能有更好的体验,更棒的开发效率。想要的有(1)Android Studio的自动完结,愈加智能。(现在每次提示的,都不是我想要的)(2)页面的动画愈加的流通。(很多时刻都是没有动画,感觉起来便是H5)(3)功能的优化。(More and More)
第一时刻更新到3.3.0,迫不及待的那种。开发(Android开发,然后适配下iOS),一切都是那么地Nice。当自鸣得意没有附送新bug时,打包iOS提测却一向都是报错,报错的原因有了。可是这个过错如同是有提示,又如同没有。(打包2天才成功,所以值得我记载一下)
之后七天又发布了3.3.1,这个周期是正常合理了。可我有点不敢晋级了。
二、 碰到了BUG
开端适配iOS的时分,build都是失利的,一向在报错。
1. 找不到FlutterPluginRegistrant
pod install
都是正常的。为啥忽然就找不到了FlutterPluginRegistrant
,之前一向都是好的。在swift中 import FlutterPluginRegistrant
也试了,在xx-Bridging-Header.h
中增加#import "FlutterPluginRegistrant,h"
也试了,都是报错的。
2. Flutter的Frameworks为空
找不到FlutterPluginRegistrant
不可能吧。在Pods的Development Pods中找到FlutterPluginRegistant,在的。
那为啥找不到呢。 尝试着把import FlutterPluginRegistrant
删去吧。看看会不会有啥报错。公然报错来了,找不到#import <Flutter/Flutter.h>
。这真的是一环扣一环啊。在上图中,可以明晰的看到Flutter
中的Frameworks
空空如也。是不是这个问题啊,是吗?
3. 怀疑Flutter加了新特性
翻开将 Flutter module 集成到 iOS 项目看看吧,不出意外的话,一定是Flutter整了个啥了。
新增了
post_install do |installer|
flutter_post_install(installer) if defined?(flutter_post_install)
end
大概率是这个原因了。将这句话,参加到Podfile的最下面,然后进行pod install
。
三. 逼近本相
1. 找不到targets
在这个报错前,有一些其他的过错。(这些应该是我环境导致的,晋级ruby和cocoapods后消失)
在podhelper.rb
中,找不到targets。这个看起来好眼熟啊。记住之前在增加IPHONEOS_DEPLOYMENT_TARGET
和EXCLUDED_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
找到报错的地方
将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.lock
和Pods
这2个文件删去。再履行一次pod install
。
成功了,又没彻底成功。正常运行到手机上了,可看着Xcode红红的报错,真的是表示很遗憾,这个锅不背。
四. 题外
开端怀疑是cocoapods
不是最新版别,因为之前碰到过。也许是ruby
不是最新版别呢。
最终通过晋级ruby,重新安装cocoapods
sudo gem install -n /usr/local/bin cocoapods
pod
引起的问题消失。