Начиная с 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
echo y |
перед этой командой, чтобы автоматически принять лицензию. Полезно при работе с безголовым CI-боксом :)~/.android/tools/android update sdk --no-ui --filter build-tools-25.0.0,android-25,extra-android-m2repository
потому чтоandroid
инструмент был локализован в моем доме$ANDROID_SDK_PATH
в реальном корневом пути , где вы установили SDK (т.е./opt/android-sdk
), или просто положить путь непосредственно (то есть:yes | sdkmanager --licenses --sdk_root=/opt/android-sdk
)Ответы:
AndroidSDK может наконец принять лицензии.
РЕДАКТИРОВАТЬ:
как указано в комментариях @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, прежде чем
источник
C:\Users\x1\AppData\Local\Android\sdk\tools\android
он открыл GUI, а затем установил «пропал» и в появившемся диалоговом окне щелкнул «Accept Liscenses».yes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses
Я столкнулся с этим при
alpha5
предварительном просмотре.Джейк Уортон указал мне, что в настоящее время вы можете использовать
воссоздать текущую
$ANDROID_HOME/license
папку на вашем компьютере. Это будет иметь тот же результат, что и процесс, описанный в ссылке об ошибке msg ( http://tools.android.com/tech-docs/new-build-system/license ).Хэши - это sha1s текста лицензии, которые, я думаю, будут периодически обновляться, поэтому этот код будет работать только так долго :)
Сначала я удивился, что это не сработало из коробки, даже когда я принял лицензии для названных компонентов через
android
инструмент, но мне было указано, что это менеджер SDK внутри AS, который создает/licenses
папку.Я предполагаю, что официальные инструменты не захотят пропустить этот шаг по юридическим причинам.
Перечитывая примечания к выпуску, он заявляет
Это не означает, что это будет работать, если вы еще не установили инструменты Android и уже приняли последние лицензии.
РЕДАКТИРОВАТЬ: Сказав это, он все еще не работает на моей тестовой коробке gubuntu, пока я не свяжу SDK с AS. CI работает нормально, хотя - не уверен, в чем разница ...
источник
mkdir -p
вместо|| true
.echo
:echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> "${ANDROID_HOME}/licenses/android-sdk-license"
. Но я думаю, что ваша проблема скрывается где-то еще.Для новейшей версии Android Studio (2.3) лучший способ обновить / принять все лицензии - запустить:
вам все равно может потребоваться скопировать файлы лицензий в другие места в зависимости от настроек.
источник
tools/bin/sdkmanager --licenses
yes
эту команду для автоматизированных систем сборки? У вас не всегда будет доступ к этим машинам через интерактивную консоль, поэтомуy
физическое нажатие на клавиатуру не сработает.cd $ANDROID_HOME
перед выполнением этой командыДля новой
sdkmanager
утилиты:yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;24.0.3"
Между дазами есть небольшая задержка, поэтому команда может зависнуть с отображением лицензии на некоторое время, но это не требует вмешательства человека.
источник
up-to-date
ответом. Кажется,--licenses
больше не существует. Примечание: чтобы увидеть список возможных версий, которые могут быть предоставлены:$ANDROID_HOME/tools/bin/sdkmanager --list
yes | android-sdk-linux/tools/bin/sdkmanager --licenses || true
в своем CI.Если вы используете Jenkins, вы можете использовать следующий скрипт bash в качестве первого шага в процессе сборки:
Это, конечно, установит ВСЕ доступные обновления, но сэкономит вам время, если вы сможете сэкономить место на диске. Сон состоит в том, чтобы избежать нарушения чтения в программе установки, так как «да» не работает должным образом в этом случае.
РЕДАКТИРОВАТЬ: Вам также необходимо добавить плагин «Установить предварительные условия проекта Android» на этапе сборки, чтобы получить правильный $ ANDROID_HOME, если вы используете встроенный менеджер SDK.
источник
К сожалению, способ, которым OP изначально решил, не всегда работает. Если вы обнаружите в сообщении об ошибке, какая у вас версия текущей сборки build-tools . Возможно, это более ранняя версия инструментария сборки, которая отсутствует. В этом случае вам нужно вручную запустить SDK Manager, добавить инструменты сборки и принять лицензию.
В соответствии с инструкциями OP это выглядит следующим образом.
$ ./gradlew build
Затем настройте свою команду следующим образом:
Запуск этого снова, все еще не делает Gradle счастливым. Таким образом, ручное принятие является единственным решением, пока кто-то не придумает что-то лучшее. (Пожалуйста, сделай!)
источник
android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repository
запуск через командную строку с правами администратора исправил ошибку. Мне не удалось установить менеджер плагиновэто решило мою ошибку
источник
yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"
делает то же самое.Мы нашли ту же проблему при создании проекта на Дженкинс. С
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"
источник
android
Инструмент является устаревшим , и вы должны использоватьsdkmanager
вместо этого.sdkmanager
также записывает файл лицензий при первом его принятии. Лицензия меняется в зависимости от того, какой SDK вы используете, даже если командаработает на некоторых системах. Это не будет работать на всех. Некоторые установки SDK предполагают, что файл лицензии заканчивается без новой строки в файле, поэтому попробуйте добавить a
-n
в команду echo.Если это не работает, вы можете вместо этого попробовать использовать кодировку base64.
Итак, чтобы узнать мою лицензию:
Вам будет предложено принять лицензию. После принятия он скопирует его в
${ANDROID_HOME}/licenses/android-sdk-license
. Чтобы вы всегда получали именно то, что написано, используйтеbase64
.Тогда вы можете использовать
base64 -d
воссоздать файл точно.Вы можете проверить, является ли записанный файл тем, что ожидается, запустив на нем sha1sum.
источник
если вы запускаете
yes | sdkmanager --licenses
, то мы печатаем содержимое$ANDROID_HOME/licenses/android-sdk-license
,мы получим это
Чтобы GitLab CI принял лицензии Android SDK Build-Tools 26.0.2, вам нужно запустить
источник
$ANDROID_HOME/licenses/android-sdk-license
, это предназначено? то есть. добавлениеAndroid SDK Build-Tools 26.02
добавляется , добавлена новая строка sha1 лицензииBuild-Tools 26.0.2
нашей сборки. Моим конечным решением было просто сделатьyes | sdkmanager --licenses
. Нетecho
необходимости, и это доказательство будущего.Обратите внимание, что для тех, кто сейчас занимается этим вопросом, build-tools-24.0.2 (я думаю) теперь считается устаревшим, поэтому вы получите:
при запуске различных команд, которые были предложены для их установки.
Решение состоит в том, чтобы добавить
--all
:Кроме того, если вы используете 32- битную версию Linux, все инструменты сборки 23.0.1 являются только 64-битными , поэтому не будут работать. 32-битные пользователи застряли на 23.0.1, единственный способ получить более поздние инструменты сборки - перейти на 64-битную.
источник
25.0.1
.Если вы используете,
tools/bin/sdkmanager --licenses
вам все равно нужно иметь взаимодействие с человеком. У меня проблема с использованием моего gitlab CI. Это мое решение:echo y
скажет да, если есть какие-либо вопросы, но вам нужно сделать одну строку для каждого пакета установкиисточник
Вы также можете просто выполнить:
И в Windows выполните:
источник
Для сообщения об ошибке SDK API номер 25:
android update sdk --no-ui --all --filter build-tools-25.0.1,android-25,extra-android-m2repository
источник
Хорошо для тех, у кого есть этот вопрос с 2018 года. Приведенные выше ответы не работают для меня вообще. Что ДЕЙСТВИТЕЛЬНО работало, так это открывая Android SDK - нажимая кнопку СКАЧАТЬ на панели инструментов и выбирая соответствующие пакеты. После того, как они закончат загрузку, он позволит вам принять лицензионное соглашение.
источник
Я решил эту проблему, создав публичное git-репо с принятыми файлами лицензий. Затем я использую
wget
эти лицензии на любой машине, которая мне нужна, в каталог [sdk-dir] / licenses перед запуском ./gradlew, чтобы построить свой проект.источник
Для тех, у кого есть проблемы с SDK для командной строки, причина, по которой он не найдет принятые вами лицензии, заключается в том, что они были записаны в другое место, а не
$ANDROID_HOME/licenses
там, где они должны быть.Я обнаружил, что самым простым решением было принять такие лицензии:
$ANDROID_HOME/bin/sdkmanager --licenses --sdk_root=$ANDROID_HOME
Примечание. Предполагается, что вы указали,
ANDROID_HOME
где установлен ваш SDK.источник
cd $ANDROID_HOME/tools/bin yes | ./sdkmanager --update
или
yes | $ANDROID_HOME/tools/bin/sdkmanager --update
источник
для windows откройте cmd и войдите в
bin
каталог, выполнив команду:затем запустите
sdkmanager --licenses
команду, она попросит принять лицензии.источник
Error: Unknown argument --licenses
Наконец-то я нашел решение для Windows, чтобы сделать тихую и автоматическую установку:
В Windows следующий синтаксис не работает:
Кажется, что "y" неправильно отправлены в Java-программу, вызываемую в пакете.
Обходной путь - создать файл file-y.txt с несколькими буквами «y», один за другим, и использовать
Это создаст необходимые файлы в каталоге лицензий. Проблема, вероятно, связана с использованием BufferedReader в Java
источник
Скопируйте весь каталог licenses / и вставьте его в домашний каталог Android SDK на компьютере, на котором вы хотите создавать свои проекты.
https://developer.android.com/studio/intro/update.html#download-with-gradle
это решило проблему для меня
источник
В Windows PowerShell вы можете сделать
Это гораздо более гибко и требует ручного вмешательства. Число 30 является произвольным, должно быть достаточным для покрытия количества принятых лицензий, но при необходимости может быть увеличено
источник
У меня была такая же ошибка при использовании Cordova.
Проблема была в том, что я установил Android Sdk через Android Studio и через
apt
сapt install android-sdk adb
. И Кордова вызывала файлы, установленные через,apt
а не файлы в моем домашнем каталоге.Это сработало, как только я изменил путь к SDK в bash:
Затем я удалил системные файлы , которые не использовались больше:
apt remove android-sdk adb
.источник
Вот моя настройка Docker.
Вы можете следовать из простой среды Linux.
Обратите внимание, что
yes |
и--licenses --sdk_root=${ANDROID_HOME}
пункты.Кажется,
sdkmanager --update
отменяет соглашения, поэтомуyes |
появляется дважды.источник
Вы можете принять всю лицензию, выполнив следующую команду:
Это подскажет вам все лицензии, которые вы еще не приняли, и вы можете просто войти,
y
чтобы принять каждую из них.источник
Я испробовал все вышеперечисленные команды на компьютере с Windows 10, но решение было использовать SDKMANAGER для проверки и принятия лицензий купить установку отсутствующих версий
источник
Этот путь был изменен в последних версиях.
./sdkmanager
сейчас,/Library/Android/sdk/cmdline-tools/latest/bin
а затем просто сделатьисточник
Примечание: это только для пользователей Mac
У меня была та же проблема, но ни один из опубликованных ответов не помог, так как в ней не было
tools
папкиLibrary/Android/sdk.
(я использую Android 3.6.3 в Mac OS 10.14.4)Следующие шаги помогли мне преодолеть ошибку лицензирования:
Android Studio
cmd + shift + A
. Это открываетActions
всплывающее окно.SDK Manager
и нажмите Enter, чтобы открыть.Android SDK
. Выберите другую версию Android, кроме уже установленной. (В моем случае Android 10.0 уже был установлен, поэтому я выбрал Android 9.0)Apply
кнопку. Это установит соответствующий SDK.источник
я бегу
из терминала и встретил эту проблему. Чтобы вручную, перейдите в Android Studio -> Android SDK -> SDK Platform. Нажмите Показать детали пакета и проверьте:
При установке пакетов установите флажок принять лицензию =>, чтобы решить проблему.
источник
В Mac OSX перейдите к
sdk/tools/bin
Затем запустите
./sdkmanager --licenses
и примите все лицензии.источник