Accepter automatiquement toutes les licences SDK

441

Depuis les plugins Android Gradle 2.2-alpha4 :

Gradle tentera de télécharger les packages SDK manquants dont dépend un projet

Ce qui est incroyablement cool et était connu pour être un projet JakeWharton .

Mais, pour télécharger la bibliothèque du SDK, vous devez: accepter les accords de licence ou gradle vous indique:

Vous n'avez pas accepté les accords de licence des composants SDK suivants: [Android SDK Build-Tools 24, Android SDK Platform 24]. Avant de créer votre projet, vous devez accepter les accords de licence et terminer l'installation des composants manquants à l'aide d'Android Studio SDK Manager. Alternativement, pour savoir comment transférer les accords de licence d'un poste de travail à un autre, rendez-vous sur 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 a gradle build.

Je recherche une solution pour accepter automatiquement toutes les licences. Peut-être un script gradle? As tu des idées ?

Merci!

[ÉDITER]

Une solution consistait à exécuter:

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

Et installez-le manuellement, mais c'est la nouvelle fonctionnalité du gradle de le faire.

[EDIT 2]

Une meilleure solution consiste à utiliser le sdkmananger:

yes | sdkmanager --licenses
nsvir
la source
12
Vous pouvez également faire apparaître un echo y |devant cette commande pour accepter automatiquement la licence. Utile lors de l'exécution sur une boîte CI sans tête :)
Dori
3
Je devais le faire ~/.android/tools/android update sdk --no-ui --filter build-tools-25.0.0,android-25,extra-android-m2repositoryparce que l' androidoutil était localisé chez moi
Jacksonkr
7
sdkmanager --licenses ne fonctionne plus. J'ai utilisé --upgrade, ignoré les erreurs et cela a résolu les problèmes de licence.
jcsubmit
6
J'ai utilisé cette commande pour le script de construction de l'environnement CI avec un petit ajustement. J'ai ajouté --sdk_root = $ ANDROID_SDK_PATH. Le problème était que les licences étaient acceptées et non enregistrées dans le dossier racine du SDK Android. Commande finale: oui | sdkmanager --licenses --sdk_root = $ ANDROID_SDK_PATH (sans sudo)
adi9090
3
Assurez - vous d'avoir mis $ANDROID_SDK_PATHsur le chemin de la racine réelle où vous avez installé le kit de développement (ex: /opt/android-sdk), ou tout simplement mettre le chemin directement (: yes | sdkmanager --licenses --sdk_root=/opt/android-sdk)
gmc

Réponses:

365

AndroidSDK peut enfin accepter des licences.

yes | sdkmanager --licenses

ÉDITER:

comme indiqué dans les commentaires de @MoOx, sur macOS, vous pouvez faire

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

comme souligné dans les commentaires de @pho, @mikebridge et @ Noitidart sur Windows, vous pouvez faire

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

assurez-vous d'installer java avant

nsvir
la source
4
Sur Widows, je devais aller à Exécuter, puis C:\Users\x1\AppData\Local\Android\sdk\tools\androidil a ouvert une interface graphique, puis a disparu, puis cliquez sur "Accepter les droits" dans une nouvelle boîte de dialogue qui apparaît.
Noitidart
8
Cela ne fonctionne pas pour Linux. Il n'y a pas de fichier sdkmanager sous le répertoire tools / bin ou ailleurs. Peux-tu aider s'il te plait?
Mehmed Mert
36
Sur macOS, vous pouvez le faireyes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses
MoOx
5
Comment puis-je accepter automatiquement les licences de Gradle Wrapper?
Howard Swope
7
voter pour @Noitidart pour le chemin, mais cela n'a pas fonctionné, j'ai dû exécuter C: \ Users \ x1 \ AppData \ Local \ Android \ sdk \ tools \ bin \ sdkmanager --licenses à partir de l'invite de commande et appuyer sur "y "+ Entrez dans les invites
GaneshT
177

J'ai rencontré cela avec l' alpha5aperçu.

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 $ANDROID_HOME/licensedossier actuel sur votre machine. Cela aurait le même résultat que le processus décrit dans le lien du message d'erreur ( http://tools.android.com/tech-docs/new-build-system/license ).

Les hachages sont des sha1s du texte de la licence, qui j'imagine sera mis à jour périodiquement, donc ce code ne fonctionnera que si longtemps :)

Et installez-le manuellement, mais c'est la nouvelle fonctionnalité du gradle de le faire.

J'ai été surpris au début que cela n'ait pas fonctionné, même lorsque j'avais accepté les licences pour les composants nommés via l' androidoutil, mais il m'a été signalé que c'était le gestionnaire de SDK dans AS qui crée le /licensesdossier.

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

Relire les notes de version qu'il énonce

Téléchargement automatique du SDK: Gradle tentera de télécharger les packages SDK manquants dont dépend un projet.

Cela ne signifie pas que cela fonctionnera si vous n'avez pas encore installé les outils Android et avez déjà accepté la ou les dernières licences.

EDIT: Cela dit, cela ne fonctionne toujours pas sur ma boîte de test gubuntu jusqu'à ce que je relie le SDK à AS. CI fonctionne bien cependant - je ne sais pas quelle est la différence ...

Dori
la source
Il y a un petit problème dans la fonction sdkDownload concernant certains composants, par exemple, support-v4. Il mettra à jour les composants mais gradle ne verra pas de mise à jour jusqu'à la prochaine invocation. Une solution de contournement pour exécuter Gradle deux fois, une fois pour jeter: dépendances Gradle || true - code.google.com/p/android/issues/detail?id=212309
Joe Bowbeer
6
vous pouvez utiliser à la mkdir -pplace de || true.
agesgod
Ça marche merci pour ce petit problème, bon à savoir. Pour vérifier si votre chemin SDK est défini comme prévu: echo $ ANDROID_SDK
tryp
Dans mon environnement, ANDROID_SDK n'est pas défini, mais cela fonctionne avec ANDROID_HOME
Dimitri L.
5
@stack_ved: Je viens d' ajouter une autre echo: echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> "${ANDROID_HOME}/licenses/android-sdk-license". Mais je pense que votre problème se cache ailleurs.
Paul
133

Pour le dernier Android Studio (2.3), la meilleure façon de mettre à jour / accepter toutes les licences est d'exécuter:

cd $ANDROID_HOME
tools/bin/sdkmanager --licenses

vous devrez peut-être toujours copier les fichiers de licence vers d'autres emplacements en fonction de votre configuration.

bgies
la source
Cela semble être la meilleure façon de procéder et cela fonctionne également sur toutes les plates-formes, exécutez simplementtools/bin/sdkmanager --licenses
jnv
Si vous avez un ancien gestionnaire de SDK, les licences ne fonctionneront pas. Il est nécessaire de copier le dossier tools vers un autre emplacement puis d'utiliser --sdk_root = et de le pointer vers votre dossier sdk, vous pourrez alors mettre à jour les outils vers une version plus récente.
Mirek Michalak
pouvons-nous utiliser yescette commande pour les systèmes de construction automatisés? Vous n'aurez pas toujours accès à la console interactive à ces machines, donc appuyer yphysiquement sur le clavier ne fonctionnera pas.
void.pointer
Quelqu'un peut-il me guider comment mettre en œuvre cette solution? Vous devez ajouter cette ligne dans build.sh?
stack_ved
1
cela a fonctionné pour moi, mais je devais le faire cd $ANDROID_HOMEavant d'exécuter cette commande
Inus Saha
57

Pour le nouvel sdkmanagerutilitaire:

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

Il y a un peu de retard entre les deux, donc la commande peut se bloquer avec la licence affichée pendant un certain temps, mais elle ne nécessite aucune intervention humaine.

A. Rager
la source
Dans mon installation debian9, je n'ai qu'un sdkmanager.jar: android-sdk-linux / tools / lib / sdkmanager.jar et # java -jar /android-sdk-linux/tools/lib/sdkmanager.jar Erreur: la propriété du répertoire tools n'est pas défini, assurez-vous que vous exécutez Android
user3313834
1
Ceci est basé sur l'hypothèse que vous avez téléchargé les outils du SDK en tant qu'archive de Google et que vous les avez décompressés dans $ ANDROID_HOME
A. Rager
Cela semble être la meilleure up-to-dateréponse. Il semble --licensesqu'il n'existe plus. Remarque: pour voir la liste des versions possibles qui peuvent être fournies:$ANDROID_HOME/tools/bin/sdkmanager --list
Marinos An
2
Merci pour l'astuce. J'ai fini par utiliser yes | android-sdk-linux/tools/bin/sdkmanager --licenses || truedans mon CI.
iSWORD
es | $ ANDROID_HOME / tools / bin / sdkmanager "build-tools; 28.0.3" -> changer la version a fonctionné pour moi. Merci !
ishab acharya
43

Si vous utilisez Jenkins, vous pouvez utiliser le script bash suivant comme première étape du 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, car "oui" ne fonctionne pas correctement dans ce cas.

EDIT: Vous devez également ajouter le plugin "Installer les prérequis du projet Android" à l'étape de génération pour obtenir le bon $ ANDROID_HOME si vous utilisez le gestionnaire de SDK intégré.

corbeau
la source
J'ajoute votre ligne de code avant "cordova platform add android" dans ma build jenkins qui fonctionne sur Ubuntu mais obtient toujours l'erreur suivante: BUILD FAILED in 7s Error: / var / lib / jenkins / workspace / qa_global_php / platformes / android / gradlew : La commande a échoué avec le code de sortie 1 Sortie d'erreur: FAILURE: La construction a échoué avec une exception. * Ce qui n'a pas fonctionné: Un problème est survenu lors de la configuration du projet racine 'android'. > Vous n'avez pas accepté les accords de licence des composants SDK suivants:
Ashish Karpe
[Outils de build du SDK Android 26.0.2]. Avant de créer votre projet, vous devez accepter les accords de licence et terminer l'installation des composants manquants à l'aide d'Android Studio SDK Manager.
Ashish Karpe,
32

Malheureusement, la façon dont OP a été résolu à l'origine ne fonctionne pas toujours. Si vous trouvez du message d'erreur ce qui est votre construit en cours build-tools la version . Il se peut que ce soit une version supérieure des outils de build qui soit manquante. Dans ce cas, vous devez démarrer manuellement le SDK Manager et ajouter les outils de build et accepter la licence.

Selon les instructions OP, il ressemble à ceci.

$ ./gradlew build

 
Pour honorer les paramètres JVM de cette version, une nouvelle JVM sera bifurquée. Veuillez envisager d'utiliser le démon: https://docs.gradle.org/2.14.1/userguide/gradle_daemon.html.

ÉCHEC: la construction a échoué avec une exception.

* Qu'est ce qui ne s'est pas bien passé:
Un problème est survenu lors de la configuration du projet ': app'.
> Vous n'avez pas accepté les accords de licence des composants SDK suivants:
  [Android SDK Build-Tools 24.0.2].

...
ÉCHEC DE CONSTRUCTION

REMARQUE: 2017-04-16

L' androidoutil est désormais obsolète au profit du nouveau sdkmanager. Veuillez consulter la réponse de Joe Lawson et les articles suivants à partir de mars (2017) et au-delà.

Ajustez ensuite votre commande comme suit:

android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repository
Actualiser les sources:
  Récupération de https://dl.google.com/android/repository/addons_list-2.xml
  Valider XML
  Analyser XML
  Liste des modules complémentaires récupérée avec succès
  Actualiser les sources
  Récupération de l'URL: https://dl.google.com/android/repository/repository-11.xml
  Validez XML: https://dl.google.com/android/repository/repository-11.xml
  Analyser XML: https://dl.google.com/android/repository/repository-11.xml
...
Erreur: ignorer le filtre de package inconnu 'build-tools-24.0.2'
-------------------------------
Identifiant de licence: android-sdk-license-xxxxxxxx
Utilisé par: 
 - Plateforme SDK Android 7.0, API 24, révision 2
  - Référentiel de support Android, révision 39
-------------------------------

...

20 novembre 2015
Acceptez-vous la licence 'android-sdk-license-xxxxxxxx' [y / n]: y

Installation des archives:
  Préparation de l'installation des archives
  Téléchargement de la plate-forme SDK Android 7.0, API 24, révision 2
  Installation de la plate-forme SDK Android 7.0, API 24, révision 2
    Plate-forme SDK installée Android 7.0, API 24, révision 296%)
  Téléchargement du référentiel de support Android, révision 39
  Installation d'Android Support Repository, révision 39
    Référentiel de support Android installé, révision 3999%)
  Terminé. 2 packages installés.

L'exécution de nouveau, ne rend pas toujours Gradle heureux. L'acceptation manuelle est donc la seule solution jusqu'à ce que quelqu'un trouve quelque chose de mieux. (Je vous en prie!)

not2qubit
la source
1
android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repositoryl'exécution de cette invite de commande avec le droit d'administrateur a corrigé l'erreur. Je n'ai pas pu installer le gestionnaire de plugins
phonegap
32

cela a résolu mon erreur

echo yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"
Cristian Agudelo
la source
2
Pour enregistrer quelques caractères, yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"fait la même chose.
Flimzy
31

Nous avons trouvé le même problème lors de la construction du projet sur Jenkins. Avec buildToolsVersion '25.0.2', nous devons accepter les licences avant de construire. Dans notre cas, nous devions exécuter:

yes | sdkmanager --update qui accepte les licences pour le sdkmanager lui-même, puis

yes | sdkmanager --licenses qui accepte de nouvelles licences non acceptées auparavant

N'oubliez pas: exécutez ces virgules avec le même utilisateur qui le jenkinsfait. Dans notre Debian, l'utilisateur Jenkins est juste jenkins. En d'autres termes: le faire comme rootcréera les licences acceptées comme root, donc Jenkins ne les lira pas.

Au fait, nous avons trouvé sdkmanagerà /var/lib/jenkins/tools/android-sdk/tools/bin. Si le vôtre n'est pas là, trouvez-le avecfind / -name "sdkmanager"

Roc Boronat
la source
2
celui-ci a également résolu le problème dans mon cas (outils de construction 26.0.x), avec Jenkins dans Docker. Merci!
Giordano
1
Malheureusement, cela n'inclut pas la partie "automatiquement" de la question.
m0skit0
@ m0skit0 merci pour votre commentaire! J'ai mis à jour la question pour qu'elle corresponde à la fonction de la dernière version afin d'accepter automatiquement toutes les licences sans intervention humaine.
Roc Boronat
24

L' androidoutil est obsolète et vous devez utiliser le à la sdkmanagerplace. 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. Cela ne fonctionnera pas sur tous. Certaines installations du SDK s'attendent à ce que le fichier de licence se termine sans nouvelle ligne dans le fichier, essayez donc d'ajouter un -nà la commande echo.

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

Si cela ne fonctionne pas, vous pouvez plutôt utiliser l'encodage base64.

Alors 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 invitera à accepter la licence. Après l'avoir accepté, il le copiera ${ANDROID_HOME}/licenses/android-sdk-license. Pour vous assurer d'obtenir toujours exactement ce qui est écrit, utilisez-le base64.

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

Ensuite, vous pouvez utiliser base64 -drecréer le fichier exactement.

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

Vous pouvez vérifier si le fichier écrit correspond à ce qui est attendu en exécutant un sha1sum dessus.

$> sha1sum ${ANDROID_HOME}/licenses/android-sdk-license
da6b80c9c47b41c0bf7032938e7137a58a3dc249
Joe Lawson
la source
19

si vous exécutez yes | sdkmanager --licenses, nous imprimons le contenu de $ANDROID_HOME/licenses/android-sdk-license,

nous obtiendrons ceci

# 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
jk2K
la source
Votre deuxième écho va de même, $ANDROID_HOME/licenses/android-sdk-licenseest-ce prévu? c'est à dire. en annexe
Ryan R
1
@RyanR, oui, le deuxième écho est Android SDK Build-Tools 26.02ajouté , a ajouté une nouvelle chaîne de licence sha1
jk2K
J'utilise des pipelines bitbucket, mais le concept semble être le même qu'avec GitLab CI. Votre réponse m'a aidé à mieux comprendre l'ensemble du processus. Merci!
Ridcully
@Ridcully J'utilise également Bitbucket Pipelines et je me suis retrouvé ici lorsque nous avons effectué une mise à niveau vers Build-Tools 26.0.2et que notre version s'est rompue. Ma solution finale était simplement de le faire yes | sdkmanager --licenses. Pas echobesoin et c'est une preuve d'avenir.
Ryan R
@Ryan Vous voulez dire que je peux simplement ajouter «oui | sdkmanager --licenses 'au pipeline.yml? Ce serait génial!
Ridcully
16

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

 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"

De plus, si vous utilisez Linux 32 bits, tout ce qui suit après les outils de construction 23.0.1 est 64 bits uniquement , donc ne fonctionnera pas. Les utilisateurs 32 bits sont bloqués sur 23.0.1, la seule façon d'obtenir des outils de construction ultérieurs est de passer en 64 bits.

JosephH
la source
1
Ouais, les outils de build ont juste été heurtés 25.0.1.
not2qubit
1
Votre solution était la seule chose que j'ai pu trouver pour travailler sur une machine ubuntu 16 sans tête pour build-tools-25 et gradle 4
spartygw
14

Si vous utilisez, tools/bin/sdkmanager --licensesvous devez toujours avoir une interaction humaine. J'ai du mal à utiliser mon gitlab CI. Voici 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 s'il y a une question, mais vous devez faire une ligne par paquet installe

Thibaut Mottet
la source
Toujours d'actualité après plusieurs mois. Je vous remercie. Vous m'avez sauvé la journée :)
Prasanna Ramaswamy
Cela m'a été utile, en utilisant également GitLab
sebasira
13

Vous pouvez également simplement exécuter:

$ANDROID_HOME/tools/bin/sdkmanager --licenses

Et sous Windows, exécutez:

%ANDROID_HOME%/tools/bin/sdkmanager --licenses
r1si
la source
11

Pour un message d'erreur sur l'API SDK numéro 25:

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

ofir_aghai
la source
10

Ok POUR TOUTE PERSONNE AYANT CE PROBLÈME À PARTIR DE 2018. Les réponses ci-dessus ne fonctionnaient PAS du tout pour moi. Quel travail DID a ouvert le SDK Android - en cliquant sur le bouton TÉLÉCHARGER dans la barre d'outils et en sélectionnant les packages appropriés. Une fois le téléchargement terminé, il vous permettra d'accepter le contrat de licence.

entrez la description de l'image ici

user2967081
la source
7

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

IgorGanapolsky
la source
6

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'elles ont été écrites à un emplacement différent de $ANDROID_HOME/licensescelui où elles doivent être.

J'ai trouvé que la solution la plus simple était d'accepter les licences comme ceci:

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

Remarque: Cela suppose que vous avez défini ANDROID_HOMEpour pointer vers l'endroit où votre SDK est installé.

sksamuel
la source
6

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

ou

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

Jimmy Yin
la source
"Automatically"
m0skit0
6

pour Windows, ouvrez cmd et entrez dans le binrépertoire en exécutant la commande:

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

puis exécutez la sdkmanager --licensescommande, il demande d'accepter les licences.

Deepak Kumrawat
la source
1
Merci c'est ce que j'ai fait
mynameisjohnj
Je reçoisError: Unknown argument --licenses
deanwilliammills
4

J'ai enfin trouvé une solution sur Windows, pour avoir une véritable installation 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 consiste à créer un fichier file-y.txt avec plusieurs "y", un par ligne, et à utiliser

call sdkmanager --licenses < file-y.txt

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

moobyfr
la source
3

Dans Windows PowerShell, vous pouvez faire

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

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

Mark Johnson
la source
Encore une autre raison de ne pas utiliser Windows.
m0skit0
3

J'ai eu la même erreur lors de l'utilisation de Cordova.

Le problème était dû au fait que j'ai installé Android Sdk via Android Studio et aptavec apt install android-sdk adb. Et Cordova appelait les fichiers installés via aptau lieu des fichiers dans mon répertoire personnel.

Cela a fonctionné une fois que j'ai changé le chemin vers le SDK dans 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

Ensuite , je l' ai enlevé les fichiers système qui ont été ne sont plus utilisés: apt remove android-sdk adb.

AL
la source
3

Voici ma configuration Docker.
Vous pouvez suivre à partir d'un environnement Linux simple.

Notez cela yes |et les --licenses --sdk_root=${ANDROID_HOME}clauses.
Il semble que les sdkmanager --updateaccords reviennent, donc yes |est apparu deux fois.

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
la source
"Il semble que sdkmanager --update annule les accords, donc oui | est apparu deux fois." Wow, tu as raison. C'est très frustrant mais c'est une bonne trouvaille.
cephus
2

Vous pouvez accepter toutes les licences en exécutant la commande suivante:

 sdkmanager --licenses

Cela vous demandera à travers chaque licence que vous n'avez pas encore acceptée et vous pouvez simplement entrer ypour accepter chacune d'elles.

Manoj Shrestha
la source
"Automatically"
m0skit0
2

J'ai essayé toutes les commandes ci-dessus sur la machine Windows 10, mais la solution était d'utiliser le SDKMANAGER pour vérifier et accepter les licences acheter l'installation des versions manquantes

entrez la description de l'image ici

Aymen Boumaiza
la source
Aucune des commandes CMD n'a fonctionné pour moi, seulement cette solution. Merci
deanwilliammills
2

Ce chemin a été modifié dans les versions récentes. ./sdkmanagerest maintenant /Library/Android/sdk/cmdline-tools/latest/binet puis juste faire

./sdkmanager --licenses
Sukeesh
la source
2

Remarque: c'est uniquement pour les utilisateurs Mac

J'ai eu le même problème, mais aucune des réponses publiées n'a aidé car il n'y avait aucun toolsdossier présent Library/Android/sdk.(j'utilise Android 3.6.3 sur Mac OS 10.14.4)

capture d'écran d'erreur

Les étapes ci-dessous m'ont aidé à surmonter l'erreur de problème de licence:

  1. Ouvert Android Studio
  2. Appuyez sur cmd + shift + A. Cela ouvre Actionsune fenêtre pop-up.
  3. Recherchez SDK Manageret appuyez sur Entrée pour ouvrir.
  4. Cela ouvre une fenêtre contextuelle pour Android SDK. Sélectionnez une autre version d'Android en dehors de celle déjà installée. (Dans mon cas, Android 10.0 était déjà installé, j'ai donc sélectionné Android 9.0)
  5. Sélectionnez ensuite le Applybouton. Cela installera le SDK correspondant.

Solution

  1. Maintenant, exécutez votre application, elle devrait fonctionner sans aucune exception.

capture d'écran du succès

Jayprakash Dubey
la source
Hé, cela résout le mien dans Linuxmint 19.3
GaryP
1

je cours

#react-native run-android 

du terminal et a rencontré ce problème. Pour manuellement, accédez à Android Studio -> SDK Android -> Plateforme SDK Cliquez sur Afficher les détails des packages et vérifiez:

+ 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 packages, cochez la case accepter la licence => peut résoudre le problème.

Phuc Nguyen
la source
1

Sur Mac OSX, accédez au sdk/tools/bin

Exécutez ensuite ./sdkmanager --licenseset acceptez toutes les licences.

Micheal C Wallas
la source