Flutter的安裝和配置

RunTitan發表於2019-02-12
  • 原文部落格地址: Flutter的安裝和配置
  • Flutter是谷歌的移動UI框架,可以快速在iOSAndroid上構建高質量的原生使用者介面, 並且是未來新作業系統Fuchsia的預設開發套件
  • 在全世界,Flutter正在被越來越多的開發者和組織使用,並且Flutter是完全免費、開源的—-Flutter中文網
  • Flutter同時支援WindowsLinuxMacOS作業系統作為開發環境,並且在Android StudioVS Code兩個IDE上都提供了全功能的支援
  • FlutterDart語言為開發語言(之後的文章會介紹)

跨平臺框架

  • Flutter誕生之前,已經有許多跨平臺UI框架的方案,比如基於WebViewCordovaAppCan等,還有使用HTML+JavaScript渲染成原生控制元件的React NativeWeex等(雖然我只用過React Native)
  • 基於WebView的框架
    • 優點很明顯,它們幾乎可以完全繼承現代Web開發的所有成果(豐富得多的控制元件庫、滿足各種需求的頁面框架、完全的動態化、自動化測試工具等等),當然也包括Web開發人員,不需要太多的學習和遷移成本就可以開發一個App
    • 缺點也很致命, 在對體驗和效能有較高要求的情況下, WebView的渲染效率和JavaScript執行效能太差。再加上Android各個系統版本和裝置廠商的定製,很難保證所在所有裝置上都能提供一致的體驗
  • React Native一類的框架
    • 將最終渲染工作交還給了系統,雖然同樣使用類HTML+JSUI構建邏輯,但是最終會生成對應的自定義原生控制元件,以充分利用原生控制元件相對於WebView的較高的繪製效率
    • 同時這種策略也將框架本身和App開發者綁在了系統的控制元件上,不僅框架本身需要處理大量平臺相關的邏輯,隨著系統版本變化和API的變化,開發者可能也需要處理不同平臺的差異,甚至有些特性只能在部分平臺上實現,這樣框架的跨平臺特性就會大打折扣
  • Flutter框架
    • Flutter則開闢了一種全新的思路,從頭到尾重寫一套跨平臺的UI框架,包括UI控制元件、渲染邏輯甚至開發語言
    • Flutter使用自己的高效能渲染引擎來繪製widget, Flutter使用CC ++DartSkia(2D渲染引擎)構建
    • iOS上,Flutter引擎的C/C ++程式碼使用LLVM編譯,任何Dart程式碼都是AOT編譯為原生程式碼的,Flutter應用程式使用本機指令集執行(不涉及直譯器)
    • 而在Android下,Flutter引擎的C/C ++程式碼是用AndroidNDK編譯的,任何Dart程式碼都是AOT編譯成原生程式碼的,Flutter應用程式依然使用本機指令集執行(不涉及直譯器)

Flutter安裝

  • 可參考官網的安裝Flutter, 支援WindowsLinuxMacOS作業系統
  • 我使用的系統是MacOS作業系統

系統要求

要安裝並執行Flutter,您的開發環境必須滿足以下最低要求:

  • 作業系統: macOS (64-bit)
  • 磁碟空間: 700 MB (不包括XcodeAndroid Studio的磁碟空間).
  • 工具: Flutter依賴下面這些命令列工具.
    • bash, mkdir, rm, git, curl, unzip, which

獲取Flutter SDK

下載SDK

  • Flutter官網下載其最新可用的安裝包,轉到下載頁
  • 注意,Flutter的渠道版本會不停變動,請以Flutter官網為準
  • 另外,在中國大陸地區,要想正常獲取安裝包列表或下載安裝包,可能需要翻牆,讀者也可以去Flutter github專案下去下載安裝包,轉到下載頁
Flutter_SDK

環境配置

  • 解壓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 SDKAndroid 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工具鏈不滿足
  • ASIDEAFlutter外掛沒有安裝,所以需要安裝,因此需要配置ASIDEA
  • 有可用的連線裝置

Android Studio

  • 開啟外掛選擇項Preferences > Plugins
  • 選擇Browse repositories,搜尋Flutter外掛並安裝(同時自動安裝Dart外掛)
  • 外掛安裝完成後, 重啟Android Studio後外掛生效
android_flutter

這時候在命令列執行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外掛

在擴充套件中搜尋FlutterDart安裝後, 過載即可

配置完成

此刻, 在執行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工程模板如下

android_create_flutte

命令建立

flutter create helloflutter
複製程式碼

這裡建立了一個名為helloflutterDart package

  • 引數介紹
  • 要建立外掛包,請使用--template=plugin引數執行flutter create
  • 使用--org選項指定您的組織,並使用反向域名錶示法。該值用於生成的AndroidiOS程式碼中的各種包和包識別符號。
flutter create --org com.example --template=plugin helloflutter
複製程式碼
  • 預設情況下,外掛專案針對iOS程式碼使用Objective-CAndroid程式碼使用Java
  • 如果您更喜歡SwiftKotlin,則可以使用-i-aiOSAndroid指定語言。例如:
flutter create --template=plugin -i swift -a kotlin helloflutter
複製程式碼

參考文章

初識Flutter, 總結的可能也不準確, 不足之處還望海涵, 後續會繼續優化相關文章


相關文章