天天看點

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更多的是用來開發,調試吧。個人了解

這是我兩天的青春啊~~