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則可能能夠正確運行。