首页 > 解决方案 > 让 Android sdkmanager 与 Java 11 一起运行

问题描述

我在sdkmanager使用 Java 11 运行 Android 时遇到问题(不是工作室,只有 SDK 工具)。我不想安装 JDK 8 或类似的东西。sdkmanager有没有办法使用 JDK 11为 Android 解决这个问题?

我已经完成了这个答案,它没有为 java 11 提供命令行修复。还有其他可能的解决方法吗?

标签: androidjava-11

解决方案


更新:正如另一个答案中所解释的,新命令行工具中的 sdkmanager 支持 JDK 11+。旧的 sdkmanager 多年未收到更新,因此不需要此解决方法。检查@dmertins 答案以获取链接和更多详细信息。


如果有人正在寻找 Java 11 上的 Linux 修复程序。我在之前的答案之上构建了这个

cd Android/tools
mkdir jaxb_lib
wget https://repo1.maven.org/maven2/javax/activation/activation/1.1.1/activation-1.1.1.jar -O jaxb_lib/activation.jar
wget https://repo1.maven.org/maven2/com/sun/xml/bind/jaxb-impl/2.3.3/jaxb-impl-2.3.3.jar -O jaxb_lib/jaxb-impl.jar
wget https://repo1.maven.org/maven2/com/sun/istack/istack-commons-runtime/3.0.11/istack-commons-runtime-3.0.11.jar -O jaxb_lib/istack-commons-runtime.jar
wget https://repo1.maven.org/maven2/org/glassfish/jaxb/jaxb-xjc/2.3.3/jaxb-xjc-2.3.3.jar -O jaxb_lib/jaxb-xjc.jar
wget https://repo1.maven.org/maven2/org/glassfish/jaxb/jaxb-core/2.3.0.1/jaxb-core-2.3.0.1.jar -O jaxb_lib/jaxb-core.jar
wget https://repo1.maven.org/maven2/org/glassfish/jaxb/jaxb-jxc/2.3.3/jaxb-jxc-2.3.3.jar -O jaxb_lib/jaxb-jxc.jar
wget https://repo1.maven.org/maven2/javax/xml/bind/jaxb-api/2.3.1/jaxb-api-2.3.1.jar -O jaxb_lib/jaxb-api.jar

下载完成后(确保所有文件都下载正常),您必须在 tools/bin 目录中编辑 sdkmanager 和 avdmanager 脚本。您可以手动或自动执行此操作。

来自 Simon Ruggier 的回答(除非您使用 gnu-sed,否则在 mac 上不起作用):

sed -ie 's%^CLASSPATH=.*%\0:$APP_HOME/jaxb_lib/*%' bin/sdkmanager bin/avdmanager

或者手动,向下滚动到 CLASSPATH 变量,然后添加我们刚刚下载的新 jar,如下所示:

CLASSPATH=$APP_HOME/jaxb_lib/activation.jar:$APP_HOME/jaxb_lib/jaxb-impl.jar:$APP_HOME/jaxb_lib/jaxb-xjc.jar:$APP_HOME/jaxb_lib/jaxb-core.jar:$APP_HOME/jaxb_lib/jaxb-jxc.jar:$APP_HOME/jaxb_lib/jaxb-api.jar:<etc etc...DO NOT REMOVE THE OTHER JARS!...>

推荐阅读