完美解決Mac上Android license status unknown.的問題

前言

經(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)不存在.

一、 成果

11582955391_.pic_hd.jpg
21582955428_.pic_hd.jpg

二、 解決問題

出現(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包都下載到里,如圖:

image.png

提示:如果下載后的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    (路勁可能存在差異,這是我電腦的路徑)
image.png

這樣就可以了,接下來我們?cè)賵?zhí)行

flutter doctor --android-licenses

然后按照提示不斷“ y”然后回車就好了


image.png

最后執(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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容