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
既然能運作,打包怎麼還會找不到包呢?
原來是我的問題。。
打包需要使用下面這個xcworkspace的方式來打開項目進行archived。這種方式更多是管理包依賴和資源管理。
而上面的xcodeproj更多的是用來開發,調試吧。個人了解
這是我兩天的青春啊~~