天天看点

Flutter遇到open too many open files大坑之路

Flutter 踩了个大坑。

问题描述:在Flutter工程下,项目能够正常编译,运行。

在Android工程下:运行报错,报错很混乱,关键信息是Too many open files。修改系统增加打开的文件数后,发现还是一样。借了灵台一台mac来编就又正常。非常之头大,不过至少我能确定的是,代码是没问题的。这种情况下,当然打包也失败了。

在IOS工程下:也坑了。项目可以正常运行,但打包出错。看错误应该是编译AOT的时候一些文件信息除草了。看日志build 包是OK了。

书库:问题看起来是如此的神奇。本来我以为是因为flutter在native项目下构建打开了太多的文件超出了系统的打开文件数量的限制。然而,使用ulimit -n 2048将最大打开文件数从256增加到了2048.效果然并卵,然后我尝试了以下各种神操作…

解决过程:

1、删掉gradle缓存

2、删掉Flutter sdk缓存

3、卸载Android Studio重装

以上方法都不行。

**

终极办法:后面改了gradle的编辑环境:plugin改成3.5.0+ gradle版本从5.6.2降低到5.4.1 Android项目可以正常运行,打包了。🙄无脑解决。

这个方法是我无意中各种尝试发现解决的,网上也找不遇到答案哈哈。

补充一下,为了不再翻车,plugin的版本这里最好跟flutter sdk中设置的版本一致,毕竟gradle不是它家的,gradle的版本升级一下在Flutter发现有这么坑。

Flutter sdk 的gradle的版本查看:flutter/packages/flutter_tools/gradle/flutter.gradle中查看。

ios打包的问题出错:

parsing line table prologue at offset 0x6f697463 found unsupported version 0x00

Flutter遇到open too many open files大坑之路
Flutter遇到open too many open files大坑之路

既然能运行,打包怎么还会找不到包呢?

原来是我的问题。。

Flutter遇到open too many open files大坑之路

打包需要使用下面这个xcworkspace的方式来打开项目进行archived。这种方式更多是管理包依赖和资源管理。

而上面的xcodeproj更多的是用来开发,调试吧。个人理解

这是我两天的青春啊~~