Dienstag, 28. Mai 2013

Android SDK v22 und IDEA IntelliJ

Spielt man die neueste Version 22 des Android Development Kits (ADK) auf, so kann man mit IDEA IntelliJ seine Projekte nicht mehr kompilieren. Neben dem Problem mit den fehlenden Build-Tools liegt es auch daran, dass einige Sachen nicht mehr dort sind, wo sie noch bei Version 21 waren. Man erhält den Fehler

android-apt-compiler: Cannot run program "/opt/android-sdk-linux_86/platform-tools/aapt": error=2, Datei oder Verzeichnis nicht gefunden (File or directory not found).

Setzt man den Link, so klappt dieser Schritt, aber der nächste scheitert mit

Android Dex: Cannot find file /opt/android-sdk-linux_86/platform-tools/lib/dx.jar

Um beide Probleme zu lösen und wieder kopilieren zu können, wechselt man im ADK Verzeichnis in das Unterverzeichnis platform-tools und setzt zwei Symbolische Links:

ln -s ../build-tools/17.0.0/aapt .
ln -s ../build-tools/17.0.0/lib .

Und schon kann man wieder kompilieren.

Mittwoch, 8. Mai 2013

Google Maps API v2 im Android Emulator

Google hat seine Maps Anwendung auf die Version 2 aktualisiert. Diese lässt sich nicht so einfach im Android Emulator verwenden, denn dieser wird mit der alten Version ausgeliefert und eine Anwendung, die die neue API verwendet, liefert nur eine Fehlermeldung, dass man Upgraden soll. Es gibt aber einen Trick, wie man Google Maps trotzdem im Emulator zum Laufen bekommt:

Zuerst benötigt man ein AVD mit mindestens API Level 9 (2.3.1), aber ohne Google APIs:


Emulator Einstellungen aus dem Android SDK

Man kann auch eine höhere Version wählen, aber wie gesagt muss sie ohne Google APIs sein. Google Maps sollte laut Manifest auch mit Version 8 laufen, aber man erhält dann eine Fehlermeldung über ein inkompatibles CPU/ABI Interface.

Als nächstes benötigt man zwei APKs, die man am besten von einem gerooteten Android erhält:

adb -d pull /data/app/com.android.vending-2.apk
adb -d pull /data/app/com.google.android.gms-2.apk

Sollten die Dateien nicht gefunden werden, kann man mit


adb -d shell
shell@android:/$ su
shell@android:/# ls /data/app/

nachsehen, ob sie eventuell doch eine andere Zahl hinten stehen haben. Hier die MD5-Prüfsummen der aktuellen Dateien:

558e12681e333d91f39f688aadbaf6ee  com.android.vending-2.apk
2d3daf756852d813cd78366342b33d4d  com.google.android.gms-2.apk

Jetzt kann man den Emulator starten und die APKs installieren

adb -e install com.android.vending-2.apk
adb -e install com.google.android.gms-2.apk

Google Maps API v2 im Android Emulator

Will man Google Maps direkt verwenden, benotigt man noch com.google.android.apps.maps-1.apk, wobei man hier aufpassen muss, von welchem Gerät man sie bekommt. Die von meinem Nexus 4 läuft nur ab API Level 14 (4.0):

Google Maps im Emulator