java - 在带有 OpenJDK 11 的 MacOS 上接受 Android SDK 许可证

标签 java android macos 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

在向无所不知的谷歌搜索祈祷后,我发现了一个 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

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

最流行的解决方案,来自 this问题,建议在 sdkmanager 中查找特定行shell 脚本并添加 -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee .这会导致以下错误。
Error occurred during initialization of boot layer
java.lang.module.FindException: Module java.se.ee not found

经过更多搜索和阅读其他答案后,上述更改似乎不适用于更新的 Java 版本。另一个答案,here ,建议如下。
  • 手动修改sdkmanager脚本
  • 降级到与步骤 1 中所做的修改兼容的旧版 Java
  • 运行 shell 脚本并接受许可
  • 升级回 Java 的当前版本
  • 最后编译项目

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

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

    最佳答案

    我遇到了同样的问题。看起来您正在使用依赖于 OpenJDK 8 的过时许可接受脚本,可能位于 ~/Android/Sdk/tools/bin/sdkmanager如果你像我一样使用 linux。
    切换 Java 版本 (imo) 的更好选择是通过 android studio 安装新的 android studio 命令行工具。转到搜索-> sdk 管理器-> sdk 工具,并且不应勾选 Android SDK 命令行工具(最新)选项(在我的屏幕截图中是这样)。
    enter image description here
    勾选它,点击应用,android studio 将引导您在 ~/Android/Sdk/cmdline-tools/ 中安装新的 cli 工具.
    现在只需 ~/Android/Sdk/cmdline-tools/latest/bin/sdkmanager --licenses .

    关于java - 在带有 OpenJDK 11 的 MacOS 上接受 Android SDK 许可证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58016001/

    相关文章:

    java - 运算符(operator)间隔

    java - 具有多个文件附加器的 Log4j2 json 配置

    java - 获取 Google Play 应用内订阅的到期日期

    java - Spark : Java API filter() shows nothing, 结果与 Spark-shell 不同

    android - 我能否使用 React Native 框架在 Mountain Lion 中编写/发布 iOS 和 Android 应用程序?

    macos - 在源列表 NSTableView 中禁用 NSVisualEffectView

    android - 即使音量处于最大状态,服务也会降低音量

    java - 是否有使用播客应用程序订阅提要的标准方法?

    java - Android camera2 连拍速度太慢

    swift - macOS 中 NSUserNotification 和 UNUserNotification 有什么区别?