- 原文部落格地址: Flutter的安裝和配置
Flutter
是谷歌的移動UI
框架,可以快速在iOS
和Android
上構建高質量的原生使用者介面, 並且是未來新作業系統Fuchsia的預設開發套件- 在全世界,
Flutter
正在被越來越多的開發者和組織使用,並且Flutter
是完全免費、開源的—-Flutter中文網 Flutter
同時支援Windows
、Linux
和MacOS
作業系統作為開發環境,並且在Android Studio
和VS Code
兩個IDE
上都提供了全功能的支援Flutter
以Dart
語言為開發語言(之後的文章會介紹)
跨平臺框架
- 在
Flutter
誕生之前,已經有許多跨平臺UI
框架的方案,比如基於WebView
的Cordova
、AppCan
等,還有使用HTML+JavaScript
渲染成原生控制元件的React Native
、Weex
等(雖然我只用過React Native
) - 基於
WebView
的框架- 優點很明顯,它們幾乎可以完全繼承現代
Web
開發的所有成果(豐富得多的控制元件庫、滿足各種需求的頁面框架、完全的動態化、自動化測試工具等等),當然也包括Web
開發人員,不需要太多的學習和遷移成本就可以開發一個App
- 缺點也很致命, 在對體驗和效能有較高要求的情況下,
WebView
的渲染效率和JavaScript
執行效能太差。再加上Android
各個系統版本和裝置廠商的定製,很難保證所在所有裝置上都能提供一致的體驗
- 優點很明顯,它們幾乎可以完全繼承現代
React Native
一類的框架- 將最終渲染工作交還給了系統,雖然同樣使用類
HTML+JS
的UI
構建邏輯,但是最終會生成對應的自定義原生控制元件,以充分利用原生控制元件相對於WebView
的較高的繪製效率 - 同時這種策略也將框架本身和
App
開發者綁在了系統的控制元件上,不僅框架本身需要處理大量平臺相關的邏輯,隨著系統版本變化和API
的變化,開發者可能也需要處理不同平臺的差異,甚至有些特性只能在部分平臺上實現,這樣框架的跨平臺特性就會大打折扣
- 將最終渲染工作交還給了系統,雖然同樣使用類
Flutter
框架Flutter
則開闢了一種全新的思路,從頭到尾重寫一套跨平臺的UI
框架,包括UI
控制元件、渲染邏輯甚至開發語言Flutter
使用自己的高效能渲染引擎來繪製widget
,Flutter
使用C
、C ++
、Dart
和Skia
(2D渲染引擎)構建- 在
iOS
上,Flutter
引擎的C/C ++
程式碼使用LLVM
編譯,任何Dart
程式碼都是AOT
編譯為原生程式碼的,Flutter
應用程式使用本機指令集執行(不涉及直譯器) - 而在
Android
下,Flutter
引擎的C/C ++
程式碼是用Android
的NDK
編譯的,任何Dart
程式碼都是AOT
編譯成原生程式碼的,Flutter
應用程式依然使用本機指令集執行(不涉及直譯器)
Flutter
安裝
- 可參考官網的安裝Flutter, 支援
Windows
、Linux
和MacOS
作業系統 - 我使用的系統是
MacOS
作業系統
系統要求
要安裝並執行Flutter
,您的開發環境必須滿足以下最低要求:
- 作業系統: macOS (64-bit)
- 磁碟空間: 700 MB (不包括
Xcode
或Android Studio
的磁碟空間). - 工具:
Flutter
依賴下面這些命令列工具.bash
,mkdir
,rm
,git
,curl
,unzip
,which
獲取Flutter SDK
下載SDK
- 去
Flutter
官網下載其最新可用的安裝包,轉到下載頁 - 注意,
Flutter
的渠道版本會不停變動,請以Flutter
官網為準 - 另外,在中國大陸地區,要想正常獲取安裝包列表或下載安裝包,可能需要翻牆,讀者也可以去
Flutter github
專案下去下載安裝包,轉到下載頁
環境配置
- 解壓SDK並把解壓好的檔案全部放在你想要放置的位置, 建議和其他開發語言的SDK放置在一起, 比如
~/Library/Flutter
- 為了方便後續使用,需要將專案根目錄下
bin
路徑加入環境變數PATH
中- 編輯器開啟
~/.bash_profile
檔案, 新增如下
- 編輯器開啟
# Flutter 相關配置
# xxx是你自己的Flutter資料夾路徑
export PATH=/xxx/Flutter/bin:$PATH
複製程式碼
由於在國內訪問Flutter
有時可能會受到限制,Flutter
官方為中國開發者搭建了臨時映象,大家可以將如下環境變數加入到使用者環境變數中:
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
複製程式碼
注意, 此映象為臨時映象,並不能保證一直可用,讀者可以參考詳情請參考 Using Flutter in China 以獲得有關映象伺服器的最新動態
儲存檔案, 並更新當前配置
# 執行命令
source ~/.bash_profile
複製程式碼
驗證flutter/bin
目錄是否在你的PATH
中
# 執行下面命令
echo $PATH
複製程式碼
如果安裝成功, 會輸出類似/xxx/Flutter/bin
的路徑
安裝開發工具
安裝Android Studio
- 下載並安裝Android Studio
- 啟動
Android Studio
,然後執行Android Studio
安裝嚮導, 這將安裝最新的Android SDK
,Android SDK
平臺工具和Android SDK
構建工具, 這是Flutter
開發Android
應用時所必備的 - 安裝完成後, 配置一個需要的
Android
模擬器
安裝Xcode
在App Store
搜尋最新版本Xcode
下載安裝即可
VSCode
開發IDE
,直接去官網下載安裝即可
環境配置檢測
通過flutter doctor
命令來執行Flutter
的安裝程式了,經過一段時間的下載和安裝,Flutter
會輸出安裝結果(時間可能會比較久)
$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel beta, v0.5.1, on Mac OS X 10.13.5 17F77, locale en-NZ)
[!] Android toolchain - develop for Android devices (Android SDK 26.0.2)
! Some Android licenses not accepted. To resolve this, run: flutter doctor --android-licenses
[!] iOS toolchain - develop for iOS devices (Xcode 9.4.1)
✗ Missing Xcode dependency: Python module "six".
Install via `pip install six` or `sudo easy_install six`.
✗ libimobiledevice and ideviceinstaller are not installed. To install, run:
brew install --HEAD libimobiledevice
brew install ideviceinstaller
✗ ios-deploy not installed. To install:
brew install ios-deploy
✗ CocoaPods not installed.
CocoaPods is used to retrieve the iOS platform side`s plugin code that responds to your plugin usage on the Dart side.
Without resolving iOS dependencies with CocoaPods, plugins will not work on iOS.
For more info, see https://flutter.io/platform-plugins
To install:
brew install cocoapods
pod setup
[✓] Android Studio
✗ Flutter plugin not installed; this adds Flutter specific functionality.
✗ Dart plugin not installed; this adds Dart specific functionality.
[✓] Android Studio (version 3.0)
✗ Flutter plugin not installed; this adds Flutter specific functionality.
✗ Dart plugin not installed; this adds Dart specific functionality.
[!] IntelliJ IDEA Ultimate Edition (version 2017.1.1)
✗ Flutter plugin not installed; this adds Flutter specific functionality.
✗ Dart plugin not installed; this adds Dart specific functionality.
[!] VS Code (version 1.24.1)
[!] Connected devices
! No devices available
! Doctor found issues in 5 categories.
複製程式碼
- 其中前面有
[✓]
標識的是已經安裝成功的 [!]
標識是需要安裝或者更新的- 下面介紹需要安裝的編輯器及其配置
開發工具
執行flutter doctor
命令可看到相關資訊
Flutter
的版本和資訊Flutter
執行所需的Android
工具鏈,有些許可證沒有接受,輸入提示命令,輸入y
確認Flutter
執行所需的iOS
工具鏈不滿足AS
、IDEA
的Flutter
外掛沒有安裝,所以需要安裝,因此需要配置AS
或IDEA
- 有可用的連線裝置
Android Studio
- 開啟外掛選擇項
Preferences > Plugins
- 選擇
Browse repositories
,搜尋Flutter
外掛並安裝(同時自動安裝Dart
外掛) - 外掛安裝完成後, 重啟
Android Studio
後外掛生效
這時候在命令列執行flutter doctor
,可以看到Android Studio
已經好了
[✓] Android Studio (version 3.2)
複製程式碼
iOS配置
- 在進行
iOS
配置之前, 首先需要安裝CocoaPods
, 可自行百度 - 安裝
CocoaPods
後, 在執行flutter doctor
命令, 可能會出現如下問題 - 此時在終端中依次執行出現的命令即可
[!] iOS toolchain - develop for iOS devices
# 可能出現的命令, 若出現, 依次執行出現的命令即可, 未出現的可不執行
$ brew install --HEAD usbmuxd
$ brew link usbmuxd
$ brew install --HEAD libimobiledevice
$ brew install ideviceinstaller ios-deploy cocoapods
$ pod setup
複製程式碼
這時候在命令列執行flutter doctor
,可以看到iOS
相關配置也好了
VSCode外掛
在擴充套件中搜尋Flutter
和Dart
安裝後, 過載即可
配置完成
此刻, 在執行flutter doctor
命令, 應該就沒有問題了
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.0.0, on Mac OS X 10.14.3 18D109, locale
zh-Hans-CN)
[✓] Android toolchain - develop for Android devices (Android SDK 28.0.3)
[✓] iOS toolchain - develop for iOS devices (Xcode 10.1)
[✓] Android Studio (version 3.0)
[✓] VS Code (version 1.30.2)
[✓] Connected device (1 available)
• No issues found!
複製程式碼
建立Flutter應用
CSCode建立
中文版: vscode
-> 檢視 -> 命令皮膚 -> Flutter: new project
-> 輸入專案名稱
注意: 專案名稱不支援大寫字母
Android Studio建立
開啟Android studio
就可以看見Flutter
工程模板如下
命令建立
flutter create helloflutter
複製程式碼
這裡建立了一個名為helloflutter
的Dart package
- 引數介紹
- 要建立外掛包,請使用
--template=plugin
引數執行flutter create
- 使用
--org
選項指定您的組織,並使用反向域名錶示法。該值用於生成的Android
和iOS
程式碼中的各種包和包識別符號。
flutter create --org com.example --template=plugin helloflutter
複製程式碼
- 預設情況下,外掛專案針對
iOS
程式碼使用Objective-C
,Android
程式碼使用Java
。 - 如果您更喜歡
Swift
或Kotlin
,則可以使用-i
或-a
為iOS
或Android
指定語言。例如:
flutter create --template=plugin -i swift -a kotlin helloflutter
複製程式碼
參考文章
初識
Flutter
, 總結的可能也不準確, 不足之處還望海涵, 後續會繼續優化相關文章