Android-SDK mit Bezug auf 64-bit Ubuntu und das Samsung Galaxy

Avatar von Christoph Langner

5 Min. Lesezeit

39 Aufrufe

Das Android-SDK auf einem 64-bit-Ubuntu zum Laufen bringen – inklusive udev-Regel und gepatchtem adb für das Samsung Galaxy.

DDMS zeigt den Screen des Samsung Galaxy unter Ubuntu 64-bit

Um Anwendungen für Android zu entwickeln oder tief in das System des Smartphones einzugreifen braucht man ein „Software Development Kit“, kurz SDK. Das Kit ist unter der Apache License lizenziert und kann als Quellcode oder auch als fertige Binaries von der Homepage des Android-Projektes heruntergeladen werden.

Auf einem 32-bit System ist das SDK schnell installiert, auf einem 64-bit Ubuntu braucht es jedoch noch ein paar Klimmzüge um es zum Laufen zu bekommen. Dazu kommt, dass man mit dem SDK das Samsung Galaxy bislang noch nicht ansprechen kann. Erst mit einem gepatchten Programmteil klappt dies…

Installation

Zur Installation selber möchte ich nicht viele Worte verlieren. Alle relevanten Informationen bekommt Ihr etwa auf ubuntuverse.at oder natürlich auch auf developer.android.com.

Auf einem 64-bit System

Etwas aufwändiger wird es, wenn man Ubuntu in der 64-bit Variante betreibt. Das SDK benötigt ein 32-bittiges Java, startet man es ohne dies, kommen nur Fehlermeldungen auf den Bildschirm…

$ ./ddms 
Error Loading Preferences
52:23 E/ddms: shutting down due to uncaught exception
52:23 E/ddms: java.lang.UnsatisfiedLinkError: /opt/android-sdk-linux_x86-1.5_r3/tools/lib/libswt-pi-gtk-3236.so: /opt/android-sdk-linux_x86-1.5_r3/tools/lib/libswt-pi-gtk-3236.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch)
	at java.lang.ClassLoader$NativeLibrary.load(Native Method)
	at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1767)
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1676)
	at java.lang.Runtime.loadLibrary0(Runtime.java:840)
	at java.lang.System.loadLibrary(System.java:1047)
[...]

Abhilfe schafft die Installation des Paketes ia32-sun-java6-bin…

$ sudo apt-get install ia32-sun-java6-bin

…und das Setzen von ia32-java-6-sun als JVM…

$ sudo update-alternatives --config java
Es gibt 3 Alternativen, die »java« bereitstellen.

  Auswahl      Alternative
-----------------------------------------------
          1    /usr/lib/jvm/java-6-sun/jre/bin/java
*+        2    /usr/lib/jvm/java-6-openjdk/jre/bin/java
          3    /usr/lib/jvm/ia32-java-6-sun/jre/bin/java

Drücken Sie die Eingabetaste, um die Vorgabe[*] beizubehalten,
oder geben Sie die Auswahlnummer ein: 3
Verwende »/usr/lib/jvm/ia32-java-6-sun/jre/bin/java«, um »java« bereitzustellen.

Diese Methode hat jedoch den Nachteil, dass die 32-bit-JVM nun für ALLE Java-Programme auf dem System benutzt wird. Wahrscheinlich passender ist es daher die Datei ddm selber anzupassen. Dazu öffnet Ihr die Datei in einen Editor und ändert den Abschnitt…

[...]
else
    os_opts=
    java_cmd="java"
fi
[...]

…entsprechend in…

[...]
else
    os_opts=
    #java_cmd="java"
    java_cmd="/usr/lib/jvm/ia32-java-6-sun/jre/bin/java"
[...]
fi

Somit ruft ddms direkt das 32-bit Java auf.

Das SDK und das Samsung Galaxy

Beim Einstecken von USB-Geräten werden eine Reihe von udev-Regeln ausgeführt. Auch für das Galaxy muss eine Regel erstellt werden. Im Netz findet man viele an die HTC Geräte G1 (Dream) und G2 (Hero) angepasste Anleitungen. Diese darf man jedoch nicht 1:1 übernehmen, da die Regel an die Hersteller-ID angepasst werden muss. Über…

$ lsusb
[...]
Bus 001 Device 025: ID 04e8:6640 Samsung Electronics Co., Ltd Usb Modem Enumerator
[...]

…bekommt ihr diese ID heraus. Im Fall des Samsung Galaxys lautet sie „04e8“. Weitere Android-Geräte von Sony, Motorola und Co. stehen in der Pipeline, daher sollte man nicht blind Anleitungen zum Thema Android und udev übernehmen, die ID wird bei jedem Hersteller anders lauten. Diese ID tragt Ihr nun in die udev-Regel /etc/udev/rules.d/90-android-rules

SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666"

… ein und lässt am besten nach Erstellen der Datei die Konfiguration von udev via sudo /etc/init.d/udev reload neu einlesen. Es kann gut sein, dass udev die Regel erst dann ausführt.

adb findet das Galaxy nicht

Nun zur nächsten Baustelle. Diese VendorId von Samsung wirkt sich auch im SDK selber aus. Im aktuellen SDK (Version 1.5_r3) ist sie noch nicht eingebaut. Die Folge: Das SDK kann das Galaxy nicht finden, selbst wenn der USB-Debug-Modus aktiviert wurde. Bei adb bleibt die Liste der angeschlossenen Android-Geräte leer…

$ ./adb devices
List of devices attached

Abhilfe schafft nur das Patchen von adb. Wer dies nicht möchte, kann auf http://floe.butterbrot.org/external/adb.gz zurückgreifen. Diese Version der adb-Datei wurde bereits gepatcht. Man muss sie nur herunterladen, entpacken und gegen die im SDK mitgelieferte tools/adb austauschen. Eventuell ist auch ein Check der Prüfsumme des Archivs angebracht. Diese muss…

$ md5sum adb.gz
82727d3eb69452c50421f9f7196d5cf4  adb.gz

…ergeben. Weitere Informationen und Hintergründe zu diesem Thema findet Ihr im Blog von Heiko Schwarz. Ist nun die adb-Datei ausgetauscht, killt ihr bitte den adb-Daemon (falls ihr adb bereits ausgeführt hattet) via $ killall adb und ersetzt die Datei. Nun sollte das Galaxy von adb gefunden werden…

$ ./adb devices
* daemon not running. starting it now *
* daemon started successfully *
List of devices attached 
I75005EYJ4pRPQ6	device

…und dem Erstellen von Anwendungen für Android oder das Rooten des Galaxys sollte nichts mehr im Wege stehen.

Ähnliche Beiträge

7 Kommentare zu „Android-SDK mit Bezug auf 64-bit Ubuntu und das Samsung Galaxy“

  1. Avatar von Stef

    Hey Danke, ich war schon am Verzeifeln. Hab ebenfalls das Galaxy und dachte ich wäre schon zu dämlich dafür. Naja, jetzt ist ja das SDK 1.6 rausgekommen. Hast du es mit dem schon probiert? Klappt es da outofthebox?

  2. Avatar von Christoph

    Ja, mit dem SDK 1.6 ist der Klimmzug „adb ersetzen“ zum Glück nicht mehr nötig.

  3. Avatar von Slippy

    Hallo christoph,
    ich wollte mir sdk unter ubuntu 11.04 installieren. Das mit der Änderung der ddm Datei macht zweifellos Sinn, nur wo finde ich die?
    Im voraus Danke für die Hilfe.

  4. Avatar von Christoph

    Du findest sie im entpackten Verzeichnis des SDK als „/wo/auch/immer/android-sdk-linux_x86/tools“. Der Beitrag ist ja schon etwas älter, hab das SDK schon länger nicht mehr unter Ubuntu getestet 😉

  5. Avatar von derjanni

    Hi! Ich benutze den SDK unter OpenSUSE 64Bit: … Vg, Jan

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Markdown wird unterstützt: **fett**, _kursiv_, [Linktext](URL), `Code`, Zeilen mit - für Listen, 1. für nummerierte Listen, dreifache Backticks für Codeblöcke.

Über den Blog

Seit 2006 probiere ich hier aus, was Linux, freie Software und die passende Hardware so hergeben – von Distributions-Tests bis zum Raspberry-Pi-Projekt. Praxisnah statt bloßem Nachrichtenticker.

Zuletzt auf Mastodon

Ein Computermonitor mit Webcam zeigt einen RSS-Reader im dunklen Design.

/de/feed/: Euer altes Feed-Abo liefert wieder Artikel

Wer den Feed von Linux und Ich noch unter der alten Adresse /de/feed/ abonniert hat, bekam von mir seit geraumer Zeit keine Beiträge…

Kategorien

Blog unterstützen

Gefällt dir, was du hier liest? Mit einer kleinen Spende hilfst du, Hosting und neue Testgeräte zu finanzieren – und sorgst nebenbei für den nötigen Kaffee.

Linux und Ich — Android-SDK mit Bezug auf 64-bit Ubuntu und das Samsung Galaxy
https://linuxundich.de/gnu-linux/android-sdk-mit-bezug-auf-64-bit-ubuntu-und-das-samsung-galaxy/ — gedruckt am 23. September 2026