M1芯片Mac搭建Flutter開發(fā)環(huán)境全攻略

Flutter是目前全世界最流行的一個跨平臺的移動UI框架,可以快速在iOS和Android上構(gòu)建高質(zhì)量的原生用戶界面。

并且是Google的親兒子,也對于混合開發(fā)非常友好,最重要的是,他是完全免費(fèi)的,并且開源。

Flutter有什么優(yōu)點(diǎn)呢?官方也很明確的表達(dá)了三個點(diǎn):

1、快速開發(fā);

2、富有表現(xiàn)力和靈活的UI;

3、原生性能。

首先,能夠進(jìn)行快速開發(fā)。得益于Flutter的熱重載特性,修改任意代碼后保存,模擬器上的應(yīng)用會立即更新,做到幾乎與前端發(fā)開一樣的便捷高效,并且還不會丟失狀態(tài),什么意思呢,就是說,我們操作過的數(shù)據(jù),滑動過的列表的位置,都不會重置,總之,非常高級就對了。

其次,靈活的UI搭建以及布局。Flutter已經(jīng)內(nèi)置了Material和iOS風(fēng)格的widget,客戶沒有特別的要求的話,搭建一個框架出來也就分分鐘的事,全部是widget進(jìn)行排列組合。

并且,布局方面也比蘋果的AutoLayout高級多了,直接拿來了前端的FlexBox布局,寫代碼的時候完全不用考慮去計(jì)算frame,也不用考慮多設(shè)備適配問題,非常的前衛(wèi)。

最后,F(xiàn)lutter可以達(dá)到與原生應(yīng)用幾乎一樣的性能,所以,最最影響用戶體驗(yàn)的性能問題,我們也不用擔(dān)心太多,常用的UI組件也都用widget封裝好了,拿來即用。

而且,很多企業(yè)、很多項(xiàng)目,已經(jīng)在使用Flutter了,甚至也有了不少純Flutter開發(fā)的app,原因很簡單,使用Flutter進(jìn)行app開發(fā)可以給企業(yè)至少節(jié)省一半的成本,企業(yè)就不需要養(yǎng)著一群安卓開發(fā)和iOS開發(fā)。

只需要幾個Flutter工程師,一套代碼,就齊活了,時間成本、金錢成本、溝通成本,都節(jié)省了,并且Flutter他的性能是非常優(yōu)秀的,使用也非常穩(wěn)定,幾乎不會造成莫名其妙的crash,容錯率也大大增加了,而這些恰好都是企業(yè)最關(guān)心的痛點(diǎn)。

當(dāng)前的移動端大環(huán)境越來越卷,跨平臺也一直在擠兌移動端,對于我們iOS開發(fā)者來說,掌握一門跨平臺技術(shù)是越來越迫在眉睫的事情了,不僅是對提升當(dāng)前的薪資水平有幫助,而且也能給自己提供一個更大的發(fā)展空間,未來就有一個更多的可能性。

鋪墊完了回到正題,這篇文章呢,主要記錄我使用M1芯片的Mac Mini搭建Flutter開發(fā)環(huán)境的全過程,以及注意事項(xiàng)和坑點(diǎn)。

首先明確配置步驟:

1、Flutter環(huán)境配置;

2、IDE安裝配置;

3、Java環(huán)境配置。

首先,去官網(wǎng)下載Flutter安裝包,最新的穩(wěn)定版即可:

然后就要使用命令了,打開終端之前,在終端的簡介中勾選“使用Rosetta打開”,防止配置過程中出現(xiàn)某些莫名其妙的問題:

然后把國內(nèi)的鏡像加入到環(huán)境變量:

exportPUB_HOSTED_URL=https://pub.flutter-io.cnexportFLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

我的Flutter是安裝在development目錄下的:

cd~/development

然后解壓下載好的Flutter包到該目錄下:

unzip ~/Downloads/flutter_macos_2.2.3-stable.zip

把flutter安裝包里面的工具暫時添加到PATH里面:

exportPATH=`pwd`/flutter/bin:$PATH

這樣就完成了最基本的Flutter環(huán)境配置,接下來激動人心的時刻來了,就是首次執(zhí)行Flutter命令:

flutterdoctor

首次執(zhí)行Flutter命令的時候,會自動下載依賴項(xiàng)并自行編譯,當(dāng)然你也可以不執(zhí)行。

因?yàn)檫@句命令是用來檢查Flutter配置的,僅僅是做到這一步肯定會有問題。這個時候我們再來配置完整的環(huán)境變量,執(zhí)行:

vim~/.zshrc

怎么用我就不多介紹了,如果不擅長的話,就直接open吧,然后添加如下內(nèi)容:

保存并退出編輯,然后刷新一下,讓我們的配置立即生效:

source~/.zshrc

如果你是配在了$HOME/.bash_profile文件里面,也沒有關(guān)系,在~/.zshrc里面添加source ~/.bash_profile就搞定,因?yàn)镸ac系統(tǒng)版本在10.15之后shell默認(rèn)是zsh,之前都是bash,如果你還是依然用的bash,那就配置在.bash_profile就行了。

然后進(jìn)入下一個階段,我們需要選一個IDE,一般來說,IntelliJ IDEA,Android Studio和VS Code三選一即可,當(dāng)然你要顯擺你的能力的話,用文本編輯器或者直接終端上vim一樣可以做Flutter開發(fā)。

我選擇的是Android Studio,原因很簡單,Android Studio是基于IntelliJ IDEA的,而且集成了Android開發(fā)工具很方便開發(fā)調(diào)試,跟Flutter都是Google的親兒子,兄弟之間,會更有默契。

安裝好Android Studio之后,意味著Android SDK和自帶的Java開發(fā)環(huán)境也裝好了,然后還需要安裝兩個插件,F(xiàn)lutter插件和Dart插件,讓Android Studio支持Flutter開發(fā):

安裝完成后重啟Android Studio讓插件生效,然后創(chuàng)建一個Flutter項(xiàng)目來測試一下可否正常運(yùn)行及調(diào)試:

選擇Flutter App,然后選擇你的Flutter SDK路徑,就是你的安裝包解壓路徑:

填寫你的項(xiàng)目名稱,默認(rèn)選中Android、iOS,然后點(diǎn)擊Finish:

項(xiàng)目打開后,首先在右上角的工具欄里選擇已經(jīng)在運(yùn)行的iOS模擬器(由于我做開發(fā)平時iOS模擬器從來不關(guān),如果你不知道怎么單獨(dú)打開模擬器就用Xcode跑個項(xiàng)目吧):

然后control+R運(yùn)行,一般很快就跑起來了,不會有任何問題:

然后我來試一下Android模擬器,如果設(shè)備下拉列表中沒有Android Emulator選項(xiàng),就點(diǎn)擊最下面的Refresh,刷新一下,等待幾秒鐘一般就有了,或者也可以通過點(diǎn)擊右上角的手機(jī)小圖標(biāo)來打開Android Virtual Device Manager列表,從列表中啟動自帶的模擬器:

啟動好后,下拉列表中選中這個Android Emulator,control+R運(yùn)行,雖然心情很激動,但是問題還是來了:

就三行錯誤描述,說明這個問題好解決,沒有安裝JRE,就是Java的運(yùn)行環(huán)境,我去官網(wǎng)整一個:

安裝好后,系統(tǒng)偏好設(shè)置.app面板中就能看到Java的圖標(biāo)了:

再來運(yùn)行,不出所料,依然報錯:

這個我就不翻譯了,雖然比上個問題多了很多描述,但還是很好理解的,沒有找到JDK,就是Java Development Kit。

這里先明確一下JDK和JRE的區(qū)別,如果只是要運(yùn)行Java程序,安裝JRE就可以了,如果是做開發(fā)的話,就安裝JDK。

同時,JDK包含了JRE。我記得Android Studio是自帶了JDK的,為什么找不到呢,打開Project Structure,Project SDK,選中default JDK,運(yùn)行也并沒有什么用:

對Java本來就不甚了解的我,表示到了拼運(yùn)氣環(huán)節(jié),嘗試了幾種方式無果后,索性先來看一下Flutter配置還有什么問題:

就兩個小問題了,第二個問題短一些,感覺比較好下手,意思是,找不到捆綁的Java版本,難道是需要配置環(huán)境變量嗎?

于是,我照著網(wǎng)上各種JDK的環(huán)境變量配置方式操作了一遍(這里開始不要跟著我來操作了,請看到最后):

vim~/.zshrc

JAVA_HOME我試過了JRE、安裝包里自帶的,甚至gradle和android我都配置了,然而,并沒有什么用,一樣運(yùn)行不起來,

那沒關(guān)系,我姑且認(rèn)為我姿勢不對,找不到JDK我就再去oracle官網(wǎng)下載一個:

當(dāng)然,Mac系統(tǒng)也是自帶有JDK的,但是版本可能太低滿足不了要求,我就沒有去嘗試了,安裝好后找到安裝的路徑:

然后配置環(huán)境變量,替換如下內(nèi)容:

保存后進(jìn)行刷新,然后驗(yàn)證配置是否正確:

source~/.zshrcecho$JAVA_HOME

沒問題的話再來查看Java版本,如果內(nèi)容如下圖,則配置成功:

安裝JDK之前是這樣的:

另外,還可以用Android Studio來安裝JDK,如下圖:

這就省事多了,各個版本都可以選,比官網(wǎng)上那種看不懂的列表更容易理解,配置好JDK后萬事俱備,再來運(yùn)行:

怎么問題描述越來越長了,也越來越看不懂了,真是一個頭兩個大,這個時候表示沒什么耐心了,先來看看Flutter配置的第一個問題,提示也很清楚,按照提示執(zhí)行一下:

flutterdoctor --android-licenses

執(zhí)行完了沒報錯,再來看看Flutter配置有沒有問題:

竟!然!沒有問題了!我再來運(yùn)行,然鵝,錯誤依舊,這就有點(diǎn)超出我的能力范圍了,最后一個辦法,開始瘋狂嘗試,各種查資料,經(jīng)歷了九九八十一試之后,成功搞定:

怎么搞定的呢?其實(shí)是我想復(fù)雜了,直接找到Android Studio.app,然后右鍵顯示包內(nèi)容,找到j(luò)re文件夾,然后在文件夾里面新建一個jdk文件夾,把jre文件夾里面的Contents文件夾,直接拷貝一份到j(luò)dk文件夾里面去:

這是Android Studio自己的一個不友好的地方,也怪他把配置搞的太復(fù)雜,當(dāng)然Java大佬可以指點(diǎn)我一下,我確實(shí)沒有通過配置環(huán)境變量來搞定這個問題,甚至手動安裝的JDK也派不上用場,我刪掉了一樣沒有任何問題。

而且配置的環(huán)境變量最后我只留了Flutter的那三句,Java的全部不需要,當(dāng)然,JAVA_HOME那句可以留著,否則執(zhí)行flutter doctor過不了,但刪掉也不影響跑安卓模擬器。

模擬器都正常運(yùn)行和調(diào)試沒問題之后,我來試一下iPhone真機(jī)運(yùn)行,依然沒有成功,不過已經(jīng)見怪不怪了,提示:無法打開“iproxy”,因?yàn)闊o法驗(yàn)證開發(fā)者,這個問題可能是因?yàn)闄?quán)限不夠,執(zhí)行這句命令就可以搞定:

sudoxattr -d com.apple.quarantine /Users/zions/development/flutter/bin/cache/artifacts/usbmuxd/iproxy

(滑動顯示更多)

至此,就可以愉快的跟Flutter玩耍了。

就我的感受而言,整個過程還是挺折騰的,特別是對于純iOS開發(fā)者來說,讓我去搞這些知識體系之外的東西,遇到問題確實(shí)也只能碰碰運(yùn)氣,如果你身邊正好有Java大佬的話,一定要去問一問。

可能會簡單很多,也不會毫無頭緒,不要像我一樣喜歡自己埋頭去鉆(混的比較慘,身邊沒有Java朋友),到最后碰對了可能也不知其所以然,也不敢發(fā)表自己的看法,畢竟不是自己的專業(yè)領(lǐng)域,記錄以共勉。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,030評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,310評論 3 415
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,951評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,796評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,566評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,055評論 1 322
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,142評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,303評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,799評論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,683評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,899評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,409評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,135評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,520評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,757評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,528評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,844評論 2 372

推薦閱讀更多精彩內(nèi)容