212 votes

Existe-t-il un moyen d'automatiser l'installation du SDK Android ?

Je dois maintenant télécharger et installer le SDK Android et Gestionnaire AVD puis installer les API et les outils via l'interface utilisateur. Existe-t-il un moyen d'automatiser ce processus ?

1 votes

1 votes

4voto

Martin Trummer Points 402

Dans les nouvelles versions d'Android (par exemple , 25.2.5 ), nous devrions utiliser sdkmanager (au lieu du android ).

Exemple d'installation d'un paquet :

android-sdk/tools/bin/sdkmanager "extras;android;m2repository"

Commande permettant d'obtenir une liste de tous les paquets disponibles :

android-sdk/tools/bin/sdkmanager --verbose --list

Cette page web liste les liens de téléchargement des outils SDK :

Voici un lien vers un dépôt open-source docker-Android qui permet d'installer Android dans une image Docker.

Vous pouvez également trouver les réponses dans cette question de l'OS : Accepter automatiquement toutes les licences SDK utiles.

3voto

sschuberth Points 3073

En commençant par Plugin Android pour Gradle version 2.2.0, composants SDK manquants sont téléchargés automatiquement .

0voto

ayvazj Points 1005

J'ai créé un script ruby script qui télécharge et installe le SDK sans le demander, ce qui pourrait aider. https://github.com/ayvazj/andenv

0voto

Jokester Points 1757

Un script pour télécharger uniquement les paquets nécessaires, non {obsolete, source, emulator-image, doc} :

#!/bin/bash
set -e

# cd into where tools/android can be found
if [[ -d "$ANDROID_HOME" ]]; then
  cd "$ANDROID_HOME"
elif [[ -x "$(dirname "$0")/tools/android" ]]; then
  cd "$(dirname "$0")"
else
  echo "FAILED: Cannot find ANDROID_HOME/tools/android"
  exit 1
fi

android () {
  "$(dirname $0)/tools/android" "$@"
}

needed_packages () {
  android list sdk -u -s -e         \
    | grep '^id:'                   \
    | cut -d'"' -f2                 \
    | grep -v 'source'              \
    | grep -v 'sys-img'             \
    | grep -v 'doc'                 \
    | paste -d, -s -
}

main () {
  (while : ; do
  echo 'y'
  sleep 1
  done) | android update sdk -u -s -a -t "$(needed_packages)"
}

main

Certaines parties sont reprises d'autres réponses.

0voto

Peter Mounce Points 1603

Pour automatiser le sdkmanager.bat --licenses sous Windows (disons que vous installez via l'automatisation pour l'infrastructure de construction)... Ne l'exécutez pas. Ne perdez pas de temps à essayer de comprendre comment faire passer y dans ce domaine. J'ai essayé, mais j'ai échoué.

Lancez-le plutôt une fois, vous-même, et notez qu'il génère des fichiers dans C:\android\android-sdk\licenses (où vous exécutez C:\android\android-sdk\tools\bin\sdkmanager.bat - votre installation Root peut varier).

Prenez ces fichiers et placez-les à un endroit où vous pourrez les récupérer dans votre configuration automatisée scripts. Personnellement, Ansible est mon poison, donc :

# Note to future-us:
# These are magical files generated by running `c:/android/android-sdk/tools/bin/sdkmanager.bat --licenses`
# This, delightfully, is interactive, and wants to _actually_ read the keyboard buffer.
# That's reputedly possible via SendKeys. I elected to not try that.
# So, instead:
# 1) remote to an instance like a cave-dweller
# 2) run `c:/android/android-sdk/tools/bin/sdkmanager.bat --licenses` in a prompt.
# 3) _actually type_ `y` however many godforsaken times you need to.
# 4) meticulously harvest `c:/android/android-sdk/licenses/*` to this task.
#    (you don't need the newline that they thoughtfully put before the hash in each file).
- name: set up android licenses by hand
  win_lineinfile:
    path: c:/android/android-sdk/licenses/{{ item.name }}
    line: "{{ item.line }}"
    create: true
  with_items:
    - {name: "android-googletv-license", line: "SOME HASH"}
    - {name: "android-sdk-license", line: "SOME OTHER HASH"}
    ...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X