Ansichten eines Informatikers

Android SDK und Emulator unter Ubuntu 9.10 installieren

Hadmut
4.12.2009 21:48

Auch wenn man es nicht programmieren will, ist es auf jeden Fall interessant, im Emulator mit Android herumzuspielen.

  1. Zuerst die Ubuntu packages openjdk-6-jre und, falls man auch programmieren will,eclipse installieren. (Falls man die AMD64-Version von Ubuntu fährt, braucht man noch eine 32-Bit-libc, ich habe nur gerade den Namen des Packages nicht griffbereit.)
  2. Von http://developer.android.com/sdk/index.html das neueste Linux-SDK runterladen und an geeigneter Stelle auspacken. /opt ist kein schlechter Platz dafür.
  3. Es ist hilfreich, das tools-Verzeichnis (also etwa /opt/android-sdk-linux_86/tools) in die PATH-Variable mit aufzunehmen, damit man nicht immer den ganzen Pfad angeben muß.
  4. Sodann /opt/android-sdk-linux_86/tools/android starten und in der Auswahl auf “Available Packages” gehen. Das angegebene Repository auf dl-ssl.google.com/… anklicken. Ein neues Fenster “Loading Source” geht auf und versucht die Quellen dieses Repositories herunterzuladen. Dummerweise kann man dann so in 2-3 Problemchen laufen, deren genaue Ursache noch nicht so ganz geklärt ist und vermutlich auf leichte Inkompatibilitäten zwischen SDK und Ubuntu zurückgeht. Siehe die nachfolgenden Punkte.
  5. Bekommt man bei Loading Source eine Fehlermeldung vom Typ sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target, dann fehlt im Java-Zertifikatsverzeichnis von Ubuntu irgendein Zertifikat. Das ist noch nicht so ganz geklärt, aber es gibt den Workaround, auf https zu verzichten und stattdessen http zu verwenden. Das kann man in den Settings des Programms setzen.

    Falls das nicht klappt, mit dem nächsten Schritt weitermachen. Ansonsten taucht dann unter dem Eintrag mit dl-ssl.google.com/… eine Liste mit verfügbaren Modulen auf. Will man nur den Emulator laufen lassen, reicht die 1.6-Version, ansonsten nimmt man alles rein und installiert das.

  6. Dazu als Ergänzung drei Workarounds, die zumindest in den letzten Wochen nötig waren, aber anscheinend in dem seit heute verfügbaren neuen SDK gelöst sind. Daher erst mal probieren, ob man ohne durchkommt (bei mir ging das heute erstmals ohne diese Workarounds):

    Das erste Problem ist/war, daß bei den graphischen Programmen des SDK (wie o.g. android Programm und dem Emulator) man manchmal vor dem Problem steht, daß man irgendein Menü oder Button anklickt und es passiert einfach nichts. Dann muß man im Unix-Environment GDK_NATIVE_WINDOWS auf den Wert true setzen und das Programm neu starten.

    Das zweite Problem war, daß das Programm android es nicht in die config-Datei schreiben konnte, daß man HTTP statt HTTPS nutzen will. Dazu beenden und von Hand in ~/.android/androidtool.cfg die Zeile

    sdkman.force.http=true
    

    eintragen und neu starten.

    Das dritte Problem war, daß das Android-Programm nicht mehr wie in den früheren Versionen komplett daherkommt, sondern in dem oben beschriebenen Download neuerdings nur noch die Grundfunktionen drin sind, und das Ding sich seine Funktionsmodule selbst nachlädt – und da was drin war, was android zum download brauchte. Henne-Ei-Problem. Dazu mußte man auf der Kommandozeile

    .../android update sdk

    starten.

    Aber wie gesagt, alle drei Probleme scheinen seit heute gelöst zu sein.

  7. Danach muß man mit demselben Tool …/android ein Virtual Device anlegen. Man gibt dem Ding einen Namen, wählt eine Plattform aus, gibt eine Größe für die virtuelle Speicherkarte an (ACHTUNG: dieses Virtual Device landet unter ~/.android/avd/ und nimmt dort entsprechend viel Platz weg, der natürlich erst mal da sein muß). Auch ein Skin bzw. Bildschirmgröße kann man auswählen und noch weitere Parameter auswählen.
  8. Hat man das getan, kann man den emulator aus dem tools-Verzeichnis starten, muß ihm aber den Namen des Virtual Device mitgeben, also etwa .../emulator -avd XXX wobei XXX der Name ist, den man im vorhergehenen Schritt dem Virtual Device gegeben hat. Wenn da im virtuellen Bildschirm erstmal nur ANDROID steht und sich sonst nichts tut – Geduld. Android braucht etwas zum booten.
  9. Dann kommt irgendwann Ernüchterung, denn die System-Images, die mit dem SDK mitgeliefert werden, ist nur das Android-Betriebssystem selbst und eine Teilmenge der Android-Applikationen. Damit kann man zwar schon mal einiges rumspielen, aber schon auf den Google Market zum Nachladen von Applikationen kommt man nicht mehr.

    Es gibt dazu (nicht so richtig offizielle) Umwege. Im Internet kursieren verschiedene Android-Images unterschiedlicher Herkunft, teils als Update für Developer. Da ich nicht weiß, welche man davon legal einsetzen kann (nicht alle Teile von Android sind OpenSource und lizenzfrei zu haben, insbesondere muß man zwischen dem Android-Betriebssystem und den Google-Applikationen unterscheiden) werde ich die hier nicht verlinken, zumal auf einer der Developer-Seiten die Images derzeit zwar noch gelistet sind, aber aus mir nicht bekannten Gründen die Links und die Images selbst gerade fehlen.

    Sollte man jedenfalls eines dieser Images erhalten, packt man sie aus (werden normalerweise als zip-Datei geliefert) und kopiert die Datei system.img in das Directory des angelegten Virtual Devices. Die für das Device gewählte Plattform muß natürlich mit der übereinstimmen, für die das Image stammt. Dürfte in den meisten Fällen 1.6 sein. Bei früheren Versionen des SDK gab es außerdem noch das Problem, daß im Virtual Device die Größe für die Systempartition nur 72 MByte betrug, die Images aber mehr Platz benötigten. Dazu konnte man beim Erstellen des Virtual Device den Parameter ändern und z. B. auf 90 setzen. Scheint aber bei den neu verfügbaren SDK auch nicht mehr nötig zu sein. Das neue SDK hat offenbar einige Bugfixes und Verbesserungen erfahren. Achtung: Es kann schief gehen, wenn man das Virtual Device schon mal ohne das system.img (d.h. mit dem default-img aus dem SDK) laufen hatte. Das system.img sollte reinkopiert werden, bevor man den Emulator das erste mal auf das Device ansetzt.

    Sollte das Gerät dann hochkommen, aber die Netzwerkfunktionen nicht funktionieren (die der Emulator normalerweise über die normale Linux-Netzwerkerei abwickelt), dann hat man ein Image für eine falsche Architektur erwischt (was Teile des Betriebssystems trotzdem nicht vom Booten abhält, scheint an der Dalvik-Maschine zu liegen.)

    Ansonsten kann man jetzt ziemlich loslegen.

  10. Für die Entwicklungsumgebung Eclipse muß man noch zwei Quellen angeben, einmal die für Android, dann aber noch eine zweite (ohne was auszuwählen), weil die Android-Eclipse-Module auf Bibliotheken beruht, die Eclipse vom Eclipse-Server runterladen muß. Unter Ubuntu ist die Quelle dafür aber nicht gesetzt. Deshalb braucht man die beiden Quellen
    Galileo - http://download.eclipse.org/releases/galileo
    Android - https://dl-ssl.google.com/android/eclipse/
    

Viel Spaß beim Ausprobieren.