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, das 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 Eclipse 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 adb 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.





Schreibe einen Kommentar