Принятие лицензий Android SDK на MacOS с OpenJDK 11

Я только что установил Android Studio и импортировал проект. Однако я не могу собрать проект, потому что я, видимо, не доказал свою преданность Всемогущему Google и не принял соответствующие лицензии.

> 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

После нескольких молений на всезнающие поиски в Google я обнаружил, что сценарий оболочки 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

Я нашел несколько людей с такой же проблемой в Интернете.

Самое популярное решение из этого вопроса предлагает найти определенную строку в сценарии оболочки sdkmanager и добавить -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. Другой ответ, здесь, предполагает следующее.

  1. Вручную изменить скрипт sdkmanager
  2. Переход на более старую версию Java, совместимую с изменениями, сделанными на шаге 1.
  3. Запустите сценарий оболочки и примите лицензии
  4. Обновите до текущей версии Java
  5. Наконец, скомпилируйте проект

Это кажется излишним, чтобы иметь возможность скомпилировать приложение для Android на моем Mac, но я готов попробовать. Однако я не могу загрузить Java 8 по предоставленной ссылке поскольку для этого требуется учетная запись оракула, а я не могу ее создать...

Кто-нибудь знает менее сложный способ впервые настроить и скомпилировать проект Android Studio на Mac с Java 11 в 2019 году?


person Increasingly Idiotic    schedule 19.09.2019    source источник


Ответы (2)


Я знаю, что это не идеальный ответ, но столкнувшись с этим буквально сегодня, единственный способ, который я нашел, - это понизить OpenJDK до 8.

Использование доморощенного бочки от acceptopenjdk сделало это довольно простым, и sdkmanager теперь просто работает(tm)

person silvervest    schedule 20.09.2019

Я столкнулся с той же проблемой. Похоже, вы используете устаревший сценарий принятия лицензии, который зависит от OpenJDK 8, вероятно, расположенный по адресу ~/Android/Sdk/tools/bin/sdkmanager, если вы используете Linux, как я.

Лучшей альтернативой переключению версий Java (imo) является установка новых инструментов командной строки Android Studio через Android Studio. Перейдите в поиск -> sdk manager -> sdk tools и опция Android SDK Command-line Tools (последняя) не должна быть отмечена галочкой (хотя на моем скриншоте она есть).

введите здесь описание изображения

Отметьте его, нажмите «Применить», и Android Studio проведет вас через установку новых инструментов cli в ~/Android/Sdk/cmdline-tools/.

Теперь просто ~/Android/Sdk/cmdline-tools/latest/bin/sdkmanager --licenses.

person Louka Ewington-Pitsos    schedule 19.01.2021