Smartphones en tablets veroveren stilaan de huiskamer ten koste van de aloude pc. Inmiddels leveren veel fabrikanten al sneller een Android-app dan software voor Windows -laat staan Linux! Maar wist je dat je de meeste Android-apps ook onder Linux kan gebruiken? We tonen je twee manieren om dat te doen.

Het lijkt misschien wat raar om mobiele apps te gebruiken op een volwaardige computer. De meeste apps zijn niet gemaakt voor pakweg een 20″-scherm. Verder werkt een toetsenbord onder Android nog altijd niet 100% zoals je verwacht, al hebben tablets zoals de Asus Transformer Pad voor heel wat verbetering gezorgd. Bovendien hebben de apps vaak beperkte features in vergelijking met klassieke computerprogramma’s. Of je moet er de nodige reclame bijnemen: Android kent immers veel freeware, maar weinig echt open source software. Toch zijn er ongetwijfeld wel wat apps die je ook op je computer wilt draaien. Dan denken we bijvoorbeeld aan de talloze remote control apps die fabrikanten van hifi- of multimedia-apparatuur op de markt brengen. Meestal worden die enkel voor iOS en Android uitgebracht. Vanaf je pc kan je die apparaten dus niet bedienen, al zou dat soms wel handig zijn. Misschien ben je verknocht aan enkele Android-games? Of verkies je dezelfde user experience op al je devices en wil je daarom de Facebook Android-app ook op je computer gebruiken? Redenen genoeg dus om te bekijken hoe je nu precies Android-apps installeert en gebruikt onder Linux!

Android Developer Tools
Een eerste optie is de Android Developer Tools te gebruiken. Ontwikkelaars van Android-software moeten hun apps uitgebreid kunnen testen. Je kunt natuurlijk niet van elke ontwikkelaar verwachten dat hij meerdere devices met uiteenlopende schermgroottes, processorkracht, etc. in huis heeft. De ADT bevat dan ook een emulator voor Android-devices. Die laat ontwikkelaars toe om hun apps in verschillende virtuele devices te testen. Maar ook al ben je niet van plan nieuwe Android-apps te ontwikkelen, je kunt de ADT net zo goed gebruiken om bestaande apps te starten. De ADT installeren is niet moeilijk. Download de ‘ADT Bundle’ voor 32- of 64-bit Linux van de Android Developers website (zie referenties). Unzip dat bestand vervolgens op een locatie naar keuze (bijvoorbeeld in je home-directory).

 

De Android Emulator en aanverwante tools bevinden zich in de map ‘adt-bundle-linux-x86_64-<versie>/sdk/tools’. Aangezien de emulator erg uiteenlopende hardware kan emuleren, moet je een virtueel device aanmaken alvorens de emulator te starten. Je kunt ook meerdere van die zogenaamde Android Virtual Devices definiëren. Voor onze toepassing is dat niet onmiddellijk nodig. Android Virtual Devices beheer je in de AVD Manager, die je als volgt opstart:

 

$ cd adt-bundle-linux-x86_64-20130717/sdk/tools

$ ./android avd &

Virtual Devices
Onder het tabblad ‘Device Definitions’ kies je een profiel voor je virtueel device. Standaard vind je hier zowel Google’s Nexus-modellen terug (smartphones en tablets), als een aantal generieke profielen met verschillende schermgroottes (vooral smartphones). Wij selecteerden het profiel 10.1″ WXGA (Tablet), met een resolutie van 1280 op 800 pixels. Klik daarna op ‘Create AVD…’ en je krijgt het venster te zien uit afbeelding 1. Daarin kun je nog een aantal instellingen aanpassen, zoals de naam van je device en de Android-versie en architectuur. Standaard is enkel de laatste Android-versie beschikbaar (4.2.2 op het ogenblik van schrijven, zie onderstaand kader voor andere versies). Ook kun je kiezen of je het toetsenbord van je laptop wilt gebruiken in plaats van een on-screen toetsenbord (wel zo handig!), of je nog hardware controls wilt tonen (niet echt noodzakelijk) en of de webcam van je computer moet worden gebruikt als front of back camera in het virtueel device. Tot slot kun je de grootte instellen van het RAM-geheugen, interne opslagruimte en SD-kaart. Vergeet zeker niet om ook een SD-kaart te definiëren, want Android heeft dit absoluut nodig voor bepaalde taken. Zo kunnen downloads enkel op de SD-kaart worden bewaard en niet op de interne opslagruimte. Vink tenslotte ook de optie ‘Use Host GPU’ aan, anders is de grafische performance van de emulator beneden alle peil. Het device wordt aangemaakt zodra je op ‘OK’ klikt.

 

 

 

 

1 Hier maken we een nieuw Android-device aan in Android Device Manager

 

 

 

Je device is nu zichtbaar in het tabblad ‘Android Virtual Devices’. Klik op ‘Start’ om de emulator te starten. Je krijgt dan nog een venster te zien met enkele opties, bijvoorbeeld om user data van vorige sessies te verwijderen of om het venster te scalen. Die opties kun je voorlopig laten voor wat ze zijn. Klik tenslotte op ‘Launch’ om de emulator effectief te starten. Je ‘virtual tablet’ wordt nu geboot, wat wel even kan duren. Na het booten kom je in een zeer minimale Android-omgeving terecht met een twintigtal applicaties, voornamelijk gericht op ontwikkelaars. Helaas voelde de hele interface nogal stroperig aan: alles had een vertraging van ongeveer een halve seconde en de overgangseffecten (bijvoorbeeld als je het applicatiescherm opent) verliepen nogal schokkerig. Blijkbaar vond de emulator de benodigde OpenGL-library niet op ons systeem, hoewel die geïnstalleerd was. De oplossing? Een symlink naar libGL.so.1 plaatsen in de lib-subdirectory van de tools-directory en het virtuele device herstarten (zie listing 1).

Listing 1

$ locate libGL.so

/usr/lib/i386-linux-gnu/libGL.so.1

/usr/lib/i386-linux-gnu/libGL.so.1.2

/usr/lib/x86_64-linux-gnu/libGL.so.1

/usr/lib/x86_64-linux-gnu/libGL.so.1.2

$ ln -s /usr/lib/x86_64-linux-gnu/libGL.so.1 ~/adt-bundle-linux-x86_64-20130717/sdk/tools/lib/libGL.so

 

 


2 De Android-emulator wordt behoorlijk kaal geleverd

Apps installeren
Dat brengt ons bij het volgende probleem: hoe kunnen we extra apps installeren in de emulator? Dat is helaas niet zo eenvoudig als je zou denken. Er is namelijk geen Google Play Store aanwezig en je kunt die ook niet zomaar toevoegen via een .apk-bestand. De Play Store is immers enkel beschikbaar voor fabrikanten, en mag slechts geïnstalleerd worden op devices die aan bepaalde eisen voldoen. Her en der op internet vind je wel instructies om de Play Store te installeren op Android-devices die de Store niet aan boord hebben. Maar dat is niet alleen in strijd met Google’s licentievoorwaarden, de instructies zijn ook behoorlijk complex en garanderen niet dat de Store blijft werken na updates van Google. Hetzelfde geldt voor de Chrome-extensie die je toelaat om via de Play Store-website .apk-bestanden van apps te downloaden. Beide methodes zijn dus te gebruiken op eigen risico!

 

Een alternatieve app store gebruiken is wellicht de gemakkelijkste manier om aan de benodigde .apk-bestanden te geraken. Persoonlijk hebben we goede ervaringen met 1 Mobile Market, maar er bestaan nog andere app stores. Open de browser in je virtueel device en surf naar 1mobile.com. Klik daar op de downloadlink om de 1 Mobile Market-app te downloaden. Dubbelklik vervolgens op het .apk-bestand om de app te installeren. Via die app kun je  andere apps zoeken en installeren. Je hebt daarvoor geen (Google of andere) account nodig. We laten aan jou over wat je precies wilt installeren. Houd wel in je achterhoofd dat sommige apps (voornamelijk games) door de ARM-emulatie iets trager werken dan op een echt high-end tablet. Dit hangt uiteraard ook af van de cpu en gpu in je computer.


3 Via de gratis verkrijgbare 1 Mobile Market app kan je extra apps installeren zónder Google Play Store

 

Beperkingen
Hoewel de Android Emulator op het eerste zicht prima functioneert, zijn er toch enkele minpunten. Zo is het soms nogal lastig om een app die ontwikkeld is voor een touchscreen met een gewone muis te bedienen. Het scrollwheel van je muis werkt bijvoorbeeld niet. In plaats daarvan moet je de bekende swipe gesture imiteren met je muis. Dat is dus de muisknop ingedrukt houden en je muis omhoog bewegen om omlaag te scrollen. Erger is dat er voor het pinch gesture (om in- of uit te zoomen) gewoon geen alternatief voorzien is in de emulator. Sommige apps zijn zo wel quasi onbruikbaar! En ook met apps die steunen op een GPS of accelerometer van een smartphone of tablet kun je weinig doen in de emulator. Voor die problemen is er wel al een oplossing in de maak (zie referenties). Je zou dan je smartphone via usb aan je pc kunnen koppelen en de emulator leest zo de gps-data uit. Ook het touchscreen van je smartphone kan dan dienen als input device voor de emulator. Al biedt de Android Emulator niet veel toegevoegde waarde meer als je toch al je smartphone in de buurt hebt liggen!

 

AndroVM / Genymotion
De Android Emulator is niet de enige oplossing om Android-apps te draaien in Linux. Er is namelijk ook een Android virtuele machine beschikbaar voor VirtualBox: AndroVM. Dat project is onlangs hernoemd tot Genymotion. Op het ogenblik van schrijven was Genymotion nog in bèta, dus hebben we de laatste AndroVM-versie getest. Die was nog gebaseerd op het iets oudere Android 4.1. De installatie is nog eenvoudiger dan bij de Android Emulator. Om te beginnen heb je VirtualBox nodig om de VM te starten. In de meeste distributies kun je VirtualBox en de benodigde kernelmodules gewoon via je package manager installeren. Is dat gebeurd? Download dan één van de .ova-bestanden van AndroVM’s downloadpagina (zie referenties). Er zijn verschillende versies beschikbaar: voor een tablet (vbox86t, met resolutie 1024×600), voor een smartphone (vbox86p, met resolutie 480×800) en voor een phablet (vbox86tp, resolutie 1024×600). De ontwikkelaars raden zelf één van de twee laatste images aan. Sommige applicaties uit de Google Play Store kun je immers niet installeren op een device zonder telefoniemogelijkheden. Van elk image is er ook een variant beschikbaar waarbij Flash en de Google Apps al voorgeïnstalleerd zijn. Vooral dat laatste is best handig, want zo kun je meteen na installatie met de Google Play Store aan de slag!

 

VirtualBox
Open nu VirtualBox en kies de optie ‘Appliance importeren’ uit het menu ‘Bestand’. Selecteer het zonet gedownloade bestand en klik op ‘Volgende’ en ‘Importeren’ om de Android virtuele machine aan te maken. Klik daarna op de ‘Start’-knop om je virtuele machine te starten. Gebruik je VirtualBox voor de eerste keer? Dan krijg je mogelijk nog enkele korte informatieve boodschappen te zien. Lees die allemaal aandachtig en volg -indien nodig- de instructies op. In de tegenstelling tot de Android Emulator is AndroVM nog niet volledig geconfigureerd. Na de eerste boot moet je dus nog een aantal zaken configureren: taal kiezen, Google account instellen, enzovoorts. Je kunt zelfs de instellingen van een ander tablet via je Google account importeren!

4 AndroVM’s initiële configuratie: net een echt tablet!

In de lijst van geïnstalleerde apps is er voor de configuratie van de VM een aparte app:  androVM Configuration. Daarin kun je bijvoorbeeld de resolutie van de VM instellen, gaande van 640×480 tot 1280×800 of 1366×768. Helaas is de kleurdiepte wel beperkt tot 16 bits. Dat zie je ook goed aan de standaard bureaubladachtergrond, die een ietwat blokkerig kleurverloop bevat. Verder is er ook een optie om de bekende statusbalk met de drie knoppen onderaan het scherm te tonen (Force Statusbar). In principe heb je die balk niet nodig, want voor elke knop is er ook een sneltoets gedefinieerd:

– Esc voor Androids ‘Back’-knop

– Home om naar het startscherm te gaan

– Alt-tab om tussen actieve applicaties te wisselen

Maar als je graag via de statusbalk werkt, kun je die dus activeren. Een reboot van de VM is wel vereist om de wijzigen door te voeren. Belgische gebruikers moeten trouwens de toetsenbordinstelling nog wijzigen naar azerty. Dat doe je onder Settings > Language & Input > Physical Keyboard. Klik op de optie ‘AT Translated Set 2 keyboard’, kies ‘Set up keyboard layouts’ en selecteer dan ‘Belgian’.

Google Play Store
Een aangename verrassing is dat AndroVM gewoon een werkende Google Play Store bevat. Apps installeren is dan ook een fluitje van een cent. Maar voor games moet je iets meer moeite doen. Hardware-acceleratie met je videokaart is standaard nog niet actief in AndroVM. Dit schakel je als volgt in:

 

– sluit de VM af, kies de optie ‘Voorkeuren’ uit het menu ‘Bestand’ en ga naar het onderdeel ‘Netwerk’. Klik op het ‘+’-knopje om een host-only netwerk toe te voegen en klik vervolgens op ‘OK’.

–  klik nu op ‘Instellingen’om je VM te wijzigen en ga naar het onderdeel ‘Netwerk’. In het tabblad ‘Adapter 1’ kies je nu ‘Host-only adapter’ en klik je op ‘OK’. Je kunt je VM nu opnieuw opstarten.

– open opnieuw de androVM Configuration app en vink de optie ‘Hardware OpenGL’ aan. De optie ‘Force Statusbar’ mag je -indien ingeschakeld- weer uitschakelen. Herstart de VM.

– je hebt nu een speciale viewer nodig om AndroVM te starten met OpenGL-ondersteuning: AndroVMPlayer. Die vind je op dezelfde downloadpagina als AndroVM. Kies de versie die bij jouw besturingssysteem past (32- of 64-bits) en pak het .tar.gz-bestand uit.

– start de AndroVMPlayer. Je krijgt dan het scherm te zien uit afbeelding 5. Hier kan je een resolutie instellen tussen 320×240 en 2560×1600. De overige instellingen hoef je niet aan te passen. Klik op ‘Run’ om je virtuele machine te starten.


Voor OpenGL-ondersteuning moet je de AndroVMPlayer gebruiken als frontend voor VirtualBox’ videoweergave

 

Geen emulatie
Nu kan je in AndroVM ook een heleboel games of andere 3D-applicaties draaien. Toch is het niet gegarandeerd dat alle games (of apps in het algemeen) probleemloos werken. AndroVM is namelijk gebaseerd op de x86-versie van Android. Er is dus geen sprake van ARM-emulatie. Dat verklaart meteen waarom AndroVM heel wat vlotter werkt dan de Android Emulator. Maar sommige apps bevatten code die specifiek voor de ARM-architectuur is gecompileerd. Daarvoor heeft AndroVM wel een workaround aan boord, maar helemaal sluitend is die niet. Af en toe kan je dus op een app stuiten die niet (volledig) naar behoren werkt. Opvallend is ook dat in AndroVM het scrollwheel van onze muis initieel wel werkte, maar zodra we OpenGL activeerden niet meer. En net als in de Android Emulator is er (nog) geen ondersteuning voor multitouch-gestures zoals pinch zoom.

 

Bestanden uitwisselen tussen je Linux-computer en de Android virtuele machine kan op verschillende manieren. Heb je al een homeserver of NAS? Gebruik dan de app ES File Explorer om bestanden te kopiëren van of naar een Samba-share. Dezelfde app werkt uiteraard ook prima in combinatie met Samba op je pc. In AndroVM kan je gebruik maken van VirtualBox gedeelde mappen. Open daarvoor de instellingen van je VM en klik op het ‘+’-icoontje in het onderdeel ‘Gedeelde mappen’. Selecteer de gewenste map en vink de opties ‘Automatisch koppelen’ en ‘Permanent maken’ aan. Vanaf de volgende reboot zijn de mappen beschikbaar onder /mnt/shared in AndroVM.

 


6  Bestandsdeling tussen AndroVM en je Linux-computer via VirtualBox gedeelde mappen

 

Voor- en nadelen
In dit artikel hebben we twee oplossingen bekeken om Android apps onder Linux te draaien. Beiden hebben hun voor- en nadelen. De Android Emulator biedt de beste compatibiliteit, maar is niet altijd even snel en bevat geen Google Play. Je moet dus waarschijnlijk aan de slag met een third-party app store. Google’s eigen Play Store is immers niet zo eenvoudig te installeren. AndroVM draait een stuk vlotter en bevat ook gewoon de volledige Play Store. Maar door het gebrek aan echte ARM-emulatie werken bepaalde apps niet naar behoren. Dat moet je dus zelf even testen met de apps die jij wilt gebruiken. Een minpunt aan beide programma’s is dat ze nog geen multitouch ondersteunen. Zo zijn sommige apps in de praktijk dus niet erg bruikbaar op je pc.

 

Andere Android-versies emuleren
De Android Device Manager bevat enkel het laatste nieuwe Android-image voor de ARM-architectuur. Wil je een ouder image installeren of na verloop van tijd een nieuwer image downloaden? Open dan de Android SDK Manager vanuit de tools-directory van de ADT:

 

$ ./android sdk

 

Je krijgt nu een lijst van alle beschikbare Android-versies te zien. Selecteer het ‘ARM EABI v7a System Image’ onder een Android-versie naar keuze (bijvoorbeeld 4.1.2) en kies dan ‘Install 1 package’ om dit beschikbaar te stellen voor de Android Device Manager.

Links
ADT download: developer.android.com/sdk

Android Emulator: developer.android.com/tools/devices/emulator.html

Hardware emulation: tools.android.com/tips/hardware-emulation

 

AndroVM download: androvm.org/blog/download