Автоматически принимать все лицензии SDK
Так как gradle Android Плагины 2.2-alpha4:
Gradle попытается загрузить отсутствующие пакеты SDK, которые проект
зависит от
что удивительно круто и было известно, чтобы быть JakeWharton project.
но, чтобы загрузить библиотеку SDK вам нужно: принять лицензионные соглашения или gradle говорит вам:
вы не приняли лицензионные соглашения следующего пакета SDK
компоненты: [Android SDK Build-Tools 24, Android SDK Platform 24].
Прежде чем строить свой проект, вам необходимо принять лицензию
соглашения и завершить установку недостающих компонентов
использование диспетчера SDK для Android Studio. Кроме того, чтобы узнать, как
перенесите лицензионные соглашения с одной рабочей станции на другую, перейдите по ссылке
http://d.android.com/r/studio-ui/export-licenses.html
и это проблема, потому что я хотел бы установить все зависимости sdk при выполнении gradle build.
Я ищу решение для автоматического принятия всех лицензий. Может быть, сценарий gradle ?
У тебя есть какие-нибудь идеи ?
спасибо!
[EDIT]
решение должно было выполнить:
android update sdk --no-ui --filter build-tools-24.0.0,android-24,extra-android-m2repository
и установите его вручную, но это новая функция gradle, чтобы сделать это.
[EDIT 2]
лучшим решением является использование sdkmananger:
yes | sudo sdkmanager --licenses
30 ответов:
я столкнулся с этим с
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 внутри, как это создает .Я думаю, что официальные инструменты не хотел бы пропустить этот шаг юридические соображения.
перечитывая заметки о выпуске, он заявляет
автоматическая загрузка SDK: Gradle попытается загрузить отсутствующие пакеты SDK, от которых зависит проект.
что не означает, что это будет работать, если вы еще не установили Android tools и уже приняли последнюю лицензию(ы).
EDIT: говоря это, он все еще не работает на моем тестовом поле gubuntu, пока я не свяжу SDK с AS. CI работает нормально, хотя-нет знаете, в чем разница...
для новейшей Android Studio (2.3) лучший способ обновить/принять все лицензии-запустить:
tools/bin/sdkmanager --licensesвам все равно может потребоваться скопировать файлы лицензий в другие места на основе вашей установки.
Если вы используете Jenkins, вы можете использовать следующий скрипт bash в качестве первого шага в процессе сборки:
(while sleep 3; do echo "y"; done) | $ANDROID_HOME/tools/android update sdk -uЭто, конечно, установить все доступные обновления, но это сэкономит вам некоторое время, если вы можете сэкономить место на диске. Сон, чтобы избежать сломанной строки чтения в программе установки, так как "да" не работает должным образом в этом случае.
редактировать: вы также должны добавить проект "установить Android требования" плагин на этапе сборки, чтобы получить исправьте $ANDROID_HOME, если вы используете встроенный SDK manager.
на новый
sdkmanagerутилиты:
yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;24.0.3"есть небольшая задержка между yesses, поэтому команда может висеть с лицензией, показанной на некоторое время, но она не требует вмешательства человека.
к сожалению, способ, как OP первоначально решил это не всегда работает. Если вы найдете из сообщения об ошибке, что ваш строит текущий build-tools версия. Возможно, это более высокая версия build-tools, которая отсутствует. В этом случае вам нужно вручную запустить SDK Manager и добавить build-tools и принять лицензию.
согласно инструкциям OP, это выглядит следующим образом.
$ ./gradlew buildTo honour the JVM settings for this build a new JVM will be forked. Please consider using the daemon: https://docs.gradle.org/2.14.1/userguide/gradle_daemon.html. FAILURE: Build failed with an exception. * What went wrong: A problem occurred configuring project ':app'. > You have not accepted the license agreements of the following SDK components: [Android SDK Build-Tools 24.0.2]. ... BUILD FAILED
Примечание: 2017-04-16
The
androidинструмент теперь устарел в пользу новогоsdkmanager. Пожалуйста, смотрите Джо Лоусона ответ и последующие сообщения с марта (2017) и далее.затем настроить команду следующим образом:
android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repositoryRefresh Sources: Fetching https://dl.google.com/android/repository/addons_list-2.xml Validate XML Parse XML Fetched Add-ons List successfully Refresh Sources Fetching URL: https://dl.google.com/android/repository/repository-11.xml Validate XML: https://dl.google.com/android/repository/repository-11.xml Parse XML: https://dl.google.com/android/repository/repository-11.xml ... Error: Ignoring unknown package filter 'build-tools-24.0.2' ------------------------------- License id: android-sdk-license-xxxxxxxx Used by: - SDK Platform Android 7.0, API 24, revision 2 - Android Support Repository, revision 39 ------------------------------- ... November 20, 2015 Do you accept the license 'android-sdk-license-xxxxxxxx' [y/n]: y Installing Archives: Preparing to install archives Downloading SDK Platform Android 7.0, API 24, revision 2 Installing SDK Platform Android 7.0, API 24, revision 2 Installed SDK Platform Android 7.0, API 24, revision 296%) Downloading Android Support Repository, revision 39 Installing Android Support Repository, revision 39 Installed Android Support Repository, revision 3999%) Done. 2 packages installed.запуск этого снова, все еще не делает Gradle счастливым. Таким образом, ручное принятие является единственным решением, пока кто-то не придумает что-то лучше. (Радовать делай!)
The
androidинструмент устарел, и вы должны использоватьsdkmanagerвместо.sdkmanagerтакже записывает файл лицензии, когда вы впервые принимаете его. Лицензия изменяется в зависимости от того, какой SDK вы используете, даже если командаecho -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"работает на некоторых системах. Он не будет работать на всех. Некоторые установки SDK ожидают, что файл лицензии закончится без новой строки в файле, поэтому попробуйте добавить
-nк команде Эха.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
если вы запустите
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
обратите внимание, что для тех, кто приходит к этому вопросу в настоящее время, 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"также, если вы находитесь на 32bit linux,всепосле сборки инструментов 23.0.1 только 64bit, так что не будет работать. 32-битные пользователи застряли на 23.0.1, единственный способ чтобы получить более поздние инструменты сборки, нужно переключиться на 64bit.
мы нашли ту же проблему, построив проект на Дженкинсе. С
buildToolsVersion '25.0.2', мы должны принять лицензии перед строить. В нашем случае нам нужно было запустить:
./sdkmanager --updateЭто просит нас принять лицензию на sdkmanager, а затем
./sdkmanager --licensesчто просит нас принять новые лицензии, ранее не принятыепомните: запустите эти запятые с тем же пользователем, что
jenkinsделает. В моем Debian пользователь Jenkins простоjenkins. Другими словами: делать это какrootсоздаст принятые лицензии какroot, так что Дженкинс не будет их читать.кстати, мы нашли
sdkmanagerat/var/lib/jenkins/tools/android-sdk/tools/bin. Если вашего там нет, найдите его с помощьюfind / -name "sdkmanager"
для сообщения об ошибке о SDK api номер 25:
android update sdk --no-ui --all --filter build-tools-25.0.1,android-25,extra-android-m2repository
Если вы используете
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скажет Да, если есть какие-либо вопросы, но вам нужно сделать одну строку на пакет installe
Я решил эту проблему, создав публичное РЕПО git с файлами принятых лицензий. Тогда я использую
wgetчтобы получить эти лицензии на любой машине, мне нужно в [sdk-dir] / licenses перед ./gradlew чтобы построить свой проект.
хорошо для тех, кто имеет эту проблему с 2018 года. Вышеприведенные ответы не работали для меня вообще. Что действительно работало, так это открытие Android SDK-нажатие кнопки загрузки на панели инструментов и выбор соответствующих пакетов. После того, как они закончат загрузку, это позволит вам принять лицензионное соглашение.
у меня была та же ошибка при использовании 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.
Вы можете принять все лицензии, выполнив следующую команду:
sdkmanager --licensesэто предложит вам через каждую лицензию, которую вы еще не приняли, и вы можете просто ввести
yпринять каждый из них.
вы также можете просто выполнить
$ANDROID_HOME / tools/bin / sdkmanager --licenses
или для Windows выполнить
%ANDROID_HOME% / tools/bin / sdkmanager --licenses
для тех, у кого возникли проблемы с SDK командной строки, причина, по которой он не найдет принятые лицензии, заключается в том, что они были записаны в другое место, чем
$ANDROID_HOME/licensesгде они должны быть.Я нашел самое простое решение, чтобы принять лицензии, как это:
$ANDROID_HOME/bin/sdkmanager --licenses --sdk_root=$ANDROID_HOMEПримечание: это предполагает, что вы установили
ANDROID_HOMEчтобы указать, где установлен ваш sdk.
скопируйте все лицензии / каталог и вставьте его в домашний каталог Android SDK на машине, где вы хотите построить свои проекты.
https://developer.android.com/studio/intro/update.html#download-with-gradle
это решило проблему для меня
в Windows PowerShell, вы можете сделать
for($i=0;$i -lt 30;$i++) { $response += "y`n"}; $response | sdkmanager --licensesЭто гораздо более гибкий и не требует ручного вмешательства. Число 30 является произвольным, должно быть достаточно для покрытия количества лицензионных акцептов, но может быть увеличено при необходимости
Я бегу
#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при установке пакетов, проверьте принять лицензию = > может решить эту проблему.
на Mac OSX перейдите к
sdk/tools/binзатем запустите
./sdkmanager --licenses, и принять все лицензии.
Я наконец нашел решение на Windows, чтобы иметь реальную тихую и автоматическую установку:
в Windows не работает следующий синтаксис:
echo y | sdkmanager --licensesКажется, что "y" неправильно отправлены в программу java, вызванную в пакете.
обходной путь заключается в создании файла file-y.txt с несколькими "y", по одной строке, и использовать
call sdkmanager --licenses < file-y.txtэто создаст необходимые файлы в каталоге лицензий. Проблема, вероятно, связана с использование BufferedReader в Java
есть 2 подхода, которые я могу найти на эту проблему.
обновление sdk tools с помощью командного окна, приняв лицензионное соглашение следующим образом, просто измените версию в соответствии с вашими потребностями.
андроид обновление пакета SDK ... нет-интерфейс фильтра --строить-инструменты-25.0.2,андроид-25,экстра-андроид-m2repository
второй подход-копирование папок лицензий в корневой каталог Android. Перейти к вашей машине разработки open Android Studio. Находить ваше местоположение sdk из меню структура проекта. (C:\Users\UserName\AppData\Local\Android\sdk). В этом каталоге должна быть папка лицензии. Скопируйте эту папку с содержимым. Вставьте эту папку на серверной машине Jenkins (или там, где вы столкнулись с этой проблемой) в корневую папку Android sdk. (C:\Users\UserName.jenkins\tools\android-sdk)
наконец, эти 2 простых шага работали для меня в windows 10.
1) Убедитесь, что вы обновили свои инструменты сборки android и api. На вашем Android Sdk просто нажмите на установить пакеты для установки доступных обновлений.
2) Начать ваш Android-студия и вам будет предложено установить необходимо создать инструменты для уже обновлены API и инструменты, это позволит установить сборку свойства инструментов, включая лицензии и все готово.
Я перехожу к:
/usr/lib/android-sdk/licensesи я набрал в терминале:
echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > $ANDROID_SDK/licenses/android-sdk-license"С разрешения root. И это работает для меня сейчас.
для приложений REACT NATIVE:
Если у вас возникла эта проблема для приложения React Native, в дополнение к вышеупомянутым шагам убедитесь, что у вас есть локальный.файл свойств в каталоге android (AppName/android) вашего приложения, который указывает на ваш каталог "sdk":
sdk.dir=/PATH_TO_SDK/


Comments