4

运行sdkmanager --update 报错的解决方案

 2 years ago
source link: https://shingle.me/post/%E8%BF%90%E8%A1%8Csdkmanager-update-%E6%8A%A5%E9%94%99%E7%9A%84%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

运行sdkmanager --update 报错的解决方案

2018-06-21 16:02:25 约 399 字 预计阅读 1 分钟 1505 次阅读

应该是没有兼容 java8以上的版本导致的问题

今天在安装flutter的时候,运行flutter doctor -v 检查有没有组件缺失的情况时,发现有一个错误提示:

✗ Android license status unknown

虽然不妨碍使用, 不过作为强迫症不能忍受

网上查看文档发现, 可以运行flutter doctor --android-licenses ,然后会给出具体的错误和建议, 运行结果是

A newer version of the Android SDK is required. To update, run:
/Users/shingle/Library/Android/sdk/tools/bin/sdkmanager --update

然后继续运行上面的建议, 报了一个错:

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:582)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
	... 5 more

好吧, 先忍一忍, 继续google查找相关问题,终于在一个 issue 讨论中找到了一个终极解决方案. issue 地址在这里

编辑你的sdkmanager脚本文件,替换第31行为如下的内容

# 原内容:
# DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME"'
# 替换内容:
DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME" -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'

然后再次运行一下sdkmanager --update ,等待更新完成之后, 再次运行flutter doctor --android-licenses , 输入 y接受协议即可.

Warning: File /Users/shingle/.android/repositories.cfg could not be loaded.
4 of 6 SDK package licenses not accepted. 100% Computing updates...
Review licenses that have not been accepted (y/N)? y

Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK