Автоматически принимать все лицензии 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
1274   30  

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 работает нормально, хотя-нет знаете, в чем разница...

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

yes | sdkmanager --licenses

для новейшей 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 build

 
To 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-m2repository
Refresh 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 счастливым. Таким образом, ручное принятие является единственным решением, пока кто-то не придумает что-то лучше. (Радовать делай!)

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

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

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, так что Дженкинс не будет их читать.

кстати, мы нашли sdkmanager at /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-нажатие кнопки загрузки на панели инструментов и выбор соответствующих пакетов. После того, как они закончат загрузку, это позволит вам принять лицензионное соглашение.

enter image description here

у меня была та же ошибка при использовании 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 является произвольным, должно быть достаточно для покрытия количества лицензионных акцептов, но может быть увеличено при необходимости

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

Я бегу

#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 подхода, которые я могу найти на эту проблему.

  1. обновление sdk tools с помощью командного окна, приняв лицензионное соглашение следующим образом, просто измените версию в соответствии с вашими потребностями.

    андроид обновление пакета SDK ... нет-интерфейс фильтра --строить-инструменты-25.0.2,андроид-25,экстра-андроид-m2repository

  2. второй подход-копирование папок лицензий в корневой каталог 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/

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

enter image description here

Comments

    Ничего не найдено.