日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【2020年APP-Flutter混合开发之路】01 - Flutter的初步思考和开发部署

發(fā)布時間:2023/12/15 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【2020年APP-Flutter混合开发之路】01 - Flutter的初步思考和开发部署 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

為什么選擇Flutter

在使用Flutter開發(fā)之前,我是一個標(biāo)準(zhǔn)的iOS開發(fā)人員。我至今認(rèn)為蘋果的整個體系,甚至整個技術(shù)框架都是業(yè)內(nèi)最牛逼,最完善的,你甚至挑不出太多毛病。尤其在蘋果發(fā)布Swift并宣布開源后,蘋果的整個技術(shù)生態(tài)體系已到頂峰(Swift甚至可以用來做Web后端的開發(fā),并且被谷歌人工智能團(tuán)隊所采取作為首選語言)。但是,iOS開發(fā)中也有一些不足之處

  • 在Swift發(fā)布之前,所有的蘋果體系都是采用Objective-C,C,C++作為開發(fā)語言,尤其OC語法繁瑣,開發(fā)效率極低;
  • 平臺限制嚴(yán)重,你需要準(zhǔn)備以下必要設(shè)備:Mac電腦,iPhone手機(jī),Apple開發(fā)者賬號(99美刀),一套組合拳下來大致需要2W人民幣;
  • 崗位需求逐年降低,大部分的iOS開發(fā)都轉(zhuǎn)到了后端或者跨平臺開發(fā)。

基于以上原因,我嘗試了學(xué)習(xí)一些跨平臺的技術(shù),最終確定了Flutter,著實讓人驚艷,以下為我學(xué)習(xí)中最直觀的感受:

  • 你甚至可以完全不懂Android和iOS即可進(jìn)行開發(fā);
  • Flutter SDK的分層架構(gòu)清晰,入門簡單,上手快;
  • 參考了React的狀態(tài)管理設(shè)計,只用關(guān)注用戶界面和業(yè)務(wù)邏輯,不用花功夫在狀態(tài)維護(hù)上;
  • 第三方插件,組件豐富,90%以上的開發(fā)需求都能在Flutter插件&組件市場找到;

舒適區(qū)待的太久,災(zāi)難降臨時,你已無從躲避。作為一個移動開發(fā)人員,你應(yīng)該掌握一項必殺技,對我而言,Flutter是一個不錯的選擇。

本篇解決問題

如果以下問題都知道,可跳過本文檔。

  • 對原生開發(fā),Hybrid了解有多少?
  • Flutter不同版本(Stable,Beta,Dev,Master)的特點?
  • flutter doctor命令是做什么用的?
  • 配置Android Studio還需要額外下載SDK嗎?為什么?
  • 如何在Win上配置Flutter和Android環(huán)境變量?

原生開發(fā)、Hybrid、Flutter對比

在Flutter出現(xiàn)之前,App開發(fā)一般就兩種形式:純原生以及混合(Hybrid)開發(fā)。隨著Flutter在2018年發(fā)布第一個預(yù)覽版本后,儼然形成了三分天下的局面。

/ 原生開發(fā) /

原生開發(fā)特指一套代碼跑在單獨的一個操作系統(tǒng)上,比如可以使用Java或者Kotlin開發(fā)Android平臺應(yīng)用,使用Objective-C或者Swift開發(fā)iOS平臺應(yīng)用,目前移動操作系統(tǒng)基本被Android和iOS瓜分。原生開發(fā)的顯著特點就是,可以通過代碼直接使用平臺所提供的SDK(軟件開發(fā)工具包,是一整套功能豐富的API集合),兩個平臺的工具集分為Android SDK與Cocoa Touch。

原生開發(fā)的優(yōu)勢:

  • 無障礙訪問平臺所有功能,如藍(lán)牙,錄音,定位,傳感器等;
  • 因為直接訪問原生API,所以運行速度快,性能高,可以實現(xiàn)非常復(fù)雜的動畫效果和交互。

原生開發(fā)的缺點:

  • 平臺特定,一套代碼只能在一端運行,所以對于企業(yè)而言,開發(fā)及維護(hù)成本相對較高;
  • 原生開發(fā),一旦有功能變動,需要重新打包發(fā)布,動態(tài)下發(fā)能力(熱更新)差。

/ Hybrid /

如今,移動互聯(lián)網(wǎng)逐漸成熟,純原生開發(fā)已經(jīng)很難應(yīng)對各種變態(tài)需求。針對開發(fā)成本,動態(tài)內(nèi)容的問題,衍生了一些基于前端技術(shù)棧的一些跨平臺框架

  • H5 + 原生
  • JavaScript開發(fā) + 原生渲染

H5 + 原生的開發(fā)形式,目前是混合開發(fā)的主流。使用原生技術(shù)搭建APP框架,使用H5動態(tài)下發(fā)內(nèi)容。由于H5代碼只需要一次開發(fā),就能同時在Android和iOS兩個平臺運行,這也可以減小開發(fā)成本。也就是說,H5部分功能越多,開發(fā)成本就越小。我們稱這種H5+原生的開發(fā)模式為混合開發(fā) ,采用混合模式開發(fā)的APP我們稱之為混合應(yīng)用Hybrid APP ,如果一個應(yīng)用的大多數(shù)功能都是H5實現(xiàn)的話,我們稱其為Web APP 。混合開發(fā)的技術(shù)難點主要是原生和H5之間的交互。一般情況下,我們稱H5與原生交互的方式叫JSBridge

JavaScript開發(fā) + 原生渲染的開發(fā)方式目前特指Facebook開源的React Native以及阿里開源的Weex。其核心技術(shù)點就是:把DOM樹映射會原生的控件樹。框架會把DOM樹自動的轉(zhuǎn)化為不同平臺的控件樹,其最終還是調(diào)用的原生API來繪制。

混合開發(fā)的優(yōu)點:

  • 社區(qū)龐大,開發(fā)成本低;
  • 使用前端技術(shù)框架,原生渲染,性能尚可;
  • 支持熱更新;(目前iOS端有風(fēng)險,熱更新應(yīng)用禁止上架App Store)。

混合開發(fā)的缺點:

  • 因為要和原生通信,難以勝任復(fù)雜的繪制和動畫工作;
  • JS為腳本語言,解釋執(zhí)行,性能和原生開發(fā)編譯后運行,有一定差距;
  • 調(diào)用系統(tǒng)硬件功能非常麻煩。

/ Flutter /

鑒于Hybrid的一些缺點,谷歌開源了Flutter框架。Flutter是Google發(fā)布的一個用于創(chuàng)建跨平臺、高性能移動應(yīng)用的框架。Flutter使用自繪引擎,使用自身的布局、繪制系統(tǒng)。

Flutter的優(yōu)點:

  • 生態(tài)活躍,目前GitHub的Flutter項目Star高達(dá)84.5K;
  • 大廠支持;
  • 采用Dart語言開發(fā)(后面會講一些Dart的特點,及Flutter中需要知道的Dart知識);
  • 開發(fā)效率高,Flutter同時支持JIT(解釋執(zhí)行,開發(fā)模式下)和AOT(編譯后執(zhí)行,生產(chǎn)環(huán)境)兩種運行模式。

盜用一個表格,三種開發(fā)方式的高下立判:

上表中開發(fā)語言主要指UI的開發(fā)語言。而開發(fā)效率,是指整個開發(fā)周期的效率,包括編碼時間、調(diào)試時間、以及排錯、兼容時間。動態(tài)化主要指是否支持動態(tài)下發(fā)代碼和是否支持熱更新。值得注意的是Flutter的Release包默認(rèn)是使用Dart AOT模式編譯的,所以不支持動態(tài)化,但Dart還有JIT或snapshot運行方式,這些模式都是支持動態(tài)化的。官方文檔中有一張F(tuán)lutter框架圖示,我覺得非常清晰的描述了整個框架的層級:

從上到下依次為:

  • Flutter Framework是純Dart語言實現(xiàn)的SDK,是開發(fā)中用到的基礎(chǔ)庫,一般只接觸到此層級,封裝了很多常用的控件和動畫效果(類似于前端的各種元素標(biāo)簽,甚至連布局系統(tǒng)都參考的Flex布局);
  • Flutter Engine是一個純C++實現(xiàn)的SDK,其中包括Skia引擎(二維繪圖引擎,Android底層繪圖引擎也是這玩意兒),Dart運行時,文字排版引擎等;調(diào)用Flutter Framewrok中的控件時,最終會走到Engine層,實現(xiàn)真正的繪制邏輯(該層已經(jīng)是框架底層實現(xiàn),除非PR,否則接觸不到)

從圖可以看出Flutter框架有良好的分層設(shè)計,實際開發(fā)中只用關(guān)注上層框架,大大節(jié)省開發(fā)時間。該部分只需要對Flutter有個大致認(rèn)識即可。

開發(fā)系統(tǒng)與工具選擇

工欲善其事必先利其器。Flutter同時支持Windows和Mac OS,具體差別如下:

  • Windows價格親民,但是無法開發(fā)iOS
  • Mac價格較高,能同時開發(fā)iOS和Android

經(jīng)濟(jì)條件允許的情況下推薦使用Mac進(jìn)行開發(fā)。操作系統(tǒng)定下來后,還需要選擇一款開發(fā)工具,這里直接推薦使用Andorid Studio,優(yōu)點如下:

  • Android開發(fā)利器;
  • Google官方推薦的Flutter開發(fā)IDE;調(diào)試,開發(fā)支持最全。

環(huán)境搭建

由于Flutter會同時構(gòu)建Android和IOS兩個平臺的發(fā)布包,所以Flutter同時依賴Android SDK和iOS SDK,在安裝Flutter時也需要安裝相應(yīng)平臺的構(gòu)建工具和SDK。

/ Win下Flutter開發(fā)環(huán)境配置 /

由于Win下不支持iOS應(yīng)用開發(fā),所以Win下只需要配置好Android和Flutter的開發(fā)環(huán)境即可:

配置IDE

一共分為兩個步驟:

  • 安裝Android Studio(Android Studio國內(nèi)下載鏈接);
  • 為Android Studio安裝Flutter和Dart插件。

首先通過上面鏈接進(jìn)入官網(wǎng)進(jìn)行下載,安裝過程為下一步安裝法,無腦下一步即可:

注意:Android開發(fā)需要配置JDK,但是Android Studio已經(jīng)內(nèi)置了JDK,所以額外安裝JDK是可選的(如果需要安裝,強(qiáng)烈建議安裝JDK8.0,JDK11刪除了一些Jar包,如果全局配置了JAVA_HOME,版本為11的情況下,可能導(dǎo)致Flutter運行出現(xiàn)一些不必要的錯誤)。

安裝Flutter和Dart插件

打開Android Studio,打開File->Settings->Plugins,如下圖所示



安裝完成后,需要重新啟動Android Studio。開發(fā)工具安裝完畢后,需要配置Flutter開發(fā)環(huán)境。
Flutter開發(fā)環(huán)境的配置依賴以下工具:

  • Windows Power Shell(win10內(nèi)置,非win10可通過此鏈接進(jìn)行下載)
  • git(git for win下載地址)

設(shè)置鏡像

由于國內(nèi)訪問Flutter可能會受到限制,Flutter官方為中國開發(fā)者搭建了臨時鏡像,大家可以將如下環(huán)境變量加入到系統(tǒng)環(huán)境變量中:
PUB_HOSTED_URL=https://pub.flutter-io.cn

FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

win下具體配置步驟:右鍵我的電腦->選擇屬性->選擇高級系統(tǒng)設(shè)置->選擇環(huán)境變量,如下圖所示:

1、點擊高級系統(tǒng)設(shè)置

2、點擊環(huán)境變量

3、新建系統(tǒng)變量

4、添加此變量

5、另一個變量也添加上

添加完畢后,記得全部點確定,方可生效。

設(shè)置Android SDK的環(huán)境變量

當(dāng)我們安裝完Android Studio后,Android SDK已經(jīng)隨著AS一起安裝了,可以通過如下步驟查看Android SDK的路徑:打開Android Studio->File->Setting,搜索SDK,點擊后就可查看SDK的安裝路徑,如果沒有也可以重新進(jìn)行安裝,如圖所示:

和設(shè)置鏡像的環(huán)境變量一樣,設(shè)置如下變量到系統(tǒng)變量中:
ANDROID_HOME=${Andorid SDK路徑}

如下圖所示:

另外需要額外添加Andorid SDK模擬器路徑以及工具路徑到Path環(huán)境變量中:

配置完成后,重啟電腦,然后打開cmd,輸入adb,如果打印以下信息,說明Android的環(huán)境變量配置成功:

如果運行出錯,請仔細(xì)核對Android SDK路徑是否配置錯誤。

安裝Flutter,配置Flutter環(huán)境變量

在Win下Flutter下載進(jìn)行Flutter的安裝,本文檔使用的是1.9版本,更低版本不保證能穩(wěn)定運行:

下載完成后,將安裝包zip解壓到你想安裝Flutter SDK的路徑,路徑層級不要過深,也不要放在需要高用戶權(quán)限的路徑下,推薦放在系統(tǒng)盤根目錄下。在Flutter安裝目錄的flutter文件下找到flutter_console.bat,雙擊運行并啟動flutter命令行,接下來,你就可以在Flutter命令行運行flutter命令了。

每次通過啟動文件來啟動非常繁瑣,可以吧flutter命令配置在系統(tǒng)環(huán)境變量Path下,如圖:

配置完成后,重啟電腦,在cmd中輸入flutter,運行如下信息,則flutter環(huán)境變量配置成功:

以上就是Android和Flutter環(huán)境配置的全部內(nèi)容,接下來創(chuàng)建第一個Flutter項目。

通過Android Studio創(chuàng)建第一個Flutter項目

如圖操作即可:




點擊Finish后就創(chuàng)建了第一個Flutter項目。

Flutter不同版本的特點

Flutter SDK有多個分支,如beta、dev、master、stable,其中stable分支為穩(wěn)定分支(日后有新的穩(wěn)定版本發(fā)布后可能也會有新的穩(wěn)定分支,如1.0.0),dev和master為開發(fā)分支,安裝flutter后,你可以運行flutter channel查看所有分支,帶"*"號的分支即你本地的Flutter SDK 跟蹤的分支,要切換分支,可以使用flutter channel beta或flutter channel master,Flutter官方建議跟蹤穩(wěn)定分支,但你也可以跟蹤master分支,這樣可以查看最新的變化,但這樣穩(wěn)定性要低的多。

作者 / Swift

四年軟件開發(fā)經(jīng)驗,熟悉Objective-C/Swift/JavaScript/Java,對iOS開發(fā)有深入研究,目前從事前端和Flutter工作,歡迎QQ交流805433115。

/ 團(tuán)隊介紹 /

我們是一家以信息數(shù)據(jù)研發(fā)和互聯(lián)網(wǎng)應(yīng)用研發(fā)為主的互聯(lián)網(wǎng)公司。我們的核心服務(wù)目標(biāo),是助力企業(yè)級主體使用互聯(lián)網(wǎng)信息化模式改善企業(yè)效率和互聯(lián)網(wǎng)上云方式企業(yè)全面數(shù)據(jù)化,并在小程序以及PC端應(yīng)用開發(fā)和融媒體運營兩個核心需求上,提供從策劃、運營、開發(fā)、執(zhí)行、反饋全部整體解決方案。

總結(jié)

以上是生活随笔為你收集整理的【2020年APP-Flutter混合开发之路】01 - Flutter的初步思考和开发部署的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。