前言
經(jīng)過昨天環(huán)境的搭建,目前我可以在iOS模擬器上運(yùn)行flutter項(xiàng)目,但是作為強(qiáng)迫癥,我想把安卓的環(huán)境也配置好,能夠在安卓模擬器上運(yùn)行flutter項(xiàng)目.詳情請(qǐng)看這一篇
)記錄.
Android Studio, Android SDK以及安卓平臺(tái)構(gòu)建工具的下載安裝就不做介紹了(可以參考這里
),只說一下我選擇的版本:
Android Studio(3.6.0)
Android SDK(10.0)
JDK(13.0.2)
經(jīng)過上述準(zhǔn)備以及環(huán)境變量的配置,現(xiàn)在執(zhí)行flutter doctor出現(xiàn)Android license status unknown.問題.
經(jīng)過查閱資料以及自己的理解終于解決了改問題.
注: 該資料解決Android license status unknown.問題應(yīng)該是windows環(huán)境,與Mac環(huán)境存在一點(diǎn)出入,而且相關(guān)需要下載的資源也已經(jīng)不存在.
一、 成果


二、 解決問題
出現(xiàn)Android license status unknown.問題后,flutter doctor推薦的解決方式:
flutter doctor --android-licenses
但是在執(zhí)行這一句以后,會(huì)讓先執(zhí)行下面一句:
/Users/sj/Android/SDK/tools/bin/sdkmanager --update (路勁可能存在差異,這是我電腦的路徑)
執(zhí)行以后,到這來問題來了,出現(xiàn)錯(cuò)誤:
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
網(wǎng)上那些教程都是建議把Java版本降到Java8的,我不喜歡,我就要用Java13,寫web api用var爽!
很明顯就是Java9及更高版本才會(huì)出現(xiàn)這個(gè)問題,因?yàn)镴ava9之后干掉了一些庫,如果寫過Springcloud的同學(xué)應(yīng)該會(huì)知道,需要添加jaxb相關(guān)依賴:
activation.jar
jaxb-impl.jar
jaxb-xjc.jar
jaxb-core.jar
jaxb-jxc.jar
jaxb-api.jar
istack-commons-runtime.jar
在AndroidSDK目錄的工具文件夾下面創(chuàng)建一個(gè)名為“ jaxb”的文件夾,將上面的jar包都下載到里,如圖:

提示:如果下載后的jar具有版本號(hào)可以將版本號(hào)刪除掉,如:activation-1.1.1.jar可以重命名為activation.jar
完成之后我們使用VS Code的文本編輯工具打開sdkmanager.bat文件進(jìn)行編輯,打開后,在大約66行那里我們會(huì)看到這樣的一行代碼:
CLASSPATH=$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:..
對(duì)應(yīng)的將其改為
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
保存后再次執(zhí)行:
/Users/sj/Android/SDK/tools/bin/sdkmanager --update (路勁可能存在差異,這是我電腦的路徑)

這樣就可以了,接下來我們?cè)賵?zhí)行
flutter doctor --android-licenses
然后按照提示不斷“ y”然后回車就好了

最后執(zhí)行 flutter doctor,問題已經(jīng)解決!
記錄一下我現(xiàn)在為flutter配置的環(huán)境變量,以備不時(shí)之需
export PATH=/Users/sj/app/flutter/bin:$PATH
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home
export ANDROID_HOME=/Users/sj/Android/SDK
export ANDROID_BUILD_PATH=${PATH}:${ANDROID_HOME}/tools
export ANDROID_PLATFORM_PATH=${PATH}:${ANDROID_HOME}/platform-tools
GRADLE_HOME=/Applications/Android\ Studio.app/Contents/gradle/gradle-5.6.4
export GRADLE_HOME
export PATH=$PATH:$GRADLE_HOME/bin