Accepter automatiquement toutes les licences SDK

depuis gradle android plugins 2.2-alpha4 :

Gradle tentera de télécharger les paquets SDK manquants qu'un projet dépend de

qui est étonnamment cool et était connu pour être un JakeWharton project .

mais, pour télécharger la bibliothèque SDK vous devez: accepter les accords de licence ou Grad vous dit:

vous n'avez pas accepté les accords de licence du SDK suivant composants :[ Android SDK Build-Tools 24, Android SDK Platform 24]. Avant de construire votre projet, vous devez accepter la licence accords et effectuer l'installation des composants manquants utiliser le Gestionnaire de SDK Android Studio. Alternativement, pour apprendre à transférer les accords de licence d'un poste de travail à un autre, aller à http://d.android.com/r/studio-ui/export-licenses.html

et c'est un problème parce que j'aimerais installer toutes les dépendances sdk tout en faisant un gradle build .

je cherche une solution pour accepter automatiquement toutes les licences. Peut-être un gradle script ? Avez-vous des idées ?

Merci!

[EDIT]

une solution était d'exécuter:

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

et l'installer manuellement, mais il est la nouvelle fonctionnalité de Grad le but de le faire.

[EDIT 2]

une meilleure solution est d'utiliser le sdkmananger:

yes | sudo sdkmanager --licenses
274
demandé sur nsvir 2016-06-29 12:56:41

30 réponses

j'ai rencontré ceci avec le alpha5 preview.

Jake Wharton m'a fait remarquer que vous pouvez actuellement utiliser""

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

pour recréer le dossier courant $ANDROID_HOME/license sur votre machine. Cela aurait le même résultat que le processus décrit dans le lien de l'erreur msg ( http://tools.android.com/tech-docs/new-build-system/license ).

texte de licence, que j'imagine sera mis à jour périodiquement, de sorte que ce code ne fonctionnera que pendant si longtemps :)

Et de l'installer manuellement, mais c'est la gradle nouvelle fonction objectif pour le faire.

j'ai d'abord été surpris que cela ne fonctionne pas à l'extérieur de la boîte, même lorsque j'avais accepté les licences pour les composants nommés via l'outil android , mais il a été souligné à moi son le gestionnaire SDK à l'intérieur comme cela crée le /licenses le dossier.

je suppose que les outils officiels ne voulez pas sauter cette étape pour des raisons juridiques.

relire les notes de mise à jour il est dit

SDK auto-download: Gradle tentera de télécharger les paquets SDK manquants dont dépend un projet.

ce qui ne signifie pas qu'il fonctionnera si vous n'avez pas encore installé les outils android et avez déjà accepté la dernière licence(s).

EDIT: en disant que, il ne fonctionne toujours pas sur ma boîte de test gubuntu jusqu'à ce que je lie le SDK jusqu'à AS. L'assurance-récolte fonctionne très bien, mais je ne sais pas quelle est la différence...

165
répondu Dori 2017-05-18 11:51:20

Androidsdsdk peut enfin accepter des licences.

yes | sdkmanager --licenses
138
répondu nsvir 2017-08-20 13:33:03

pour le plus récent studio Android (2.3) la meilleure façon de mettre à jour/accepter toutes les licences est d'exécuter:

tools/bin/sdkmanager --licenses

vous pourriez encore avoir besoin de copier les fichiers de licence à d'autres endroits en fonction de votre installation.

103
répondu bgies 2017-04-25 04:48:51

Si vous utilisez Jenkins, vous pouvez utiliser le script bash suivant comme première étape dans le processus de génération:

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

cela installera bien sûr toutes les mises à jour disponibles, mais cela vous fera gagner du temps si vous pouvez économiser de l'espace disque. Le sommeil est d'éviter la ligne de lecture cassée dans le programme d'installation, puisque "oui" ne fonctionne pas correctement dans ce cas.

EDIT: vous devez également ajouter le plugin "Install Android project prerequisites" dans l'étape de construction pour obtenir le $ANDROID_HOME correct si vous utilisez le gestionnaire SDK intégré.

40
répondu raven 2016-12-29 10:43:03

pour le nouveau sdkmanager utility:

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

il y a un peu de retard entre les yesses, donc la commande pourrait être suspendue avec la licence affichée pendant un certain temps, mais cela ne nécessite pas d'intervention humaine.

40
répondu A. Rager 2017-02-08 23:45:29

malheureusement la façon dont OP résolu à l'origine il ne fonctionne pas toujours. Si vous trouvez dans le message d'erreur Quelle est votre construction actuelle build-tools version . Il se peut que ce soit une version supérieure des outils de construction qui manque. Dans ce cas, vous devez démarrer manuellement SDK Manager et ajouter les outils de compilation et accepter la licence.

selon les instructions de L'opération, il ressemble à ce qui suit.

$ ./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

REMARQUE: 2017-04-16

l'outil android a été déprécié en faveur du nouveau sdkmanager . Veuillez voir Joe Lawson réponse et ultérieure des postes de Mars (2017) et ainsi de suite.

puis vous ajustez la commande comme suit:

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.

encore une fois, Ne rendez pas Gradle heureux. Donc l'acceptation manuelle est la seule solution jusqu'à ce que quelqu'un trouve quelque chose de mieux. (S'il vous plaît!)

29
répondu not2qubit 2017-05-23 12:34:44

cela a résolu mon erreur

echo yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"
19
répondu Cristian Agudelo 2018-04-19 14:08:32

l'outil android est déprécié et vous devez utiliser le sdkmanager à la place. sdkmanager écrit également le fichier de licences lorsque vous l'acceptez Pour la première fois. La licence change en fonction du SDK que vous utilisez, même si la commande

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

fonctionne sur certains systèmes. Il ne fonctionnera pas sur tous. Certains SDK installent s'attendent à autoriser la fin du fichier sans nouvelle ligne dans le fichier, alors essayez d'ajouter un -n à la commande echo.

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

si cela ne fonctionne pas, vous pouvez essayer d'utiliser l'encodage base64 à la place.

donc pour découvrir ma licence:

$> 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"

cela vous incitera à accepter la licence. Après avoir accepté, il le copiera sur ${ANDROID_HOME}/licenses/android-sdk-license . Pour vous assurer que vous obtenez toujours exactement ce qui est écrit, utilisez base64 .

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

, Alors vous pouvez utiliser base64 -d recréer le fichier exactement.

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

vous pouvez vérifiez si le fichier écrit Est ce qu'on attend en exécutant un sha1sum dessus.

$> sha1sum ${ANDROID_HOME}/licenses/android-sdk-license
da6b80c9c47b41c0bf7032938e7137a58a3dc249
18
répondu Joe Lawson 2017-02-02 18:35:11

si vous lancez yes | sdkmanager --licenses , alors nous imprimons le contenu de $ANDROID_HOME/licenses/android-sdk-license ,

nous obtiendrons ce

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

8933bad161af4178b1185d1a37fbf41ea5269c55

d56f5187479451eabf01fb78af6dfcb131a6481e

pour GitLab CI, pour accepter les licences Android SDK Build-Tools 26.0.2, vous devez exécuter ce

before_script:
  - mkdir -p $ANDROID_HOME/licenses
  - echo "8933bad161af4178b1185d1a37fbf41ea5269c55" > $ANDROID_HOME/licenses/android-sdk-license
  - echo "d56f5187479451eabf01fb78af6dfcb131a6481e" >> $ANDROID_HOME/licenses/android-sdk-license
17
répondu jk2K 2017-10-12 23:12:36

notez que pour quiconque vient à cette question actuellement, build-tools-24.0.2 est (je pense) maintenant considéré comme obsolète, donc vous obtiendrez:

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

lors de l'exécution des différentes commandes qui ont été suggérées pour les installer.

la solution est d'ajouter --all :

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

aussi si vous êtes sur 32bit linux, tout après les outils de construction 23.0.1 est 64bit seulement , donc ne courra pas. 32bit utilisateurs sont bloqués sur 23.0.1, la seule façon d'obtenir une version ultérieure outils est de passer à 64 bits.

15
répondu JosephH 2016-12-10 15:47:54

nous avons trouvé la même question construire le projet sur Jenkins. Avec buildToolsVersion '25.0.2' , nous devons accepter les licences avant de construire. Dans notre cas, nous avions besoin de courir:

./sdkmanager --update qui nous demande d'accepter une licence pour le sdkmanager, puis

./sdkmanager --licenses qui nous demande d'accepter de nouvelles licences non acceptées auparavant

N'oubliez pas: Lancez ces commans avec le même utilisateur que jenkins . Dans ma Debian, l' L'utilisateur de Jenkins est juste jenkins . En d'autres termes: le faire comme root créera les licences acceptées comme root , donc Jenkins ne les lira pas.

soit dit en passant, nous avons trouvé sdkmanager à /var/lib/jenkins/tools/android-sdk/tools/bin . Si le vôtre n'est pas là, trouvez-le avec find / -name "sdkmanager"

15
répondu Roc Boronat 2017-05-20 18:23:47

pour un message d'erreur concernant L'api SDK numéro 25:

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

10
répondu ofir_aghai 2017-02-01 11:21:25

si vous utilisez tools/bin/sdkmanager --licenses vous devez toujours avoir une interaction humaine. J'ai le problème avec mon Indic gitlab. C'est ma solution:

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 dira oui si il y a une question, mais vous avez besoin de faire une ligne par installe le paquet

9
répondu Thibaut Mottet 2017-04-28 05:21:19

j'ai résolu ce problème en créant un repo git public avec les fichiers de licence acceptés. Puis j'utilise wget pour récupérer ces licences sur n'importe quelle machine dont j'ai besoin dans un répertoire [sdk-dir]/licences avant d'exécuter ./gradlew pour construire mon projet.

4
répondu Igor Ganapolsky 2016-11-15 17:21:29

Ok pour toute personne ayant ce problème à partir de 2018. Les réponses ci-dessus ne fonctionnaient pas du tout pour moi. Ce qui a fonctionné était d'ouvrir Android SDK - en cliquant sur le bouton télécharger sur la barre d'outils et en sélectionnant les paquets appropriés. Une fois le téléchargement terminé, vous pourrez accepter le contrat de licence.

enter image description here

4
répondu user2967081 2018-02-20 04:36:11

j'ai eu la même erreur en utilisant Cordova.

le problème était dû au fait que J'ai installé Android Sdk à travers Android Studio et à travers apt avec apt install android-sdk adb . Et Cordova appelait les fichiers installés par apt au lieu des fichiers de mon répertoire personnel.

ça a marché une fois que j'ai changé le chemin vers le 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

puis j'ai supprimé les fichiers système qui n'étaient pas utilisés plus: apt remove android-sdk adb .

3
répondu A.L 2017-11-17 15:27:49

vous pouvez accepter toute la licence en exécutant la commande suivante:

 sdkmanager --licenses

cela vous invitera à utiliser chaque licence que vous n'avez pas encore acceptée et vous pouvez simplement entrer y pour accepter chacune d'elles.

3
répondu Manoj Shrestha 2017-12-11 22:39:07

vous pouvez aussi simplement exécuter

$ANDROID_HOME/tools / bin / sdkmanager --licences

ou pour Windows exécuter

%ANDROID_HOME% / tools / bin / sdkmanager --licences

3
répondu r1si 2018-03-27 13:19:07

pour ceux qui ont des problèmes avec le SDK de ligne de commande, la raison pour laquelle il ne trouvera pas les licences que vous avez acceptées est parce qu'ils ont été écrits à un endroit différent de $ANDROID_HOME/licenses qui est où ils doivent être.

j'ai trouvé la solution la plus facile était d'accepter les licences comme ceci:

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

Note: cela suppose que vous avez défini ANDROID_HOME pour pointer vers l'endroit où votre sdk est installé.

3
répondu monkjack 2018-04-10 20:28:19

Copiez l'intégralité du répertoire licences/ et collez-le dans le répertoire Android SDK home sur la machine où vous souhaitez construire vos projets.

https://developer.android.com/studio/intro/update.html#download-with-gradle

cela a résolu le problème pour moi

2
répondu surya 2017-03-22 10:13:28

dans Windows PowerShell, vous pouvez faire

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

c'est beaucoup plus flexible et nécessite aucune intervention manuelle. Le nombre de 30 est arbitraire, devrait être suffisant pour couvrir le nombre d'acceptations de licence, mais peut être augmenté si nécessaire

2
répondu Mark Johnson 2017-06-02 23:41:19

cd $ANDROID_HOME/tools / bin ./sdkmanager --mise à jour

2
répondu Jimmy Yin 2017-11-07 03:05:31

je cours

#react-native run-android 

de terminal et rencontré ce problème. Pour manuellement, allez à Android Studio - > Android SDK - > plate-forme SDK Cliquez sur Afficher les détails des paquets et vérifier:

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

lors de l'installation des paquets, cochez accept license => peut résoudre le problème.

1
répondu Phuc Nguyen 2017-06-28 09:55:34

sur Mac OSX, naviguez vers le sdk/tools/bin

puis lancez ./sdkmanager --licenses , et acceptez toutes les licences.

1
répondu Micheal C Wallas 2018-01-28 18:34:56

j'ai finalement trouvé une solution sur Windows, pour avoir une installation vraiment silencieuse et automatique:

sous Windows, la syntaxe suivante ne fonctionne pas:

echo y | sdkmanager --licenses

il semble que le" y " ne soit pas correctement envoyé au programme java appelé dans le lot.

la solution est de créer un fichier file-y.txt avec plusieurs "y", un par ligne, et pour utiliser

call sdkmanager --licenses < file-y.txt

cela créera les fichiers nécessaires dans le licences répertoire. Le problème est probablement lié à L'utilisation de BufferedReader en Java

1
répondu moobyfr 2018-01-31 09:48:18

il y a 2 approches que je peux trouver à ce problème.

  1. Update sdk tools with command window by accepting licence agreement as follows, il suffit de modifier la version en fonction de vos besoins.

    mise à jour android sdk --no-ui --filter build-tools-25.0.2, android-25, extra-android-m2repository

  2. la deuxième approche consiste à copier des dossiers de licence dans le répertoire racine Android. Goto votre machine de développement open Android Studio. Trouvez votre emplacement sdk dans le menu Structure du projet. (C:\Users\UserName\AppData\Local\Android\sdk). Dans ce répertoire il doit y avoir un dossier licence. Copier ce dossier avec le contenu. Collez ce dossier dans votre machine Jenkins server (ou là où vous êtes confrontés à ce problème) sous le dossier racine SDK android. (C:\Users\UserName.jenkins\tools\android-sdk)

0
répondu DiRiNoiD 2017-02-19 20:27:00

enfin, ces 2 simples étapes ont fonctionné pour moi sur windows 10.

1) Assurez-vous de mettre à jour vos outils de construction android et api. Sur votre Sdk Android il suffit de cliquer sur installer les paquets pour installer les mises à jour disponibles.

2) Démarrez votre studio Android et vous serez invité à installer les outils de construction requiured pour l'api et les outils déjà mis à jour, ce qui permettra d'installer les propriétés des outils de construction, y compris les licences et votre fait.

0
répondu Chinedu Etoh 2017-05-30 10:54:57

je navigue vers:

/usr/lib/android-sdk/licenses

et j'ai tapé:

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

avec la permission de la racine. Et ça marche pour moi maintenant.

0
répondu Vinicius de Santana 2017-07-31 01:54:34

pour les applications natives REACT:

Si vous rencontrez ce problème pour Réagir application Native, en plus des étapes mentionnées ci-dessus, assurez-vous d'avoir le local.fichier de propriétés dans le répertoire android (AppName / android) de votre application qui pointe vers votre répertoire 'sdk':

sdk.dir=/PATH_TO_SDK/
0
répondu Nauman Tahir 2017-12-03 00:47:29

j'ai essayé toute la commande ci-dessus sur windows 10 machine mais la solution était d'utiliser le SDKMANAGER pour vérifier et accepter les licences buy installant des versions manquantes

enter image description here

0
répondu Aymen Boumyza 2018-06-01 00:11:32