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…
#
# 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
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.


30. November 2011 um 22:13 Uhr
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
29. Dezember 2011 um 15:26 Uhr
Hallo,
man muss zenity vor Ausführung des Skriptes installieren.
4. Januar 2012 um 14:11 Uhr
Stimmt, bringt Ubuntu Zenity nicht von Haus aus mit?
31. Dezember 2011 um 17:18 Uhr
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
4. Januar 2012 um 14:05 Uhr
Hi Stephan, will sowieso noch was ändern. Ich schau mir das am Wochenende mal ann und melde mich dann wieder.
Grüße
Christoph
Pingback: Jikantaru?? - Android-Hilfe.de
5. Februar 2012 um 23:53 Uhr
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!
Pingback: Komplettes Backup eines Android-4.0-Handys oder Tablets ohne Root-Rechte erstellen | Linux und Ich
3. Juli 2012 um 15:18 Uhr
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
3. Juli 2012 um 15:25 Uhr
Danke für den Hinweis, das muss ich heute Abend mal aktualisieren.
Grüße
Christoph
Pingback: Fortlaufend Screenshots eines Androiden erstellen | Linux und Ich
11. August 2012 um 22:26 Uhr
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:
sojusnik@mir:~$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 05ca:183b Ricoh Co., Ltd Visual Communication Camera VGP-VCC8 [R5U870]
Bus 002 Device 002: ID 2109:3431
Bus 002 Device 003: ID 046d:c043 Logitech, Inc. MX320/MX400 Laser Mouse
Bus 002 Device 004: ID 046d:c31c Logitech, Inc. Keyboard K120 for Business
Bus 002 Device 005: ID 1058:0704 Western Digital Technologies, Inc. Passport External HDD
Bus 002 Device 038: ID 0bb4:0cb0 High Tech Computer Corp.
Und der Inhalt der /etc/udev/rules.d/99-android.rules:
#Acer
SUBSYSTEM==usb, ATTR{idVendor}==0502, MODE=0666
#ASUS
SUBSYSTEM==usb, ATTR{idVendor}==0b05, MODE=0666
#Dell
SUBSYSTEM==usb, ATTR{idVendor}==413c, MODE=0666
#Foxconn
SUBSYSTEM==usb, ATTR{idVendor}==0489, MODE=0666
#Garmin-Asus
SUBSYSTEM==usb, ATTR{idVendor}==091E, MODE=0666
#Google
SUBSYSTEM==usb, ATTR{idVendor}==18d1, MODE=0666
#HTC
SUBSYSTEM==usb, ATTR{idVendor}==0bb4, MODE=0666
#Huawei
SUBSYSTEM==usb, ATTR{idVendor}==12d1, MODE=0666
#K-Touch
SUBSYSTEM==usb, ATTR{idVendor}==24e3, MODE=0666
#KT Tech
SUBSYSTEM==usb, ATTR{idVendor}==2116, MODE=0666
#Kyocera
SUBSYSTEM==usb, ATTR{idVendor}==0482, MODE=0666
#Lenevo
SUBSYSTEM==usb, ATTR{idVendor}==17EF, MODE=0666
#LG
SUBSYSTEM==usb, ATTR{idVendor}==1004, MODE=0666
#Motorola
SUBSYSTEM==usb, ATTR{idVendor}==22b8, MODE=0666
#NEC
SUBSYSTEM==usb, ATTR{idVendor}==0409, MODE=0666
#Nook
SUBSYSTEM==usb, ATTR{idVendor}==2080, MODE=0666
#Nvidia
SUBSYSTEM==usb, ATTR{idVendor}==0955, MODE=0666
#OTGV
SUBSYSTEM==usb, ATTR{idVendor}==2257, MODE=0666
#Pantech
SUBSYSTEM==usb, ATTR{idVendor}==10A9, MODE=0666
#Philips
SUBSYSTEM==usb, ATTR{idVendor}==0471, MODE=0666
#PMC-Sierra
SUBSYSTEM==usb, ATTR{idVendor}==04da, MODE=0666
#Qualcomm
SUBSYSTEM==usb, ATTR{idVendor}==05c6, MODE=0666
#SK Telesys
SUBSYSTEM==usb, ATTR{idVendor}==1f53, MODE=0666
#Samsung
SUBSYSTEM==usb, ATTR{idVendor}==04e8, MODE=0666
#Sharp
SUBSYSTEM==usb, ATTR{idVendor}==04dd, MODE=0666
#Sony Ericsson
SUBSYSTEM==usb, ATTR{idVendor}==0fce, MODE=0666
#Toshiba
SUBSYSTEM==usb, ATTR{idVendor}==0930, MODE=0666
#ZTE
SUBSYSTEM==usb, ATTR{idVendor}==19D2, MODE=0666
Hoffe das hilft uns weiter!
12. August 2012 um 13:14 Uhr
Hab Folgendes:
SUBSYSTEM==”usb”, ATTRS{idVendor}==”0bb4″, MODE=”0666″
in
/etc/udev/rules.d/99-android.rules
geschrieben und es ging plötzlich!
28. Januar 2013 um 00:19 Uhr
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.