Flutter的環境配置以及一些常見問題


flutter & AndroidStudio

flutter的下載與配置

flutter是Google推出的基於Dart語言開發的跨平台開源UI框架,能夠支持安卓與iOS。

flutter框架的下載地址為:

若在上述網址中無法順利下載,也可以去flutter的github下載,注意,github上flutter包含不穩定的測試版,目前flutter-1.17.0-stable為最近的穩定版。

在下載后,將zip壓縮文件解壓至你希望的flutter安裝路徑即可,在這里,筆者的解壓路徑為D:\flutter。

在解壓后,需要配置一些環境變量,在用戶變量中新增:

FLUTTER_STORAGE_BASE_URL https://storage.flutter-io.cn
PUB_HOSTED_URL https://pub.flutter-io.cn

在系統環境變量加入你的flutter的bin目錄路徑。

這是因為調用該框架時可能需要進行下載,這兩個網址是flutter的國內鏡像,鏡像網址可能會更新,具體請參考這里

在完成上述步驟后,找到flutter路徑下的flutter_console.bat,運行並鍵入命令:

flutter doctor

第一次使用可能會耗時較長。此時可能會部分報錯,請先忽略並進入接下來Android相關配置。

AndroidStudio的下載與配置

點擊這里根據所需版本進行下載,按照指引進行安裝即可。

完成后再使用flutter doctor命令(在cmd即可)。

若所有配置完全正確,則該命令顯示應該如下:

Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, v1.17.0, on Microsoft Windows [Version 10.0.17763.1217], locale zh-CN)

[√] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
[√] Android Studio (version 3.6)
[√] IntelliJ IDEA Ultimate Edition (version 2019.3)
[!] Connected device
    ! No devices available

! Doctor found issues in 1 category.

第五個為!是因為還沒有連接安卓設備或者安卓虛擬機。

若:

  • 第一項報錯,建議重新下載flutter。

  • 第二項報錯,請鍵入下面命令:

    flutter doctor --android-licenses
    

    若有提問y/n,全選y即可。若失敗后,

    提示類似於:

    Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
            at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
            at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
            at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
            at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73)
            at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
    Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
            at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
            at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
            at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
            ... 5 more
    

    檢查你的電腦是否配置好了JDK,若沒有,百度Java環境配置,若有,請查看你的JDK版本,flutter支持JDK8,對於更高的版本,會因為部分文件的確實而報錯,有兩種解決辦法:

    • 降低JDK版本

    • 下載相關依賴文件,可以在這里下載,將此壓縮包中的文件解壓,將里面的文件復制至android的\sdk\tools\jaxb路徑中並去除版本號,若沒有則新建。

      再在android的\sdk\tools\bin路徑下找到sdkmanager.bat,在約66行處找到一行set ...,修改為

      set CLASSPATH=%APP_HOME%\jaxb\activation.jar;%APP_HOME%\jaxb\jaxb-impl.jar;%APP_HOME%\jaxb\jaxb-xjc.jar;%APP_HOME%\jaxb\jaxb-core.jar;%APP_HOME%\jaxb\jaxb-jxc.jar;%APP_HOME%\jaxb\jaxb-api.jar;%APP_HOME%\jaxb\istack-commons-runtime.jar;%APP_HOME%\lib\dvlib-26.0.0-dev.jar;%APP_HOME%\lib\jimfs-1.1.jar;%APP_HOME%\lib\jsr305-1.3.9.jar;%APP_HOME%\lib\repository-26.0.0-dev.jar;%APP_HOME%\lib\j2objc-annotations-1.1.jar;%APP_HOME%\lib\layoutlib-api-26.0.0-dev.jar;%APP_HOME%\lib\gson-2.3.jar;%APP_HOME%\lib\httpcore-4.2.5.jar;%APP_HOME%\lib\commons-logging-1.1.1.jar;%APP_HOME%\lib\commons-compress-1.12.jar;%APP_HOME%\lib\annotations-26.0.0-dev.jar;%APP_HOME%\lib\error_prone_annotations-2.0.18.jar;%APP_HOME%\lib\animal-sniffer-annotations-1.14.jar;%APP_HOME%\lib\httpclient-4.2.6.jar;%APP_HOME%\lib\commons-codec-1.6.jar;%APP_HOME%\lib\common-26.0.0-dev.jar;%APP_HOME%\lib\kxml2-2.3.0.jar;%APP_HOME%\lib\httpmime-4.1.jar;%APP_HOME%\lib\annotations-12.0.jar;%APP_HOME%\lib\sdklib-26.0.0-dev.jar;%APP_HOME%\lib\guava-22.0.jar
      
      

      修改后運行這個bat文件,在powershell中:

      sdkmanager.bat --update
      

      應該就會正常。

      之后再在cmd中flutter doctor --android-licenses,全選y即可。

  • 第三項報錯,是AndroidStudio的版本問題。

  • 第四項報錯,是IDEA的版本問題。IDEA可在下載一些插件后進行flutter編程。

之后,啟動AndroidStudio,第一次啟動時時是沒有項目的,找到configure-plugins,搜索dart和flutter,下載這兩個插件。重啟,應該就會有項目是flutter類型的新建選項。

選擇flutter類型新建項目,填入你的flutter的路徑,在新建時有數種flutter項目類型,選擇第一種即可,生成新項目。此時左側可以看見項目文件結構,在main.dart中將代碼替換為:

import 'package:flutter/material.dart';

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: 'Welcome to Flutter',
      home: new Scaffold(
        appBar: new AppBar(
          title: new Text('Welcome to Flutter'),
        ),
        body: new Center(
          child: new Text('Hello World'),
        ),
      ),
    );
  }
}

這是我們flutter的hello world。

這是是無法運行的,因為沒有相應的安卓設備或虛擬機,請在tool中找到AVD Manager,選擇一個虛擬機下載並啟用,即可運行代碼,相應的,你的Android虛擬機上可以看見一行hello world。

在這里,可能會遇到bug,請在cmd中打開/項目名/android路徑利用gradlew進行debug,這類命令可以得到詳細信息。另外一個奇怪的點是在AndroidStudio中直接運行代碼可能會出現奇怪的問題,但是在cmd中使用gradlew build則可能能夠正確運行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM