使用 OpenJDK 11 在 MacOS 上接受 Android SDK 许可

Inc*_*tic 4 java macos android android-sdk-tools android-sdk-manager

我刚刚安装了 Android Studio 并导入了一个项目。但是,我无法构建该项目,因为我显然没有证明我对全能的谷歌接受了相关许可的奉献

> Failed to install the following Android SDK packages as some licences have not been accepted.
     build-tools;28.0.3 Android SDK Build-Tools 28.0.3
     platforms;android-28 Android SDK Platform 28
Run Code Online (Sandbox Code Playgroud)

向所有知道的谷歌搜索祈祷之后,我发现一个 shell 脚本sdkmanager安装在一个不相关的位置,必须运行才能接受许可证。克服了最初的信仰测试问题后,我运行脚本并遇到以下错误。

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 mor
Run Code Online (Sandbox Code Playgroud)

我在网上发现很多人有同样的问题。

来自这个问题的最流行的解决方案建议在sdkmanagershell 脚本中查找特定行并添加 -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee. 这会导致以下错误。

Error occurred during initialization of boot layer
java.lang.module.FindException: Module java.se.ee not found
Run Code Online (Sandbox Code Playgroud)

经过更多搜索和阅读其他答案后,似乎上述更改不适用于更新的 Java 版本。另一个答案,here,建议如下。

  1. 手动修改sdkmanager脚本
  2. 降级到与步骤 1 中所做的修改兼容的旧版 Java
  3. 运行 shell 脚本并接受许可证
  4. 升级回当前版本的 Java
  5. 最后编译项目

仅仅为了能够在我的 Mac 上编译一个 Android 应用程序,这似乎有点矫枉过正,但我​​愿意尝试。但是,我无法从提供的链接下载 Java 8,因为它需要一个 oracle 帐户,而且我无法创建一个...

有谁知道在 2019 年使用 Java 11 在 Mac 上首次设置和编译 Android Studio 项目的不太复杂的方法吗?

小智 5

我知道这不是完美的答案,但今天也遇到了这个问题,我找到的唯一方法是将 OpenJDK 降级到 8。

使用来自 Adoptopenjdk自制酒桶使它变得非常简单,而 sdkmanager 现在 Just Works(tm)


Lou*_*sos 5

我遇到了同样的问题。看起来您使用的是过时的许可证接受脚本,该脚本取决于 OpenJDK 8,~/Android/Sdk/tools/bin/sdkmanager如果您像我一样使用 linux ,则可能位于。

切换 Java 版本 (imo) 的更好替代方法是通过 android studio 安装新的 android studio 命令行工具。转到搜索 -> sdk 管理器 -> sdk 工具,不应勾选 Android SDK 命令行工具(最新)选项(尽管在我的屏幕截图中是这样)。

在此处输入图片说明

勾选它,点击应用,android studio 将引导您安装新的 cli 工具~/Android/Sdk/cmdline-tools/

现在简单~/Android/Sdk/cmdline-tools/latest/bin/sdkmanager --licenses