Je souhaite configurer l'environnement de développement 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 avoir extrait le fichier, exécutez
tools/android update sdk --no-ui
Cependant, son exécution est trop lente
Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xml
Le résultat est que rien dans les outils de construction de dossier, et je veux, n'est aapt et apkbuilder, car je veux construire apk à partir de la ligne de commande sans ant.
la source
--all
option dans les conseils officiels . Je vous remercie.echo "yes"
peut être raccourciecho "y"
, mais cela ne fonctionne pas dans tous les cas de toute façon. Dans certains cas, vous pouvez obtenir plusieurs invites de licence y / n, selon le filtre et les packages spécifiques.echo "y"
répondra uniquement à la première invite, mais pas au reste. J'essaie de le faire fonctionner avec layes
commande sans succès jusqu'à présent.Comme mentionné dans d'autres réponses, vous pouvez utiliser l'
--filter
option pour limiter les packages installés:android update sdk --filter ...
Les autres réponses ne mentionnent pas que vous pouvez utiliser des identificateurs de chaîne constants au lieu d'index (qui changeront) pour les options de filtre. Cela est utile pour les installations sans assistance ou par script. Homme pour
--filter
option:android list sdk --all --extended
:Ensuite, vous pouvez utiliser les ID de chaîne comme options de filtre pour spécifier précisément les versions que vous souhaitez:
android update sdk --filter tools,platform-tools,build-tools-19.0.3
etcla source
--extended
option, indiquant clairement ce qu'il faut installer pour les scripts CI.android update
nécessitera également l'--all
option, sinon l'aide à l'utilisation s'affiche. Par exemple:android update sdk --no-ui --all --filter build-tools-21.1.0
(et +1 pour l'--extended
option qui vous permet de voir les alias commebuild-tools-21.1.0
)--filter
et--extended
?--extended
option pour pouvoir écrire un script et l'utiliser dans mon serveur d'intégration continue où il peut actualiser les ressources sdk lui-même. Bon conseil!La version 25.2.3 (et supérieure) du
Android SDK Tools
package contient un nouvel outil - sdkmanager - qui simplifie cette tâche d'installation des outils de construction à partir de la ligne de commande.Il se trouve dans le
android_sdk/tools/bin
dossier.Utilisation (à partir de la documentation ):
Exemple d'utilisation (sur mon Mac):
Vous pouvez également spécifier diverses options , par exemple pour forcer toutes les connexions à utiliser HTTP (
--no_https
), ou pour utiliser le serveur proxy (--proxy_host=address
et--proxy_port=port
).Pour vérifier les options disponibles, utilisez l'
--help
indicateur. Sur ma machine (Mac), la sortie est la suivante:la source
Warning: Unknown argument --package_file
?--package_file=packages.txt
.ADB Build-Tools ne sera pas téléchargé automatiquement, par la commande android update sdk --no-ui
Donc, pour installer le type Buil-Tool (dans la console):
N'oubliez pas le numéro qui est répertorié avant l'élément et exécutez ce qui suit:
les commandes doivent être saisies dans / YourFolder / android-sdk-linux / tools
Aussi pour le dossier distant (serveur ouvert par ssh par exemple) tapez:
Pour une liste simple des packages ADB, saisissez dans le terminal:
pour installer tous les packages:
Ou avec des filtres (la virgule est le séparateur):
la source
Ce Dockerfile était une excellente source d'informations que j'ai rencontrée en essayant d'installer tout le SDK Android lié à la ligne de commande . À l'intérieur du Dockerfile, vous pouvez voir que l'auteur exécute une seule commande à installer
platform tools
etbuild tools
sans aucune autre interaction. Dans le cas où l'OP aurait avancé, la commande serait adaptée pour:la source
--all
drapeauJ'ai juste eu beaucoup de temps à installer les dépendances sdk android via la ligne de commande et comme la documentation fournie avec les outils et en ligne fait cruellement défaut, j'ai pensé publier ce que j'ai découvert ici.
Je travaille avec
android sdk r24.4.1
pourlinux
. Il existe deux commandes que vous pouvez exécuter pour répertorier les packages disponibles:android list sdk
et le plus exhaustif:
android list sdk --all
Les numéros de package pour des packages spécifiques diffèrent pour chaque commande ci-dessus! Par exemple, le premier répertorie le package en
API 23.1 revision 3
tant que package#3
et le second le répertorie en tant que#29
.Maintenant, il existe deux façons différentes d'installer à l'aide de 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 package # comme paramètre, quel numéro de package utilisez-vous? Après beaucoup de recherches en ligne et d'essais et d'erreurs, j'ai découvert que
android update sdk --no-ui --filter
utilise les numéros de package deandroid list sdk
et
android update sdk -u -a -t
utilise les numéros de package deandroid 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.
la source
-a
est la version courte de--all
, c'est pourquoi il utilise ce numéro de package. (-u
est l'abréviation de--no-ui
et-t
est l'abréviation de--filter
.)usage()
texte à jour avec la réalité.La plupart des réponses semblent ignorer le fait que vous devrez peut-être exécuter la mise à jour dans un environnement sans tête sans droits de superutilisateur, ce qui signifie que le script doit répondre à toutes les
y/n
automatiquement invites de licence.Voici l'exemple qui fait l'affaire.
Peu importe le nombre d'invites que vous obtenez, toutes ces réponses recevront une réponse. Cette
while/sleep
boucle ressemble à une simulation de la commande yes , et en fait, c'est presque le cas . Le problème,yes
c'est qu'il inonde stdout'y'
et il n'y a pratiquement aucun délai entre l'envoi de ces caractères et la version avec laquelle je devais faire face n'avait aucune option de timeout d'aucune sorte. Il "polluera" la sortie standard et le script échouera en se plaignant d'une entrée incorrecte. La solution est de mettre un délai entre l'envoi'y'
vers stdout, et c'est exactement ce que fait lewhile/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 qu'un 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é.
la source
Si tu as
sdkmanager
installé (j'utilise MAC)courir
sdkmanager --list
pour répertorier les packages disponibles.Si vous souhaitez installer des outils de génération, copiez la version préférée de la liste des packages disponibles.
Pour installer la version préférée, exécutez
la source
Oui, j'ai eu le même problème. Certains téléchargements de fichiers sont extrêmement lents (ou du moins ils l'ont été au cours des deux derniers jours). Si vous voulez tout télécharger, vous ne pouvez pas faire grand-chose à ce sujet.
L'avez-vous laissé fonctionner?
Une chose que vous pouvez faire est de filtrer les packages en cours de téléchargement à l'aide du
-t
commutateur.Par exemple:
Lorsque j'ai essayé cela l'autre jour, j'ai installé la version 18.0.0 des outils de construction. Pour une raison quelconque, la dernière version 18.0.1 n'est pas incluse par ce filtre et la seule façon de l'obtenir était de tout installer avec le
--all
commutateur.la source
Je préfère mettre un script qui installe mes dépendances
Quelque chose comme:
https://github.com/caipivara/android-scripts/blob/master/install-android-dependencies.sh
la source
Je viens d'avoir ce problème, j'ai donc finalement écrit une solution sale bash 1 ligne en lisant et en analysant la liste des outils disponibles:
la source
Inspiré des réponses de @ i4niac & @ Aurélien Lambert, voici ce que j'ai trouvé
Explication
android list sdk --all
commande (Ignorer les packages obsolètes).la source
Téléchargez le SDK Android depuis developer.android.com (il s'agit actuellement d'un fichier de 149 Mo pour le système d'exploitation Windows). Il est à noter qu'Android a supprimé l'interface graphique de sdkmanager mais a une version en ligne de commande de sdkmanager dans le dossier bin qui se trouve à l'intérieur du dossier tools.
sdkmanager
cliquez sur Entrée.sdkmanager
(espace), double trait d'union (--
), type listsdkmanager --list
(cela répertorie tous les packages dans le gestionnaire du SDK)Pour plus de référence, suivez le document officiel ici
J'espère que ça aide. :)
la source
Si vous n'avez pas besoin d'Android Studio, vous pouvez télécharger les outils de ligne de commande Android de base de developer.android.com dans la section Outils de ligne de commande uniquement .
de CLI, il devrait être comme:
ou
Après cela, décompressez l'archive dans le dossier cible
Et maintenant, nous pouvons installer tout ce dont vous avez besoin ...
Vous pouvez obtenir une liste complète des packages à l'aide de la commande
./tools/bin/sdkmanager --list
Certains packages nécessitent l'acceptation du contrat de licence. vous pouvez l'accepter de manière interactive ou simplement passer "y" au flux d'entrée, comme ceci (deux accords au cas où):
Et bien sûr, pour votre commodité, vous pouvez exporter des variables telles que ANDROID_HOME ou ANDROID_SDK_ROOT (y compris en le faisant dans ~ / .profile ou ~ / .bash_profile) ou patcher la variable PATH - tout cela est à votre discrétion.
Exemple de script:
Exigences: curl (ou wget) et décompressez
Dépannage:
si vous voyez
Warning: Could not create settings
, vous devez avoir letools
répertoire dans lecmdline-tools
répertoire à l'intérieur de ANDROID_HOME (créez-le si nécessaire avec ce nom exact) voir les outils de ligne de commande Android sdkmanager affiche toujours: Avertissement: impossible de créer des paramètresla source
Les outils de construction ne pouvaient pas être téléchargés automatiquement par défaut, comme l'a dit Nate dans https://stackoverflow.com/a/19416222/1104031 message .
Mais j'ai écrit un petit outil qui fait tout pour toi
J'ai utilisé l'outil "expect" comme danb dans le post https://stackoverflow.com/a/17863931/1104031 . Vous avez seulement besoin android-sdk et
python27
,expect
.Ce script installera tous les outils de construction, tous les sdks et tout ce dont vous avez besoin pour une construction automatisée:
la source
echo "yes" | ./android update sdk --no-https --no-ui --filter 1,6
?Comme indiqué dans d'autres réponses, les outils de génération nécessitent que l'
--all
indicateur soit installé. Vous pouvez également utiliser un-t
indicateur de filtre pour éviter d'installer TOUS les packages, mais il n'y a aucun moyen de filtrer tous les outils de génération.Il existe déjà des demandes de fonctionnalités pour ces deux points dans le traqueur de bogues AOSP. N'hésitez pas à voter pour eux, cela pourrait les réaliser un jour:
la source
J'ai essayé cela pour tout mettre à jour, et cela a fonctionné!
la source
Essayer
1. Liste de tous les packages
2. Installez les packages à l'aide de la commande suivante
la source
mise à jour android sdk
Cette commande mettra à jour et installera toutes les dernières versions des outils SDK, Build Tools et SDK platform tools.
C'est du travail pour moi.
la source