Автоматически принимать все лицензии SDK

441

Начиная с Gradle Android плагины 2.2-альфа4 :

Gradle попытается загрузить отсутствующие пакеты SDK, от которых зависит проект

Это удивительно круто и известно, что это проект JakeWharton .

Но, чтобы загрузить библиотеку SDK, вам необходимо: принять лицензионные соглашения или Gradle сообщает вам:

Вы не приняли лицензионные соглашения следующих компонентов SDK: [Android SDK Build-Tools 24, Android SDK Platform 24]. Перед созданием проекта вам необходимо принять лицензионные соглашения и завершить установку отсутствующих компонентов с помощью Android Studio SDK Manager. Кроме того, чтобы узнать, как переносить лицензионные соглашения с одной рабочей станции на другую, перейдите по адресу http://d.android.com/r/studio-ui/export-licenses.html.

И это проблема, потому что я хотел бы установить все зависимости SDK при выполнении gradle build.

Я ищу решение для автоматического принятия всех лицензий. Может быть, сценарий gradle? У тебя есть идеи ?

Спасибо!

[РЕДАКТИРОВАТЬ]

Решением было выполнить:

android update sdk --no-ui --filter build-tools-24.0.0,android-24,extra-android-m2repository

И установите его вручную, но это новая функция, предназначенная для Gradle.

[РЕДАКТИРОВАТЬ 2]

Лучшее решение - использовать sdkmananger:

yes | sdkmanager --licenses
nsvir
источник
12
Вы также можете открыть echo y |перед этой командой, чтобы автоматически принять лицензию. Полезно при работе с безголовым CI-боксом :)
Дори
3
Я должен был сделать, ~/.android/tools/android update sdk --no-ui --filter build-tools-25.0.0,android-25,extra-android-m2repositoryпотому что androidинструмент был локализован в моем доме
Jacksonkr
7
sdkmanager --licenses больше не работает. Я использовал --upgrade, игнорировал ошибки, и это решило проблемы с лицензией.
jcsubmit
6
Я использовал эту команду для скрипта сборки среды CI с небольшой настройкой. Я добавил --sdk_root = $ ANDROID_SDK_PATH. Проблема заключалась в том, что лицензии были приняты и не сохранены в корневой папке Android SDK. Окончательная команда: да | sdkmanager --licenses --sdk_root = $ ANDROID_SDK_PATH (без sudo)
adi9090
3
Убедитесь, что установлены $ANDROID_SDK_PATHв реальном корневом пути , где вы установили SDK (т.е. /opt/android-sdk), или просто положить путь непосредственно (то есть: yes | sdkmanager --licenses --sdk_root=/opt/android-sdk)
GMC

Ответы:

365

AndroidSDK может наконец принять лицензии.

yes | sdkmanager --licenses

РЕДАКТИРОВАТЬ:

как указано в комментариях @MoOx, на macOS вы можете сделать

yes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses

как указано в комментариях @pho, @mikebridge и @ Noitidart для Windows, вы можете сделать

cmd.exe ""/K"%LocalAppData%\Android\sdk\tools\bin\sdkmanager.bat --licenses"

не забудьте установить Java, прежде чем

nsvir
источник
4
В Вдовах я должен был перейти к «Выполнить», затем C:\Users\x1\AppData\Local\Android\sdk\tools\androidон открыл GUI, а затем установил «пропал» и в появившемся диалоговом окне щелкнул «Accept Liscenses».
Noitidart
8
Это не работает для Linux. В каталоге tools / bin или где-то еще нет файла sdkmanager. Можете ли вы помочь?
Мехмед Мерт
36
На macOS это можно сделатьyes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses
MoOx
5
Как я могу автоматически принимать лицензии от упаковщика Gradle?
Говард Своп
7
добавьте @Noitidart для пути, но он не сработал, мне пришлось запустить C: \ Users \ x1 \ AppData \ Local \ Android \ sdk \ tools \ bin \ sdkmanager --licenses из командной строки и нажать "y" "+ Войдите в подсказки
ГанешТ
177

Я столкнулся с этим при alpha5предварительном просмотре.

Джейк Уортон указал мне, что в настоящее время вы можете использовать

mkdir -p "$ANDROID_SDK/licenses"
echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"
echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_SDK/licenses/android-sdk-preview-license"

воссоздать текущую $ANDROID_HOME/licenseпапку на вашем компьютере. Это будет иметь тот же результат, что и процесс, описанный в ссылке об ошибке msg ( http://tools.android.com/tech-docs/new-build-system/license ).

Хэши - это sha1s текста лицензии, которые, я думаю, будут периодически обновляться, поэтому этот код будет работать только так долго :)

И установите его вручную, но это новая функция, предназначенная для Gradle.

Сначала я удивился, что это не сработало из коробки, даже когда я принял лицензии для названных компонентов через androidинструмент, но мне было указано, что это менеджер SDK внутри AS, который создает /licensesпапку.

Я предполагаю, что официальные инструменты не захотят пропустить этот шаг по юридическим причинам.

Перечитывая примечания к выпуску, он заявляет

Автоматическая загрузка SDK: Gradle попытается загрузить отсутствующие пакеты SDK, от которых зависит проект.

Это не означает, что это будет работать, если вы еще не установили инструменты Android и уже приняли последние лицензии.

РЕДАКТИРОВАТЬ: Сказав это, он все еще не работает на моей тестовой коробке gubuntu, пока я не свяжу SDK с AS. CI работает нормально, хотя - не уверен, в чем разница ...

Дори
источник
В функции sdkDownload есть небольшая ошибка, касающаяся некоторых компонентов, например, support-v4. Он будет обновлять компоненты , но Gradle не будет видеть обновление до следующего вызова. Один обходной путь, чтобы выполнить gradle дважды, один раз выбросить: зависимости gradle || true - code.google.com/p/android/issues/detail?id=212309
Джо Боубер,
6
Вы можете использовать mkdir -pвместо || true.
старше
Работает спасибо за этот глюк, приятно знать. Чтобы проверить, определен ли ваш путь SDK ожидаемым образом: echo $ ANDROID_SDK
попробуйте
В моей среде ANDROID_SDK не определен, но он работает с ANDROID_HOME
Дмитрий Л.
5
@stack_ved: Я просто добавил еще echo: echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> "${ANDROID_HOME}/licenses/android-sdk-license". Но я думаю, что ваша проблема скрывается где-то еще.
Пол
133

Для новейшей версии Android Studio (2.3) лучший способ обновить / принять все лицензии - запустить:

cd $ANDROID_HOME
tools/bin/sdkmanager --licenses

вам все равно может потребоваться скопировать файлы лицензий в другие места в зависимости от настроек.

bgies
источник
Это выглядит как лучший способ, и он работает на всех платформах, просто запуститеtools/bin/sdkmanager --licenses
jnv
Если у вас есть старый менеджер SDK - лицензии не будут работать. Необходимо скопировать папку с инструментами в другое место, затем использовать --sdk_root = и указать ее в своей папке SDK, тогда вы сможете обновить инструменты до более новой версии.
Мирек Михалак
можем ли мы как-то передать yesэту команду для автоматизированных систем сборки? У вас не всегда будет доступ к этим машинам через интерактивную консоль, поэтому yфизическое нажатие на клавиатуру не сработает.
void.pointer
Кто-нибудь может подсказать, пожалуйста, как реализовать это решение? Нужно добавить эту строку в build.sh?
stack_ved
1
это сработало для меня, но я должен был сделать cd $ANDROID_HOMEперед выполнением этой команды
Инус Саха
57

Для новой sdkmanagerутилиты:

yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;24.0.3"

Между дазами есть небольшая задержка, поэтому команда может зависнуть с отображением лицензии на некоторое время, но это не требует вмешательства человека.

А. Рейгер
источник
В моей установке debian9 у меня есть только sdkmanager.jar: android-sdk-linux / tools / lib / sdkmanager.jar и # java -jar /android-sdk-linux/tools/lib/sdkmanager.jar Ошибка: свойство каталога tools не установлен, пожалуйста, убедитесь, что вы выполняете Android
user3313834
1
Это основано на предположении, что вы загрузили инструменты SDK в виде архива из Google и распаковали их в $ ANDROID_HOME
A.
Это кажется самым up-to-dateответом. Кажется, --licensesбольше не существует. Примечание: чтобы увидеть список возможных версий, которые могут быть предоставлены:$ANDROID_HOME/tools/bin/sdkmanager --list
Marinos An
2
Спасибо за подсказку. Я закончил тем, что использовал yes | android-sdk-linux/tools/bin/sdkmanager --licenses || trueв своем CI.
iSWORD
эс | $ ANDROID_HOME / tools / bin / sdkmanager "build-tools; 28.0.3" -> изменение версии сработало для меня. Спасибо !
ишаб ачарья
43

Если вы используете Jenkins, вы можете использовать следующий скрипт bash в качестве первого шага в процессе сборки:

(while sleep 3; do echo "y"; done) | $ANDROID_HOME/tools/android update sdk -u

Это, конечно, установит ВСЕ доступные обновления, но сэкономит вам время, если вы сможете сэкономить место на диске. Сон состоит в том, чтобы избежать нарушения чтения в программе установки, так как «да» не работает должным образом в этом случае.

РЕДАКТИРОВАТЬ: Вам также необходимо добавить плагин «Установить предварительные условия проекта Android» на этапе сборки, чтобы получить правильный $ ANDROID_HOME, если вы используете встроенный менеджер SDK.

вороной
источник
Я добавляю вашу строку кода перед "cordova platform add android" в моей сборке jenkins, которая работает на Ubuntu, но все еще получает следующую ошибку: Ошибка сборки в 7s Ошибка: / var / lib / jenkins / workspace / qa_global_php / platform / android / gradlew : Команда не выполнена с кодом выхода 1 Вывод ошибки: FAILURE: сборка завершилась с исключением. * Что пошло не так: возникла проблема при настройке корневого проекта «Android». > Вы не приняли лицензионные соглашения следующих компонентов SDK:
Ашиш Карпе
Android SDK Build-Tools 26.0.2. Перед созданием проекта вам необходимо принять лицензионные соглашения и завершить установку отсутствующих компонентов с помощью Android Studio SDK Manager.
Ашиш Карпе
32

К сожалению, способ, которым OP изначально решил, не всегда работает. Если вы обнаружите в сообщении об ошибке, какая у вас версия текущей сборки build-tools . Возможно, это более ранняя версия инструментария сборки, которая отсутствует. В этом случае вам нужно вручную запустить SDK Manager, добавить инструменты сборки и принять лицензию.

В соответствии с инструкциями OP это выглядит следующим образом.

$ ./gradlew build

 
Чтобы соблюдать настройки JVM для этой сборки, новая JVM будет разветвлена. Пожалуйста, рассмотрите возможность использования демона: https://docs.gradle.org/2.14.1/userguide/gradle_daemon.html.

FAILURE: сборка не удалась, исключение.

* Что пошло не так:
Возникла проблема при настройке проекта «: приложение».
> Вы не приняли лицензионные соглашения следующих компонентов SDK:
  Android SDK Build-Tools 24.0.2.

...
СТРОИТЬ ОШИБКА

ПРИМЕЧАНИЕ: 2017-04-16

androidИнструмент теперь осуждается в пользу нового sdkmanager. Пожалуйста, смотрите ответ Джо Лоусона и последующие посты с марта (2017) и далее.

Затем настройте свою команду следующим образом:

android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repository
Обновить источники:
  Загрузка https://dl.google.com/android/repository/addons_list-2.xml
  Проверить XML
  Разбирать XML
  Список выбранных дополнений успешно
  Обновить источники
  Извлечение URL: https://dl.google.com/android/repository/repository-11.xml
  Проверьте XML: https://dl.google.com/android/repository/repository-11.xml
  Разбор XML: https://dl.google.com/android/repository/repository-11.xml
...
Ошибка: игнорирование неизвестного фильтра пакетов 'build-tools-24.0.2'
-------------------------------
Идентификатор лицензии: android-sdk-license-xxxxxxxx
Использован: 
 - Платформа SDK Android 7.0, API 24, редакция 2
  - Репозиторий поддержки Android, редакция 39
-------------------------------

...

20 ноября 2015 г.
Принимаете ли вы лицензию 'android-sdk-license-xxxxxxxx' [y / n]: y

Установка архивов:
  Подготовка к установке архивов
  Загрузка SDK Платформа Android 7.0, API 24, редакция 2
  Установка SDK Платформа Android 7.0, API 24, редакция 2
    Установленная SDK платформа Android 7.0, API 24, ревизия 296%)
  Загрузка репозитория поддержки Android, редакция 39
  Установка репозитория поддержки Android, редакция 39
    Установленный репозиторий поддержки Android, ревизия 3999%)
  Выполнено. Установлено 2 пакета.

Запуск этого снова, все еще не делает Gradle счастливым. Таким образом, ручное принятие является единственным решением, пока кто-то не придумает что-то лучшее. (Пожалуйста, сделай!)

not2qubit
источник
1
android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repositoryзапуск через командную строку с правами администратора исправил ошибку. Мне не удалось установить менеджер плагинов
phonegap
32

это решило мою ошибку

echo yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"
Кристиан Агудело
источник
2
Чтобы сохранить несколько символов, yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"делает то же самое.
Флимзи
31

Мы нашли ту же проблему при создании проекта на Дженкинс. С buildToolsVersion '25.0.2', мы должны принять лицензии перед строительством. В нашем случае нам нужно было выполнить:

yes | sdkmanager --update который принимает лицензии для самого sdkmanager, а затем

yes | sdkmanager --licenses которая принимает новые лицензии, не принятые ранее

Помните: запустите эти комманы с тем же пользователем, который jenkinsделает. В нашем Debian пользователь Jenkins просто jenkins. Другими словами: делать это так, как rootсоздаст принятые лицензии root, так что Дженкинс не будет их читать.

Кстати, мы нашли sdkmanagerна /var/lib/jenkins/tools/android-sdk/tools/bin. Если твоего нет там, найди его сfind / -name "sdkmanager"

Рок Боронат
источник
2
этот вопрос решил проблему и в моем случае (инструменты сборки 26.0.x) с Дженкинсом в Docker. Спасибо!
Джордано
1
К сожалению, это не включает «автоматическую» часть вопроса.
m0skit0
@ m0skit0 спасибо за ваш комментарий! Я обновил вопрос, чтобы соответствовать последней версии, чтобы автоматически принимать все лицензии без участия человека.
Рок Боронат
24

androidИнструмент является устаревшим , и вы должны использовать sdkmanagerвместо этого. sdkmanagerтакже записывает файл лицензий при первом его принятии. Лицензия меняется в зависимости от того, какой SDK вы используете, даже если команда

echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"

работает на некоторых системах. Это не будет работать на всех. Некоторые установки SDK предполагают, что файл лицензии заканчивается без новой строки в файле, поэтому попробуйте добавить a -nв команду echo.

echo -n -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"

Если это не работает, вы можете вместо этого попробовать использовать кодировку base64.

Итак, чтобы узнать мою лицензию:

$> rm ${ANDROID_HOME}/
$> unzip tools_r25.2.3-linux.zip -d ${ANDROID_HOME}
$> ${ANDROID_HOME}/tools/bin/sdkmanager "system-images;android-23;default;x86_64"

Вам будет предложено принять лицензию. После принятия он скопирует его в ${ANDROID_HOME}/licenses/android-sdk-license. Чтобы вы всегда получали именно то, что написано, используйте base64.

$> base64 ${ANDROID_HOME}/licenses/android-sdk-license
Cjg5MzNiYWQxNjFhZjQxNzhiMTE4NWQxYTM3ZmJmNDFlYTUyNjljNTU=

Тогда вы можете использовать base64 -dвоссоздать файл точно.

$> echo Cjg5MzNiYWQxNjFhZjQxNzhiMTE4NWQxYTM3ZmJmNDFlYTUyNjljNTU= | base64 -d > ${ANDROID_HOME}/licenses/android-sdk-license

Вы можете проверить, является ли записанный файл тем, что ожидается, запустив на нем sha1sum.

$> sha1sum ${ANDROID_HOME}/licenses/android-sdk-license
da6b80c9c47b41c0bf7032938e7137a58a3dc249
Джо Лоусон
источник
19

если вы запускаете yes | sdkmanager --licenses, то мы печатаем содержимое $ANDROID_HOME/licenses/android-sdk-license,

мы получим это

# cat $ANDROID_HOME/licenses/android-sdk-license

8933bad161af4178b1185d1a37fbf41ea5269c55

d56f5187479451eabf01fb78af6dfcb131a6481e

Чтобы GitLab CI принял лицензии Android SDK Build-Tools 26.0.2, вам нужно запустить

before_script:
  - mkdir -p $ANDROID_HOME/licenses
  - echo "8933bad161af4178b1185d1a37fbf41ea5269c55" > $ANDROID_HOME/licenses/android-sdk-license
  - echo "d56f5187479451eabf01fb78af6dfcb131a6481e" >> $ANDROID_HOME/licenses/android-sdk-license
jk2K
источник
Вы второе эхо идет на то же самое $ANDROID_HOME/licenses/android-sdk-license, это предназначено? то есть. добавление
Райан R
1
@RyanR, да, второе эхо Android SDK Build-Tools 26.02добавляется , добавлена ​​новая строка sha1 лицензии
jk2K
Я использую конвейеры bitbucket, но концепция, похоже, такая же, как и в GitLab CI. Ваш ответ помог мне лучше понять весь процесс. Спасибо!
Чудакулли
@Ridcully Я также использую Bitbucket Pipelines и оказался здесь, когда мы обновились до Build-Tools 26.0.2нашей сборки. Моим конечным решением было просто сделать yes | sdkmanager --licenses. Нет echoнеобходимости, и это доказательство будущего.
Райан R
@Ryan Вы имеете в виду, я могу просто добавить «да» | sdkmanager --licenses 'для pipe.yml? Это было бы прекрасно!
Чудакулли
16

Обратите внимание, что для тех, кто сейчас занимается этим вопросом, build-tools-24.0.2 (я думаю) теперь считается устаревшим, поэтому вы получите:

 Error: Ignoring unknown package filter 'build-tools-24.0.2'

при запуске различных команд, которые были предложены для их установки.

Решение состоит в том, чтобы добавить --all:

android update sdk --no-ui --all --filter "build-tools-24.0.2"

Кроме того, если вы используете 32- битную версию Linux, все инструменты сборки 23.0.1 являются только 64-битными , поэтому не будут работать. 32-битные пользователи застряли на 23.0.1, единственный способ получить более поздние инструменты сборки - перейти на 64-битную.

JosephH
источник
1
Да, инструменты сборки были только что натолкнулись на 25.0.1.
not2qubit
1
Ваше решение было единственной вещью, которую я смог найти для работы на безголовой машине ubuntu 16 для build-tools-25 и gradle 4
spartygw
14

Если вы используете, tools/bin/sdkmanager --licensesвам все равно нужно иметь взаимодействие с человеком. У меня проблема с использованием моего gitlab CI. Это мое решение:

wget --quiet --output-document=tools.zip https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
unzip -qq tools.zip
echo y | tools/bin/sdkmanager "platforms;android-25"
echo y | tools/bin/sdkmanager "platform-tools"
echo y | tools/bin/sdkmanager "build-tools;25.0.2"
echo y | tools/bin/sdkmanager "extras;android;m2repository"
echo y | tools/bin/sdkmanager "extras;google;m2repository"

echo y скажет да, если есть какие-либо вопросы, но вам нужно сделать одну строку для каждого пакета установки

Тибо Мотт
источник
Все еще весьма актуально после нескольких месяцев. Спасибо. Вы спасли мой день :)
Прасанна Рамасвами
Это было полезно для меня, также с помощью GitLab
sebasira
13

Вы также можете просто выполнить:

$ANDROID_HOME/tools/bin/sdkmanager --licenses

И в Windows выполните:

%ANDROID_HOME%/tools/bin/sdkmanager --licenses
r1si
источник
11

Для сообщения об ошибке SDK API номер 25:

android update sdk --no-ui --all --filter build-tools-25.0.1,android-25,extra-android-m2repository

ofir_aghai
источник
10

Хорошо для тех, у кого есть этот вопрос с 2018 года. Приведенные выше ответы не работают для меня вообще. Что ДЕЙСТВИТЕЛЬНО работало, так это открывая Android SDK - нажимая кнопку СКАЧАТЬ на панели инструментов и выбирая соответствующие пакеты. После того, как они закончат загрузку, он позволит вам принять лицензионное соглашение.

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

user2967081
источник
7

Я решил эту проблему, создав публичное git-репо с принятыми файлами лицензий. Затем я использую wgetэти лицензии на любой машине, которая мне нужна, в каталог [sdk-dir] / licenses перед запуском ./gradlew, чтобы построить свой проект.

IgorGanapolsky
источник
6

Для тех, у кого есть проблемы с SDK для командной строки, причина, по которой он не найдет принятые вами лицензии, заключается в том, что они были записаны в другое место, а не $ANDROID_HOME/licensesтам, где они должны быть.

Я обнаружил, что самым простым решением было принять такие лицензии:

$ANDROID_HOME/bin/sdkmanager --licenses --sdk_root=$ANDROID_HOME

Примечание. Предполагается, что вы указали, ANDROID_HOMEгде установлен ваш SDK.

sksamuel
источник
6

cd $ANDROID_HOME/tools/bin yes | ./sdkmanager --update

или

yes | $ANDROID_HOME/tools/bin/sdkmanager --update

Джимми Инь
источник
«Автоматически»
m0skit0
6

для windows откройте cmd и войдите в binкаталог, выполнив команду:

cd C:\Users\username\AppData\Local\Android\sdk\tools\android\Sdk\tools\bin

затем запустите sdkmanager --licensesкоманду, она попросит принять лицензии.

Дипак Кумрават
источник
1
Благодаря это то , что я сделал
mynameisjohnj
Я получаюError: Unknown argument --licenses
deanwilliammills
4

Наконец-то я нашел решение для Windows, чтобы сделать тихую и автоматическую установку:

В Windows следующий синтаксис не работает:

echo y | sdkmanager --licenses

Кажется, что "y" неправильно отправлены в Java-программу, вызываемую в пакете.

Обходной путь - создать файл file-y.txt с несколькими буквами «y», один за другим, и использовать

call sdkmanager --licenses < file-y.txt

Это создаст необходимые файлы в каталоге лицензий. Проблема, вероятно, связана с использованием BufferedReader в Java

moobyfr
источник
3

В Windows PowerShell вы можете сделать

for($i=0;$i -lt 30;$i++) { $response += "y`n"}; $response | sdkmanager --licenses

Это гораздо более гибко и требует ручного вмешательства. Число 30 является произвольным, должно быть достаточным для покрытия количества принятых лицензий, но при необходимости может быть увеличено

Марк Джонсон
источник
Еще одна причина не использовать Windows.
m0skit0
3

У меня была такая же ошибка при использовании Cordova.

Проблема была в том, что я установил Android Sdk через Android Studio и через aptс apt install android-sdk adb. И Кордова вызывала файлы, установленные через, aptа не файлы в моем домашнем каталоге.

Это сработало, как только я изменил путь к SDK в bash:

# Change path
export ANDROID_HOME="$HOME/Android/Sdk/"
echo "Android home = $ANDROID_HOME"
# Accept licenses
eval "${ANDROID_HOME}/tools/bin/sdkmanager --licenses"
# Run Cordova
cordova build android

Затем я удалил системные файлы , которые не использовались больше: apt remove android-sdk adb.

Алабама
источник
3

Вот моя настройка Docker.
Вы можете следовать из простой среды Linux.

Обратите внимание, что yes |и --licenses --sdk_root=${ANDROID_HOME}пункты.
Кажется, sdkmanager --updateотменяет соглашения, поэтому yes |появляется дважды.

FROM openjdk:8
# Install dev-essential(gnumake)
RUN apt update
RUN apt install -y build-essential
# Set ENV
ENV SDK_URL="https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip" \
    ANDROID_HOME="/usr/local/android-sdk" \
    ANDROID_VERSION=28 \
    ANDROID_BUILD_TOOLS_VERSION=28.0.3 \
    GRADLE_VERSION=4.10.3 \
    NDK_VERSION=r16b
# Download Android SDK
RUN mkdir "$ANDROID_HOME" .android \
    && cd "$ANDROID_HOME" \
    && curl -o sdk.zip $SDK_URL \
    && unzip sdk.zip \
    && rm sdk.zip \
    && yes | $ANDROID_HOME/tools/bin/sdkmanager --licenses --sdk_root=${ANDROID_HOME}
# Install Android Build Tool and Libraries
RUN $ANDROID_HOME/tools/bin/sdkmanager --update
RUN yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS_VERSION}" \
    "platforms;android-${ANDROID_VERSION}" \
    "platform-tools" --sdk_root=${ANDROID_HOME}
# Install Gradle
RUN wget https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-all.zip
RUN mkdir /opt/gradle
RUN unzip gradle-${GRADLE_VERSION}-all.zip -d /opt/gradle
ENV PATH=${PATH}:/opt/gradle/gradle-${GRADLE_VERSION}/bin
# Install NDK
RUN wget https://dl.google.com/android/repository/android-ndk-${NDK_VERSION}-linux-x86_64.zip
RUN mkdir /opt/ndk-bundle
RUN unzip android-ndk-${NDK_VERSION}-linux-x86_64.zip -d /opt/ndk-bundle
ENV PATH=${PATH}:/opt/ndk-bundle

RUN mkdir /application
WORKDIR /application
Youngjae
источник
«Похоже, sdkmanager --update отменяет соглашения, так что да | появляется дважды». Вау, ты прав. Это очень расстраивает, но хорошая находка.
Cephus
2

Вы можете принять всю лицензию, выполнив следующую команду:

 sdkmanager --licenses

Это подскажет вам все лицензии, которые вы еще не приняли, и вы можете просто войти, yчтобы принять каждую из них.

Манодж Шреста
источник
«Автоматически»
m0skit0
2

Я испробовал все вышеперечисленные команды на компьютере с Windows 10, но решение было использовать SDKMANAGER для проверки и принятия лицензий купить установку отсутствующих версий

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

Аймен Бумаиза
источник
Ни одна из команд CMD не работала для меня, только это решение. Спасибо
deanwilliammills
2

Этот путь был изменен в последних версиях. ./sdkmanagerсейчас, /Library/Android/sdk/cmdline-tools/latest/binа затем просто сделать

./sdkmanager --licenses
Sukeesh
источник
2

Примечание: это только для пользователей Mac

У меня была та же проблема, но ни один из опубликованных ответов не помог, так как в ней не было toolsпапки Library/Android/sdk.(я использую Android 3.6.3 в Mac OS 10.14.4)

скриншот ошибки

Следующие шаги помогли мне преодолеть ошибку лицензирования:

  1. открыто Android Studio
  2. Нажмите cmd + shift + A. Это открывает Actionsвсплывающее окно.
  3. Найдите SDK Managerи нажмите Enter, чтобы открыть.
  4. Это открывает всплывающее окно для Android SDK. Выберите другую версию Android, кроме уже установленной. (В моем случае Android 10.0 уже был установлен, поэтому я выбрал Android 9.0)
  5. Затем выберите Applyкнопку. Это установит соответствующий SDK.

Решение

  1. Теперь запустите ваше приложение, оно должно работать без каких-либо исключений.

скриншот успеха

Джайпракаш Дубей
источник
Эй, это решает мою в Linuxmint 19.3
GaryP
1

я бегу

#react-native run-android 

из терминала и встретил эту проблему. Чтобы вручную, перейдите в Android Studio -> Android SDK -> SDK Platform. Нажмите Показать детали пакета и проверьте:

+ Google APIs
+ Android SDK Platform 23
+ Intel x86 Atom_64 System Image
+ Google APIs Intel x86 Atom_64 System Image

При установке пакетов установите флажок принять лицензию =>, чтобы решить проблему.

Фук Нгуен
источник
1

В Mac OSX перейдите к sdk/tools/bin

Затем запустите ./sdkmanager --licensesи примите все лицензии.

Micheal C Wallas
источник