Hauptseite Blog

Installation von Cordova mit Android Unterstützung unter Ubuntu 18.04

Hinweis

Bei der Installation von Ubuntu 18.04 kann eine Minimalinstallation ausgewählt werden. Bevor mit der Installation begonnen wird, empfiehlt sich eine Systemaktualisierung:
sudo apt update
sudo apt upgrade

Installation von Java 8

sudo apt install openjdk-8-jdk  
Nach der Installation kann die Java Version abgefragt werden:
$ java -version
openjdk version "1.8.0_162"
OpenJDK Runtime Environment (build 1.8.0_162-8u162-b12-1-b12)
OpenJDK 64-Bit Server VM (build 25.162-b12, mixed mode)

$ javac -version
javac 1.8.0_162

Installation Node.js und npm

sudo apt install nodejs
sudo apt install npm
Die installierten Versionen lassen sich abfragen mit:
$ nodejs --version
v8.10.0 
$ npm --version
3.5.2

Installation von Cordova

sudo npm install -g cordova

Installation von Android Studio

Android Studio wird verwendet, um benötigte Komponenten zu installieren wie z.B. Gradle und das Android SDK. Android Studio kann unter Android.com (64 Bit!) als ZIP Datei heruntergeladen werden. Zusätzlich werden folgende Pakete im Vorfeld der Installation benötigt:
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386   
Soll der Android Emulator verwendet werden sollte sichergestellt werden, das KVM installiert ist. Der aktuell verwendete User muss in die Gruppe kvm eingetragen werden.
sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
sudo adduser $USER kvm
Ich habe mich für eine Installation unter /opt entschieden. Damit die Installation gelingt, öffne ich das Verzeichnis temporär für Schreibzugriffe.
sudo chmod 777 /opt    
Zur Vorbereitung der Android SDK Installation wird noch ein weiteres Verzeichnis im /opt Ordner angelegt
cd /opt
mkdir android-sdk
Die vorliegende Android Studio ZIP Datei wird nun nach /opt/android-studio entpackt. Um Android Studio besser aufrufen zu können, wird im Home Verzeichnis ein Link gesetzt:
cd --
cd Downloads
unzip android-studio-ide-173.4720617-linux.zip -d /opt
cd ..
ln -s /opt/android-studio/bin/studio.sh studio
./studio
Beim Start von Android Studio -> Do not import settings
Install Type -> Custom -> Next
Select UI Theme -> IntelliJ -> Next
SDK Components Setup
Android SDK Location ändern! -> /opt/android-sdk
Alles markieren (wenn möglich): Android SDK, Android SDK Platform, API 27, Android Virtual Device -> Next
Verify Settings -> Next
Emulator Settings -> Finish

Falls das SDK nicht installiert werden sollte (Berechtigungsprobleme etc.) kann Android Studio nochmals aufgerufen werden. Das SDK kann dann nachinstalliert werden.

Welcome to Android Studio
Nun werden wir ein Dummy Projekt anlegen:
-> Start a new Android Studio project
-> Next
-> Next
-> Add No Activity -> Next
-> Next
-> Finish

Android Studio Menü -> Tools -> SDK Manager
Android 8 (Oreo) auswählen (API Level 26)
-> Show Package Details auswählen
-> Android 8.0 (Oreo) -> Google APIs Intel x86 Atom_64 System Image (API 26) auswählen
-> Apply
-> License Agreement -> Accept -> Next
-> Finish
-> OK

Android Studio Menü -> Tools -> AVD Manager
-> Create Virtual Device
-> Nexus 5X -> Next
-> System Image -> Oreo (API Level 26 [!]) -> Download -> Finish
-> Next
Verify Configuration -> Finish

Da die Basisinstallation von Android Studio inkl. SDK jetzt abgeschlossen ist, kann die temporäre Schreibberechtigung für /opt wieder aufgehoben werden:
    sudo chmod 755 /opt
Damit alle Komponenten von Cordova erkannt werden, muss das Environment angepasst werden. Statt vi kann natürlich auch jeder andere Editor zum Einsatz kommen :)
sudo vi /etc/environment  
Es werden hier in der PATH Variablen das Verzeichnis zu Gradle /opt/android-studio/gradle/gradle-4.4/bin und zu den Android Studio Binaries /opt/android-studio/bin eingetragen.

Beispiel:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:
/opt/android-sdk/tools:/opt/android-sdk/platform-tools:/opt/android-studio/gradle/gradle-4.4/bin"
JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
ANDROID_HOME="/opt/android-sdk"  
ANDROID_EMULATOR_USE_SYSTEM_LIBS=1      
Die Einstellungen können nun mit
source /etc/environment  
geladen werden.

Nun kann ein Hello World Projekt angelegt werden und danach in das Projektverzeichnis hello gewechselt werden:
cordova create hello com.example.hello HelloWorld
cd hello
Als Plattform wird dem Projekt Android hinzugefügt:
cordova platform add android
Es werden nun alle Voraussetzungen geprüft mit:
cordova requirements  
Beispiel Ausgabe:
Android Studio project detected

Requirements check results for android:
Java JDK: installed 1.8.0
Android SDK: installed true
Android target: installed android-27,android-26
Gradle: installed /opt/android-studio/gradle/gradle-4.4/bin/gradle      
Gradle Berechtigungen setzen:
chmod 755 /opt/android-studio/gradle/gradle-4.4/bin/gradle
Build Prozess starten. Emulator mit der App starten.
cordova build
cordova emulate
Troubleshooting
(node:14359) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): 
TypeError: Cannot read property 'semver' of null
Die Ursache für diesen Fehler liegt wahrscheinlich darin, das der Android Emulator mit der falschen SDK Version (z.B. SDK Version 27 statt SDK Version 26) gestartet wurde. Es sollte daher ggf. manuell im Android Studio unter Menü->Tools->AVD Manager geprüft werden, ob das konfigurierte Device tatsächlich mit der SDK Version 26 konfiguriert wurde.

Nützliche Links:
Installation Android Studio (englisch)
Android Emulator Acceleration (englisch) Create your first Cordova app (englisch)