flutter項(xiàng)目window運(yùn)行到模擬器(mac電腦運(yùn)行報(bào)錯(cuò))踩坑解析

flutter項(xiàng)目運(yùn)行不起來(lái)踩坑實(shí)踐

問(wèn)題描述:第一次運(yùn)行flutter的代碼,是在家里的臺(tái)式電腦上運(yùn)行,內(nèi)存16g,ddr4+固態(tài),flutter的sdk
版本為正式版1.2.1,但是運(yùn)行flutter的項(xiàng)目沒(méi)有任何問(wèn)題,可以直接運(yùn)行在雷電模擬器上(雷電模擬器安卓
版本為5.1.1),后來(lái)在公司開(kāi)發(fā)flutter的時(shí)候,使用vsCode調(diào)用flutter run命令啟動(dòng)當(dāng)前的flutter項(xiàng)目,
可是詭異的是,模擬器上的apk直接閃退,我打開(kāi)vsCode的控制臺(tái)查看,發(fā)現(xiàn)什么異常也沒(méi)有輸出,我打開(kāi)代碼,
仔細(xì)研究了一段時(shí)間代碼,可是沒(méi)看出來(lái)有什么問(wèn)題會(huì)導(dǎo)致直接閃退,于是我考慮了再三,會(huì)不會(huì)是flutter
的sdk版本問(wèn)題,我檢查了一下,沒(méi)問(wèn)題,和家里使用的sdk是同一份,直接云盤(pán)下載的,于是我又考慮會(huì)不會(huì)
是因?yàn)榧依锸褂玫氖茿ndroid Stutio編譯運(yùn)行,而這里是vsCode,于是我將dart文件拷貝到as創(chuàng)建的新工程中,
檢查了一下沒(méi)有問(wèn)題后,深吸一口氣,拜了拜四阿哥,心中祈禱一定要運(yùn)行起來(lái),即使出錯(cuò)了也給我個(gè)異常日志啊,
但是事與愿違,依然是沒(méi)有任何日志輸出,我簡(jiǎn)直崩潰,一直折騰到下班,我把代碼copy了一份,帶到了家里,
本沒(méi)有抱多大希望,可是家里的as運(yùn)行成功,雷電模擬器顯示出了運(yùn)行的結(jié)果!我整個(gè)人凌亂了很久,
記錄了所有的環(huán)境,硬件參數(shù)等,第二天一個(gè)一個(gè)比對(duì),發(fā)現(xiàn)可能是主板支持格式不一樣,于是換了一個(gè)主板
一樣的機(jī)器果然運(yùn)行成功!

本以為這次踩坑就這么結(jié)束,可是似乎沒(méi)有這么簡(jiǎn)單,我今天開(kāi)發(fā)的時(shí)候,又一次遇到了無(wú)法運(yùn)行的情況,我檢查了很多遍,沒(méi)有升級(jí)或者降級(jí)sdk,電腦肯定是可以運(yùn)行的電腦,這次又會(huì)是什么情況呢?我排查了很久,百度不到結(jié)果,最后在github上找到了大神們的回答,原來(lái)這次是因?yàn)槲业膄lutter運(yùn)行的時(shí)候需要改配置參數(shù),忽略掉一部分flutter的檢查,否則運(yùn)行會(huì)閃退,我按照他們的命令替換了vsCode的啟動(dòng)命令,果然運(yùn)行成功,即使失敗,也會(huì)輸出了報(bào)錯(cuò)的日志

運(yùn)行異??偨Y(jié)

經(jīng)過(guò)我多臺(tái)機(jī)器好幾天的踩坑測(cè)試,我大概總結(jié)了幾種最大概率出現(xiàn)運(yùn)行詭異問(wèn)題的情況和解決方案,希望能幫助到你:

代碼語(yǔ)法沒(méi)問(wèn)題,但是直接運(yùn)行就閃退
遇到這種情況,可以選擇查看控制臺(tái)是否有異常輸出,如果有,那么一切正常,按照?qǐng)?bào)錯(cuò)排錯(cuò)即可,如果發(fā)
現(xiàn)沒(méi)有異常,可以仔細(xì)看看有木有如下的日志輸出(日志1),如果是出現(xiàn)了ERROR:flutter/shell/platform/android/android_context_gl.cc
這種類(lèi)似的錯(cuò)誤,這種錯(cuò)誤是因?yàn)檫\(yùn)行的程序在模擬器或者其他手機(jī)平臺(tái)運(yùn)行導(dǎo)致的結(jié)果,直接運(yùn)行會(huì)出現(xiàn)
flutter異常,我們只要使用
flutter run --enable-software-rendering -d all
命令啟動(dòng)(vsCode啟動(dòng)的時(shí)候用這句話替代flutter run命令就可以了)
如果不是當(dāng)前的錯(cuò)誤,博主還遇到過(guò)一次,是因?yàn)閒lutter的sdk版本的問(wèn)題導(dǎo)致的,運(yùn)行在機(jī)器上(模擬器上)
只要不關(guān)閉熱重載或者不關(guān)閉debug,直接就會(huì)閃退,這時(shí)候我們手動(dòng)點(diǎn)開(kāi)運(yùn)行的app,就可以正常展示了
(目前只發(fā)現(xiàn)更改flutter插件和sdk版本可以解決,不知道有木有其他的可以命令或者啟動(dòng)參數(shù)等可以解決
該問(wèn)題的,也請(qǐng)知道的大佬指出)

日志1

E/flutter ( 6146): [ERROR:flutter/shell/platform/android/android_context_gl.cc(165)] Could not choose an EGL configuration.
E/flutter ( 6146): [ERROR:flutter/shell/platform/android/android_context_gl.cc(53)] EGL Error: EGL_SUCCESS (12288)
F/flutter ( 6146): [FATAL:flutter/shell/platform/android/platform_view_android.cc(28)] Check failed: android_surface_. Could not create an OpenGL, Vulkan or Software surface to setup rendering.
E/flutter ( 6173): [ERROR:flutter/shell/platform/android/android_context_gl.cc(165)] Could not choose an EGL configuration.
E/flutter ( 6173): [ERROR:flutter/shell/platform/android/android_context_gl.cc(53)] EGL Error: EGL_SUCCESS (12288)
F/flutter ( 6173): [FATAL:flutter/shell/platform/android/platform_view_android.cc(28)] Check failed: android_surface_. Could not create an OpenGL, Vulkan or Software surface to setup rendering.
E/flutter ( 6207): [ERROR:flutter/shell/platform/android/android_context_gl.cc(165)] Could not choose an EGL configuration.
E/flutter ( 6207): [ERROR:flutter/shell/platform/android/android_context_gl.cc(53)] EGL Error: EGL_SUCCESS (12288)
F/flutter ( 6207): [FATAL:flutter/shell/platform/android/platform_view_android.cc(28)] Check failed: android_surface_. Could not create an OpenGL, Vulkan or Software surface to setup rendering.
E/flutter ( 6229): [ERROR:flutter/shell/platform/android/android_context_gl.cc(165)] Could not choose an EGL configuration.
E/flutter ( 6229): [ERROR:flutter/shell/platform/android/android_context_gl.cc(53)] EGL Error: EGL_SUCCESS (12288)
F/flutter ( 6229): [FATAL:flutter/shell/platform/android/platform_view_android.cc(28)] Check failed: android_surface_. Could not create an OpenGL, Vulkan or Software surface to setup rendering.
運(yùn)行的時(shí)候直接編譯出錯(cuò)
一般來(lái)說(shuō)遇到編譯期就出錯(cuò),可能性有很多,但是有一種一定要注意,就是在flutter的開(kāi)發(fā)中,路徑一定
不要存在中文路徑,只要出現(xiàn)一定編譯不通過(guò),通常中文導(dǎo)致的編譯報(bào)錯(cuò)大概如下日志2所示(目前的sdk版本
都進(jìn)行過(guò)測(cè)試,無(wú)法編譯通過(guò)),如果沒(méi)有中文路徑一定要檢查當(dāng)前的用戶權(quán)限,不是管理員的話,一定不要
把flutter的項(xiàng)目放在c盤(pán)的user敏感目錄下(sdk1.0版本的時(shí)候有一定幾率編譯出錯(cuò),1.2.1穩(wěn)定版目前沒(méi)
有測(cè)試出編譯出錯(cuò)的問(wèn)題,可能是修復(fù)了)

日志2(出現(xiàn)command: xxxx路徑下的android\gradler.bat app:properties這樣的異常)

中文路徑.png
mac/Win平臺(tái)可以編譯運(yùn)行但是mac/Win平臺(tái)不可以運(yùn)行
flutter目前的兼容性來(lái)說(shuō),mac的支持并不是很友好(不知道是不是蘋(píng)果那邊的問(wèn)題),博主好不容易用公司
唯一一臺(tái)imac臺(tái)式測(cè)試多次,并且使用同事的macbook測(cè)試了數(shù)次,發(fā)現(xiàn),在macbook上熱重載沒(méi)有問(wèn)題,
但是imac上卻有問(wèn)題,但是imac運(yùn)行程序沒(méi)有問(wèn)題的時(shí)候,macbook卻有問(wèn)題,包括在window運(yùn)行沒(méi)問(wèn)題,
但是mac平臺(tái)運(yùn)行卻直接失敗,這種情況就是博主一開(kāi)始說(shuō)的那樣的原因,主板問(wèn)題和系統(tǒng)兼容的問(wèn)題,具體
哪些機(jī)器運(yùn)行沒(méi)問(wèn)題,哪些主板沒(méi)問(wèn)題,目前博主接觸機(jī)器太少,給不出準(zhǔn)確數(shù)據(jù),希望后期flutter穩(wěn)定
后能多改進(jìn)這些兼容問(wèn)題,也希望有準(zhǔn)確測(cè)試數(shù)據(jù)的大神能提供一下具體的支持和兼容的情況
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容