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
echo y |
devant cette commande pour accepter automatiquement la licence. Utile lors de l'exécution sur une boîte CI sans tête :)~/.android/tools/android update sdk --no-ui --filter build-tools-25.0.0,android-25,extra-android-m2repository
parce que l'android
outil était localisé chez moi$ANDROID_SDK_PATH
sur 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
)Réponses:
AndroidSDK peut enfin accepter des licences.
É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
la source
C:\Users\x1\AppData\Local\Android\sdk\tools\android
il a ouvert une interface graphique, puis a disparu, puis cliquez sur "Accepter les droits" dans une nouvelle boîte de dialogue qui apparaît.yes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses
J'ai rencontré cela avec l'
alpha5
aperçu.Jake Wharton m'a fait remarquer que vous pouvez actuellement utiliser
pour recréer le
$ANDROID_HOME/license
dossier 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 :)
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'
android
outil, mais il m'a été signalé que c'était le gestionnaire de SDK dans AS qui crée le/licenses
dossier.Je suppose que les outils officiels ne voudraient pas sauter cette étape pour des raisons juridiques.
Relire les notes de version qu'il énonce
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 ...
la source
mkdir -p
place de|| true
.echo
:echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> "${ANDROID_HOME}/licenses/android-sdk-license"
. Mais je pense que votre problème se cache ailleurs.Pour le dernier Android Studio (2.3), la meilleure façon de mettre à jour / accepter toutes les licences est d'exécuter:
vous devrez peut-être toujours copier les fichiers de licence vers d'autres emplacements en fonction de votre configuration.
la source
tools/bin/sdkmanager --licenses
yes
cette commande pour les systèmes de construction automatisés? Vous n'aurez pas toujours accès à la console interactive à ces machines, donc appuyery
physiquement sur le clavier ne fonctionnera pas.cd $ANDROID_HOME
avant d'exécuter cette commandePour le nouvel
sdkmanager
utilitaire: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.
la source
up-to-date
réponse. Il semble--licenses
qu'il n'existe plus. Remarque: pour voir la liste des versions possibles qui peuvent être fournies:$ANDROID_HOME/tools/bin/sdkmanager --list
yes | android-sdk-linux/tools/bin/sdkmanager --licenses || true
dans mon CI.Si vous utilisez Jenkins, vous pouvez utiliser le script bash suivant comme première étape du processus de génération:
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é.
la source
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
Ajustez ensuite votre commande comme suit:
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!)
la source
android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repository
l'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 pluginscela a résolu mon erreur
la source
yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"
fait la même chose.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, puisyes | sdkmanager --licenses
qui accepte de nouvelles licences non acceptées auparavantN'oubliez pas: exécutez ces virgules avec le même utilisateur qui le
jenkins
fait. Dans notre Debian, l'utilisateur Jenkins est justejenkins
. En d'autres termes: le faire commeroot
créera les licences acceptées commeroot
, 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"
la source
L'
android
outil est obsolète et vous devez utiliser le à lasdkmanager
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 commandefonctionne 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.Si cela ne fonctionne pas, vous pouvez plutôt utiliser l'encodage base64.
Alors pour découvrir ma licence:
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-lebase64
.Ensuite, vous pouvez utiliser
base64 -d
recréer le fichier exactement.Vous pouvez vérifier si le fichier écrit correspond à ce qui est attendu en exécutant un sha1sum dessus.
la source
si vous exécutez
yes | sdkmanager --licenses
, nous imprimons le contenu de$ANDROID_HOME/licenses/android-sdk-license
,nous obtiendrons ceci
Pour GitLab CI, pour accepter les licences Android SDK Build-Tools 26.0.2, vous devez exécuter ce
la source
$ANDROID_HOME/licenses/android-sdk-license
est-ce prévu? c'est à dire. en annexeAndroid SDK Build-Tools 26.02
ajouté , a ajouté une nouvelle chaîne de licence sha1Build-Tools 26.0.2
et que notre version s'est rompue. Ma solution finale était simplement de le faireyes | sdkmanager --licenses
. Pasecho
besoin et c'est une preuve d'avenir.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:
lors de l'exécution des différentes commandes qui ont été suggérées pour les installer.
La solution est d'ajouter
--all
: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.
la source
25.0.1
.Si vous utilisez,
tools/bin/sdkmanager --licenses
vous devez toujours avoir une interaction humaine. J'ai du mal à utiliser mon gitlab CI. Voici ma solution:echo y
dira oui s'il y a une question, mais vous devez faire une ligne par paquet installela source
Vous pouvez également simplement exécuter:
Et sous Windows, exécutez:
la source
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
la source
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.
la source
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
wget
pour 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.la source
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/licenses
celui 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_HOME
pour pointer vers l'endroit où votre SDK est installé.la source
cd $ANDROID_HOME/tools/bin yes | ./sdkmanager --update
ou
yes | $ANDROID_HOME/tools/bin/sdkmanager --update
la source
pour Windows, ouvrez cmd et entrez dans le
bin
répertoire en exécutant la commande:puis exécutez la
sdkmanager --licenses
commande, il demande d'accepter les licences.la source
Error: Unknown argument --licenses
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:
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
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
la source
Copiez l'intégralité du répertoire licences / et collez-le dans le répertoire d'accueil du SDK Android sur la machine sur laquelle vous souhaitez créer vos projets.
https://developer.android.com/studio/intro/update.html#download-with-gradle
cela a résolu le problème pour moi
la source
Dans Windows PowerShell, vous pouvez faire
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
la source
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
apt
avecapt install android-sdk adb
. Et Cordova appelait les fichiers installés viaapt
au lieu des fichiers dans mon répertoire personnel.Cela a fonctionné une fois que j'ai changé le chemin vers le SDK dans bash:
Ensuite , je l' ai enlevé les fichiers système qui ont été ne sont plus utilisés:
apt remove android-sdk adb
.la source
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 --update
accords reviennent, doncyes |
est apparu deux fois.la source
Vous pouvez accepter toutes les licences en exécutant la commande suivante:
Cela vous demandera à travers chaque licence que vous n'avez pas encore acceptée et vous pouvez simplement entrer
y
pour accepter chacune d'elles.la source
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
la source
Ce chemin a été modifié dans les versions récentes.
./sdkmanager
est maintenant/Library/Android/sdk/cmdline-tools/latest/bin
et puis juste fairela source
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
tools
dossier présentLibrary/Android/sdk.
(j'utilise Android 3.6.3 sur Mac OS 10.14.4)Les étapes ci-dessous m'ont aidé à surmonter l'erreur de problème de licence:
Android Studio
cmd + shift + A
. Cela ouvreActions
une fenêtre pop-up.SDK Manager
et appuyez sur Entrée pour ouvrir.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)Apply
bouton. Cela installera le SDK correspondant.la source
je cours
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:
Lors de l'installation des packages, cochez la case accepter la licence => peut résoudre le problème.
la source
Sur Mac OSX, accédez au
sdk/tools/bin
Exécutez ensuite
./sdkmanager --licenses
et acceptez toutes les licences.la source