Comment installer les outils de construction SDK Android sur la ligne de commande?

je veux configurer L'environnement Dev Android à partir de la ligne de commande, et rencontrer le problème suivant:

wget http://dl.google.com/android/android-sdk_r22.0.5-linux.tgz

après extraire le fichier, Lancez

tools/android update sdk --no-ui

cependant, il est trop lent à courir

Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xml

le résultat est que rien dans les outils de construction de dossiers, et je veux est aapt et apkbuilder, puisque je veux construire apk à partir de ligne de commande sans ant.

270
demandé sur Vertexwahn 2013-07-31 10:50:36

18 réponses

par défaut, le gestionnaire SDK de la ligne de commande n'inclut pas les outils de construction dans la liste. Ils sont dans la catégorie" Obsolète". Pour voir tous les téléchargements disponibles, utilisez

android list sdk --all

et ensuite pour obtenir un des paquets de cette liste à partir de la ligne de commande, utilisez:

android update sdk -u -a -t <package no.>

où-u signifie --no-ui,- A signifie --all et-t signifie --filter.

si vous devez installer plusieurs paquets, faites:

android update sdk -u -a -t 1,2,3,4,..,n 

où 1,2,..,n est le numéro du paquet indiqué avec la commande list au-dessus de

466
répondu Nate 2016-08-24 00:54:24

comme mentionné dans d'autres réponses, vous pouvez utiliser l'option --filter pour limiter les paquets installés:

android update sdk --filter ...

les autres réponses ne mentionnent pas que vous pouvez utiliser des identificateurs à chaîne constante au lieu des index (qui changeront) pour les options de filtre. Ceci est utile pour les installations non surveillées ou scriptées. Homme pour --filter option:

... Cette option accepte également les identificateurs retournés par liste des sdk --étendu".

android list sdk --all --extended :

Packages available for installation or update: 97
----------
id: 1 or "tools"
     Type: Tool
     Desc: Android SDK Tools, revision 22.6.2
----------
id: 2 or "platform-tools"
     Type: PlatformTool
     Desc: Android SDK Platform-tools, revision 19.0.1
----------
id: 3 or "build-tools-19.0.3"
     Type: BuildTool
     Desc: Android SDK Build-tools, revision 19.0.3

alors vous pouvez utiliser les ID de chaîne comme options de filtre pour spécifier précisément les versions que vous voulez:

android update sdk --filter tools,platform-tools,build-tools-19.0.3 etc

137
répondu robd 2014-04-21 11:30:35

la Version 25.2.3 (et supérieure) du paquet Android SDK Tools contient un nouvel outil - sdkmanager - qui simplifie cette tâche d'installation de build-tools à partir de la ligne de commande.

Il est situé dans le dossier android_sdk/tools/bin .

"1519190920 d'Utilisation" (de documentation ):

sdkmanager packages [options]

l'argument packages est un chemin de style SDK, enveloppé dans des guillemets (pour exemple, "build-tools;25.0.0" ou "platforms;android-25" ). Vous pouvez passer de colis multiples chemins, séparés par un espace, mais ils doivent chaque être enveloppés dans leurs propres citations.

exemple d'utilisation (sur mon Mac):

alex@mbpro:~/sdk/tools/bin$ ls ../../build-tools/  
25.0.0/   
alex@mbpro:~/sdk/tools/bin$ ./sdkmanager "build-tools;25.0.2"  
done   
alex@mbpro:~/sdk/tools/bin$ ls ../../build-tools/  
25.0.0/ 25.0.2/

vous pouvez également spécifier diverses options , par exemple pour forcer toutes les connexions à utiliser HTTP ( --no_https ), ou pour utiliser un serveur mandataire ( --proxy_host=address et --proxy_port=port ).

pour vérifier les options disponibles, utilisez le drapeau --help . Sur ma machine (Mac), la sortie est comme suit:

alex@mbpro:~/sdk/tools/bin$ ./sdkmanager --help
Usage: 
  sdkmanager [--uninstall] [<common args>] \
    [--package_file <package-file>] [<packages>...]
  sdkmanager --update [<common args>]
  sdkmanager --list [<common args>]

In its first form, installs, or uninstalls, or updates packages.
    <package> is a sdk-style path (e.g. "build-tools;23.0.0" or 
             "platforms;android-23").
    <package-file> is a text file where each line is a sdk-style path
                   of a package to install or uninstall.
    Multiple --package_file arguments may be specified in combination
     with explicit paths.
In its second form (with --update), currently installed packages are
    updated to the latest version.
In its third form, all installed and available packages are printed out.

Common Arguments:
    --sdk_root=<sdkRootPath>: Use the specified SDK root instead of the SDK containing this tool
    --channel=<channelId>: Include packages in channels up to <channelId>.
                           Common channels are:
                           0 (Stable), 1 (Beta), 2 (Dev), and 3 (Canary).

    --include_obsolete: With --list, show obsolete packages in the
                        package listing. With --update, update obsolete
                        packages as well as non-obsolete.
    --no_https: Force all connections to use http rather than https.
    --proxy=<http | socks>: Connect via a proxy of the given type.
    --proxy_host=<IP or DNS address>: IP or DNS address of the proxy to use.
    --proxy_port=<port #>: Proxy port to connect to.

* If the env var REPO_OS_OVERRIDE is set to "windows",
  "macosx", or "linux", packages will be downloaded for that OS.
61
répondu Alex Lipov 2016-12-19 16:26:19

BAD Construire des Outils ne Seront Pas téléchargés automatiquement par la commande mise à jour android sdk --no-ui

Donc, pour l'installation de Buil-type d'Outil (dans la console):

android list sdk --all

se rappeler le numéro qui est énuméré avant l'élément et exécuter ce qui suit:

android update sdk -u --all --filter <number>

les commandes doivent être tapées dans /YourFolder/android-sdk-linux / tools

aussi pour dossier distant (serveur ouvert par ssh par exemple) tapez:

**./android** list sdk --all
**./android** update sdk -u --all --filter <number>

pour la simple liste des colis ADB, indiquer le type dans le terminal:

android list sdk

pour installer tous les paquets:

android update sdk --no-ui

ou avec filtres (virgule est le séparateur):

android update sdk --no-ui --filter 3,5,8,14
54
répondu Flinbor 2014-06-10 13:49:46

une grande source d'information que je suis tombé en essayant d'installer tout Android SDK liés à partir de la ligne de commande, était ce Dockerfile. À l'intérieur du fichier Dockerfile, vous pouvez voir que l'auteur exécute une seule commande pour installer platform tools et build tools sans aucune autre interaction. Dans le cas où L'OP a mis en avant, la commande serait adaptée à:

echo y | $ANDROID_HOME/tools/android update sdk --all --filter build-tools-21.1.0 --no-ui
32
répondu geoand 2015-06-17 15:19:03

j'ai juste eu un enfer d'un moment obtenir des dépendances SDK android installé via la ligne de commande et depuis la documentation qui vient avec les outils et en ligne sont tristement manquant, j'ai pensé que je posterais ce que j'ai découvert ici.

je travaille avec android sdk r24.4.1 pour linux . Il y a deux commandes que vous pouvez exécuter pour lister les paquets disponibles:

android list sdk

et la plus exhaustive:

android list sdk --all

les numéros de paquets pour des paquets spécifiques diffèrent pour chaque commande ci-dessus! Par exemple, le premier liste le paquet API 23.1 revision 3 comme paquet #3 et le second le liste comme #29 .

maintenant, il y a deux façons différentes d'installer en utilisant la commande android.

tools/android update sdk --no-ui --filter <package number>

et

tools/android update sdk -u -a -t <package number>

étant donné que les commandes d'installation peuvent chacune prendre le paquet # comme paramètre, quel numéro de paquet utilisez-vous? Après beaucoup de recherche en ligne et d'essai et d'erreur, j'ai découvert que

android update sdk --no-ui --filter utilise les numéros de colis de android list sdk

et

android update sdk -u -a -t utilise les numéros de colis de android list sdk --all

en d'autres termes-pour installer API 23.1 revision 3 vous pouvez faire soit:

android update sdk --no-ui --filter 3

ou

android update sdk -u -a -t 29

fou, mais ça marche.

21
répondu lps 2016-08-23 18:21:44

la plupart des réponses semblent ignorer le fait que vous pourriez avoir besoin d'exécuter la mise à jour dans un environnement sans tête sans droits d'utilisateur, ce qui signifie que le script doit répondre à toutes les invites de licence y/n automatiquement.

Voici l'exemple qui fait le tour.

FILTER=tool,platform,android-20,build-tools-20.0.0,android-19,android-19.0.1

( sleep 5 && while [ 1 ]; do sleep 1; echo y; done ) \
    | android update sdk --no-ui --all \
    --filter ${FILTER}

peu importe le nombre de messages que vous recevez, tous ceux-là seront répondus. Cette boucle while/sleep ressemble à une simulation du Oui de commande, et en fait, c'est bien presque . Le problème avec yes est qu'il inonde stdout avec 'y' et il n'y a pratiquement aucun délai entre l'envoi de ces caractères et la version que j'ai eu à traiter n'avait aucune option de timeout de quelque nature que ce soit. Il "polluera" stdout et le script échouera en se plaignant d'une entrée incorrecte. La solution est de mettre un délai entre l'envoi de 'y' à stdout, et c'est exactement ce que fait while/sleep combo.

expect n'est pas disponible par défaut sur certaines distributions linux et je n'avais aucun moyen de l'installer dans le cadre de mes scripts CI, donc j'ai dû utiliser la solution la plus générique et rien ne peut être plus générique que le simple script bash, Non?

en fait, j'ai blogué à ce sujet ( NSBogan ), consultez-le pour plus de détails ici si vous êtes intéressé.

20
répondu i4niac 2015-08-09 02:50:46

cependant, il est trop lent à courir

Oui, j'ai eu le même problème. Certains téléchargements de fichiers sont extrêmement lents (ou du moins ont été effectués au cours des derniers jours). Si vous voulez tout TÉLÉCHARGER, il n'y a pas grand-chose que vous pouvez faire à ce sujet.

le résultat est que rien dans les outils de construction de dossiers, et je veux est aapt et apkbuilder, puisque je veux construire apk à partir de ligne de commande sans fourmi.

Avez-vous jusqu'au bout?

une chose que vous pouvez faire est de filtrer les paquets qui sont téléchargés en utilisant le commutateur -t .

par exemple:

tools/android update sdk --no-ui -t platform-tool

quand j'ai essayé cela l'autre jour, j'ai eu la version 18.0.0 des outils de construction installés. Pour certaines raisons, la dernière version 18.0.1 n'est pas incluse dans ce filtre et la seule façon de l'obtenir était d'installer tout avec le commutateur --all .

8
répondu Dan Dyer 2013-08-01 20:42:14

je viens d'avoir ce problème, donc j'ai finalement écrit une 1 ligne bash solution sale en lisant et en analysant la liste des outils disponibles:

 tools/android update sdk -u -t $(android list sdk | grep 'Android SDK Build-tools' | sed 's/ *\([0-9]\+\)\-.*//')
4
répondu Aurélien Lambert 2015-01-16 10:48:17

inspiré des réponses de @i4niac & @Aurélien Lambert, c'est ce que j'ai trouvé""

csv_update_numbers=$(./android list sdk --all | grep 'Android SDK Build-tools' | grep -v 'Obsolete' | sed 's/\(.*\)\- A.*//'|sed '/^$/d'|sed -e 's/^[ \t]*//'| tr '\n' ',')
csv_update_numbers_without_trailing_comma=${csv_update_numbers%?}

( sleep 5 && while [ 1 ]; do sleep 1; echo y; done ) \
    | ./android update sdk --all -u -t $csv_update_numbers_without_trailing_comma

explication

  • obtenez une liste de Nombres séparés par des virgules qui sont les index des paquets d'outils de construction dans le résultat de la commande android list sdk --all (ignorant les paquets obsolètes).
  • continuer à lancer des y au terminal toutes les quelques millisecondes pour accepter les licences.
4
répondu Vinay Wadhwa 2016-03-28 12:12:32

si vous avez sdkmanager installé (J'utilise MAC)

exécuter sdkmanager --list à la liste des packages disponibles.

si vous voulez installer des outils de compilation, copiez la version préférée à partir de la liste des paquets disponibles.

pour installer la version préférée, Lancez

sdkmanager "build-tools;27.0.3"
4
répondu Lasithds 2018-01-05 05:44:50

je préfère mettre un script qui installe mes dépendances

quelque chose comme:

#!/usr/bin/env bash
#
# Install JUST the required dependencies for the project.
# May be used for ci or other team members.
#

for I in android-25 \
         build-tools-25.0.2  \
         tool \
         extra-android-m2repository \
         extra-android-support \
         extra-google-google_play_services \
         extra-google-m2repository;

 do echo y | android update sdk --no-ui --all --filter $I ; done

https://github.com/caipivara/android-scripts/blob/master/install-android-dependencies.sh

3
répondu Caipivara 2017-01-31 19:49:16

construire des outils ne pouvait pas être téléchargé automatiquement par défaut comme Nate dit dans https://stackoverflow.com/a/19416222/1104031 post.

Mais j'ai écrit petit outil qui font tout pour vous

j'ai utilisé" expect "outil comme danb dans https://stackoverflow.com/a/17863931/1104031 post. Vous avez seulement besoin d'android-sdk et python27 , expect .

ce script installera tous les outils de construction, tous les SDK et tout ce dont vous avez besoin pour une construction automatisée:

import subprocess,re,sys

w = subprocess.check_output(["android", "list", "sdk", "--all"])
lines = w.split("\n")
tools = filter(lambda x: "Build-tools" in x, lines)
filters = []
for tool in tools:
  m = re.search("^\s+([0-9]+)-", tool)
  tool_no = m.group(1)
  filters.append(tool_no)

if len(filters) == 0:
  raise Exception("Not found build tools")


filters.extend(['extra', 'platform', 'platform-tool', 'tool'])

filter = ",".join(filters)

expect= '''set timeout -1;
spawn android update sdk --no-ui --all --filter %s;
expect {
  "Do you accept the license" { exp_send "y\r" ; exp_continue }
  eof
}''' % (filter)

print expect

ret = subprocess.call(["expect", "-c", expect])
sys.exit(ret)
2
répondu Jacek Marchwicki 2017-05-23 11:55:01

comme indiqué dans d'autres réponses, les outils de construction nécessitent l'installation de l'indicateur --all . Vous devriez aussi utiliser un drapeau de filtre -t pour éviter d'installer tous les paquets, mais il n'y a aucun moyen de filtrer tous les outils de construction.

il y a déjà des requêtes de fonctionnalités pour ces deux points dans AOSP bug tracker. Hésitez pas à voter pour eux, cela pourrait les faire arriver un jour:

1
répondu Sylfo 2015-03-19 17:15:44

j'ai essayé cela pour mettre à jour tout, et ça a fonctionné!

echo y | $ANDROID_HOME/tools/android update sdk --no-ui
1
répondu Ting 2017-01-18 02:38:28

Essayer

1. énumérer tous les colis

android list sdk --all

2. installer les paquets en utilisant la commande suivante

android update sdk -u -a -t package1, package2, package3 //comma seperated packages obtained using list command 
0
répondu Pehlaj 2017-05-05 05:05:08

Télécharger android SDK à partir developer.android.com (c'est actuellement un fichier 149mb pour windows OS). Il est intéressant de noter que android a supprimé l'interface graphique sdkmanager mais a une version en ligne de commande du sdkmanager dans le dossier bin qui est situé à l'intérieur du dossier Outils.

  1. à l'intérieur du dossier bin, maintenez la touche Maj, cliquez avec le bouton droit de la souris, puis sélectionnez Ouvrir la ligne de commande ici. Maj+clic droit > > Ouvrir la ligne de commande ici.
  2. quand la ligne de commande s'ouvre, tapez sdkmanager cliquez sur entrer.
  3. ensuite exécuter type sdkmanager (space), double trait d'Union ( -- ), liste de type Sdkmanager --list (Liste de tous les paquets du gestionnaire SDK)
  4. Tapez sdkmanager (espace) puis le nom du paquet, appuyez sur Entrée. Par exemple. plate-forme sdkmanager-outils (appuyez sur Entrée) Il chargera l'accord de licence. Avec options (O/n). Entrez y pour accepter et il téléchargera le paquet que vous avez spécifié.

I espérons que cette aide. :)

0
répondu philemon uchechukwu 2018-08-15 12:05:46

mise à jour android sdk

cette commande mettra à jour et installera toutes les dernières versions des outils SDK, des outils de construction,des outils de plate-forme SDK.

C'est du travail pour moi.

-1
répondu Chirag 2016-04-27 07:10:21