Das Android SDK unter Ubuntu oder anderen Linuxen zu installieren ist nicht super-schwierig, aber auch nicht gerade wirklich leicht. Besonders wenn man das SDK nicht einfach nur in irgendeinen Ordner klatschen möchte, muss man etwas mehr Aufwand treiben. Es geht auch ohne, doch dann müssen die Pfade zu ddms oder adb von Hand in den $PATH eingetragen werden, oder man muss beim Aufruf der Programme immer den kompletten Pfad angeben. In den TeamBamf-Foren bin ich auf ein Skript gestoßen, dass einem praktisch die Ganze Arbeit abnimmt.
Das Skript wird auf github gehostet und kann auch der Anleitung im genannten Forum nach direkt aus dem Git heruntergeladen und ausgeführt werden. Mich „stört“ allerdings, dass neben dem Android SDK auch noch das NDK und die Entwicklungsumgebung Eclipse automatisch installiert werden.
Für Entwickler vielleicht ganz praktisch – wobei die zumindest Eclipse auch selber installieren können – doch wer einfach nur adb oder ddms für Dateitransfers oder Screenshots braucht, der kann sich das NDK und Elipse auch sparen. Von daher habe ich diese beiden Abschnitte rausgeworfen und das Skript auf meinen Webspace hochgestellt…
#!/bin/bash # # This script is designed to install the Android SDK, NDK, and Eclipse in # Linux Mint 11 and make it easier for people that want to develop for # Android using Linux. # Script written by @ArchDukeDoug with special thanks to @BoneyNicole, # @tabbwabb, and @animedbz16 for putting up with me and proofreading and/or # testing the script. # I can be reached at dougw@uab.edu, twitter, or linuxrandomly.blogspot.com # Script version: 1.0.5 # Changelog: 1.0.5 - Fixed the Android SDK search parameters to fit the new # naming scheme on http://developer.android.com/sdk # Edit by christoph Langner http://linuxundich.de # Removed installation von Android NDK and Eclipse i=$(cat /proc/$PPID/cmdline) if [[ $UID != 0 ]]; then echo "Please type sudo $0 $*to use this." exit 1 fi apt-get update #Download and install the Android SDK if [ ! -d "/usr/local/android-sdk" ]; then for a in $( wget -qO- http://developer.android.com/sdk/index.html | egrep -o "http://dl.google.com[^\"']*linux.tgz" ); do wget $a && tar --wildcards --no-anchored -xvzf android-sdk_*-linux.tgz; mv android-sdk-linux /usr/local/android-sdk; chmod 777 -R /usr/local/android-sdk; rm android-sdk_*-linux.tgz; done else echo "Android SDK already installed to /usr/local/android-sdk. Skipping." fi d=ia32-libs #Determine if there is a 32 or 64-bit operating system installed and then install ia32-libs if necessary. if [[ `getconf LONG_BIT` = "64" ]]; then echo "64-bit operating system detected. Checking to see if $d is installed." if [[ $(dpkg-query -f'${Status}' --show $d 2>/dev/null) = *\ installed ]]; then echo "$d already installed." else echo "Installing now..." apt-get --force-yes -y install $d fi else echo "32-bit operating system detected. Skipping." fi #Check if the ADB environment is set up. if grep -q /usr/local/android-sdk/platform-tools /etc/bash.bashrc; then echo "ADB environment already set up" else echo "export PATH=$PATH:/usr/local/android-sdk/platform-tools" >> /etc/bash.bashrc fi #Check if the ddms symlink is set up. if [ -f /bin/ddms ] then rm /bin/ddms; ln -s /usr/local/android-sdk/tools/ddms /bin/ddms else ln -s /usr/local/android-sdk/tools/ddms /bin/ddms fi #Create etc/udev/rules.d/99-android.rules file touch -f 99-android.rules echo "#Acer" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="0502", MODE="0666"" >> 99-android.rules echo "#ASUS" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="0b05", MODE="0666"" >> 99-android.rules echo "#Dell" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="413c", MODE="0666"" >> 99-android.rules echo "#Foxconn" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="0489", MODE="0666"" >> 99-android.rules echo "#Garmin-Asus" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="091E", MODE="0666"" >> 99-android.rules echo "#Google" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="18d1", MODE="0666"" >> 99-android.rules echo "#HTC" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"" >> 99-android.rules echo "#Huawei" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="12d1", MODE="0666"" >> 99-android.rules echo "#K-Touch" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="24e3", MODE="0666"" >> 99-android.rules echo "#KT Tech" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="2116", MODE="0666"" >> 99-android.rules echo "#Kyocera" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="0482", MODE="0666"" >> 99-android.rules echo "#Lenevo" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="17EF", MODE="0666"" >> 99-android.rules echo "#LG" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="1004", MODE="0666"" >> 99-android.rules echo "#Motorola" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="22b8", MODE="0666"" >> 99-android.rules echo "#NEC" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="0409", MODE="0666"" >> 99-android.rules echo "#Nook" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="2080", MODE="0666"" >> 99-android.rules echo "#Nvidia" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="0955", MODE="0666"" >> 99-android.rules echo "#OTGV" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="2257", MODE="0666"" >> 99-android.rules echo "#Pantech" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="10A9", MODE="0666"" >> 99-android.rules echo "#Philips" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="0471", MODE="0666"" >> 99-android.rules echo "#PMC-Sierra" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="04da", MODE="0666"" >> 99-android.rules echo "#Qualcomm" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="05c6", MODE="0666"" >> 99-android.rules echo "#SK Telesys" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="1f53", MODE="0666"" >> 99-android.rules echo "#Samsung" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="04e8", MODE="0666"" >> 99-android.rules echo "#Sharp" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="04dd", MODE="0666"" >> 99-android.rules echo "#Sony Ericsson" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="0fce", MODE="0666"" >> 99-android.rules echo "#Toshiba" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="0930", MODE="0666"" >> 99-android.rules echo "#ZTE" >> 99-android.rules echo "SUBSYSTEM=="usb", SYSFS{idVendor}=="19D2", MODE="0666"" >> 99-android.rules mv -f 99-android.rules /etc/udev/rules.d/ chmod a+r /etc/udev/rules.d/99-android.rules #Check if ADB is already installed if [ ! -f "/usr/local/android-sdk/platform-tools/adb" ]; then nohup /usr/local/android-sdk/tools/android update sdk > /dev/null 2>&1 & zenity --info --text="Please accept the licensing agreement for Android SDK Platform-tools to install the Android Debug Bridge." else echo "Android Debug Bridge already detected." fi exit 0
Das Skript lädt das SDK herunter, entpackt es nach /usr/local/android-sdk, installiert auf einem 64-Bit System die nötigen ia32-libs, fügt den Pfad zum SDK über die /etc/bash.bashrc zum $PATH hinzu und setzt Symlinks, so dass man direkt adb oder ddms aufrufen kann, ohne den kompletten Pfad zu tippen. Letztendlich gibt es noch einen Eintrag in /etc/udev/rules.d/99-android.rules, so dass beim Anstecken eines Android-Gerätes automatisch die richtigen Rechte gesetzt werden.
Wer keine Lust auf Copy&Paste hat, der kann das Skript über folgende Befehle herunterladen, die Rechte setzen und dann das SDK installieren. Nach ein paar Minuten ist das SDK dann einsatzbereit auf eurem Rechner.
$ wget http://linuxundich.de/static/android_sdk_installer.sh $ chmod +x android_sdk_installer.sh $ sudo ./android_sdk_installer.sh
Einzig am Ende der ganzen Aktion müsst ihr nochmal etwas per Hand machen. Von Haus aus ist so gut wie alles aus dem SDK ausgewählt. Möchtet ihr nur ddms oder asb haben, dann müsst ihr einfach nur die Android SDK Tools auswählen. Will man etwa ein Android 4.0 mal auf dem Desktop simulieren, dann die entsprechende SDK Platform noch dazu. Den Rest könnt ihr wieder abwählen.
Danach reicht es einfach in einem Terminal $ ddms
einzugeben und schon startet automatisch der ADB-Server und danach der Debugger. Vergesst natürlich nicht auf eurem Android-Gerät den Entwickler-Modus zu aktivieren, doch dann könnt ihr bequem und ohne Root-Rechte von jedem Androiden Screenshots machen.
Schick, Schick.
Momentan versuche ich tatsächlich die SDK und alles was dazu gehört zu installieren. Ich habe mir ein Android Smartphone Vodafone 858 besorgt, was ich überwiegend wegen meiner Arbeit geholt habe. Hatte es nämlich leid, meine private Telefonnummer, überall in DE und EU zu verteilen.
Mal schauen was mit dem Skript wird.
Danke und MfG
Hallo,
man muss zenity vor Ausführung des Skriptes installieren.
Stimmt, bringt Ubuntu Zenity nicht von Haus aus mit?
Hallo Christoph
Besten Dank fuer dein Skript, leider habe ich nur ein 32 Bit Szstem und da bricht die installation ab. Ist es moeglich, das Skript so yu korrigieren, das es auch bei mir funktionieren wuerde_
Besten Dank und einen guten Rutsch ins neue Jahr
Stephan
Hi Stephan, will sowieso noch was ändern. Ich schau mir das am Wochenende mal ann und melde mich dann wieder.
Grüße
Christoph
Ubuntu binrgt zenity wahrscheinlich mit, das gerade in Deutschland sehr verbreitete Kubuntu hingegen scheint es nicht per default zu installieren.
Ich hatte es lieber ohne chmod +x gelassen und dann per ’sudo sh android_sdk_installer.sh‘ gestartet – das geht nach hinten los, weil die dash (als Standard-Shell) die eckigen Klammern [[ nicht interpretiert. Ergo: ggf. als ’sudo bash android_sdk_installer.sh‘ aufrufen …
Ach so – Danke für das Skript!
Danke! Ein paar Sachen in dem Skript sehe ich allerdings nicht ein. Gut, dass ich’s natürlich nicht einfach blind ausgeführt habe.
Und die udev-Regeln passen übrigens nicht mehr. Es muss „ATTR{idVendor}“ statt wie bisher „SYSFS{idVendor}“ heißen.
siehe: https://bbs.archlinux.org/viewtopic.php?id=136834
Danke für den Hinweis, das muss ich heute Abend mal aktualisieren.
Grüße
Christoph
Hallo Christoph,
Danke für deine Anleitung!
Wenn ich ddms aufrufe, dann sehe ich mein Handy als „?????????“.
Anscheinend wird es nicht erkannt. Was könnte der Grund sein und wie stelle ich fest, ob mein Handy tatsächlich erkannt wird?
USB Debugging ist im Handy natürlich aktiviert.
Die Konsole schaut dann folgendermaßen aus:
Dann noch:
Und der Inhalt der /etc/udev/rules.d/99-android.rules:
Hoffe das hilft uns weiter!
Hab Folgendes:
in
/etc/udev/rules.d/99-android.rules
geschrieben und es ging plötzlich!Für das Kommandozeilen Tool adb gibt es neuerdings auch das Debian Paket android-tools-adb. Dieses einfach wie folgt installieren:
sudo apt-get install android-tools-adb
Dieses Paket erstellt leider die Datei 99-android.rules (noch) nicht.
Danke für das Skript 🙂
Mit einer gerade neu installierten Debian VM war ia32-libs nicht installierbar.
Folgender Artikel hat geholfen die benötigten Befehle zu finden (dpkg –add-architecture i386)
http://www.sysadminslife.com/linux/quicktipp-debian-wheezy-x64-multiarch-unterstutzung-aktivieren-ia32-libs/
Großartiges Script. Vielen Dank.
Sehr schön, großes Dankeschön!
Hi!
Zu Anfang einmal ein großes Danke für das Script! Genau SO etwas sollte eigentlich in die Paketquellen!
Ich habe alles jetzt wie gezeigt ausgeführt und heruntergeladen, aber jetzt steh ich ein bissi an.
Zuerst wollte ich eine emulierte Testumgebung erzeugen und habe unter
/usr/local/android-sdk/tools/
aufgerufen. Bin dann unter Tools –> Manage ADVs hineingegangen, erzeuge eine neue AVD, tippe alles ein und bekomme die Meldung:
Result of creating AVD ‚Test‘:
/home/qohelet/.android/avd/adf.ini (Keine Berechtigung)
Dasselbe passiert, wenn ich in ddms Optionen ändere
Lösung gefunden:
Das Script legt den Ordner unter ~/.android mit root-Zugriff an.
Mit einem simplen
ist das Problem gelöst.
Ebenso sollte man tools/android nicht mit root-Rechten starten, dann bekommt man einen PANIC-Fehler
Vielen Dank für die Beschreibung und das Script.
Es muss jedoch zusätzlich ‚openjdk-6-jdk‘ oder besser ‚openjdk-7-jdk‘ installiert werden.
new balance Ь
Hallo zusammen,
ist das Script noch aktuell? Ich benutze es unter Debian 8 32 bit. Jedoch bekomme ich nur die Meldung das ich der Lizenz zustimmen soll für die Android Debug Bridge. Ich kann in der Meldung nur den OK drücken und das war es dann auch schon. Mehr passiert nicht.
Beste Grüße
Ist das Script noch aktuell? (2024)
Ich bin in Sachen Linux noch ein Anfänger, habt bitte Nachsicht.
Ich würde das Script gerne bei mir unter Linux Mint 22 ausführen.
Ist des dafür ausgelegt und überhaupt noch aktuell?
Vielen Dank vorab für alles.
Vg. Arnold
Hi Arnold. Nein, der Akt hier ist nicht mehr nötig. Der Artikel ist ja inzwischen 13 Jahre alt. Das Android-SDK findest du inzwischen in den Paketquellen:
Siehe: https://wiki.ubuntuusers.de/Android_Studio/
Danke für deine Antwort. 🙂