Installing
Cordova under Linux Ubuntu / Mint is simple but many guides found on the
web and elsewhere are out of date and/or hard to follow. This post is a
list of
commands for those faced with an incomprehensible set of instructions
and as an aid mémoire for me. Commands for installation were tested using a fresh copy of Linux Mint 18.2 (Ubuntu 16.04 Xenial Xerus). As recommended, Cordova is installed using the JavaScript package manager NPM.
Only
minimal experience using the command line is assumed. Reminder: paste
in a terminal window is Edit > Paste or Ctrl+Shift+V. The sudo
password expires after 15 minutes (by default) so probably best to copy
and paste the first sudo prefixed command separately for each section. With this proviso commands can be copied and pasted as a block (ensure the basic command prompt shows after or press return to get it). After sudo all characters in the user password you type are hidden – no dots or * displayed. Texts following # are my remarks and can be in included in copy or not as convenient.
Open a terminal window
Click on the desktop and press Ctrl+Alt+T. The command prompt shows:
martin@mint18 ~ $ # for example
The prompt is shown below where a particular current directory is assumed in commands – avoid including bits of it in copy .
Check Java is installed
java -version
If Oracle Java has been installed previously this should get something like
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode
If it is not present enter the commands
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
A similar painless method can be used to install Java 10. If Open Java is present from java -version it is probably best to uninstall it.
Check Node.js installed
nodejs --version
If not found download an installer for Node.js LTS version:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get update # essential for a correct install
and do the install
sudo apt-get install -y nodejs
Node.js should include the JavaScript package manager NPM so check it worked by getting versions:
nodejs -v
sudo npm -v # sudo is optional here but will save a spurious update-check warning
Install the Cordova application
sudo npm install -g cordova
sudo chown -R $USER ~/.config/configstore # give the user (you) access after NPM install as root
cordova # should display a help screen
Set system variables
Cordova requires two new system variables JAVA_HOME and ANDROID_HOME and modification of the PATH variable.
JAVA_HOME
sudo find / -name java-10-oracle # or java-8
This will return something like
[sudo] password for martin:
find: ‘/run/user/1000/gvfs’: Permission denied
/etc/java-10-oracle
/usr/lib/jvm/java-10-oracle
The JVM location is the one we want.
Find the name of the text editor that came with your system (Help > About from its menu bar). Open a new terminal window and run the editor with root privilegessudo editor-name # Do not close the terminal window or this may close the editor instance
# alternatively
sudo editor-name /etc/environment # should open the required file directly
Edit /etc/environment adding a line at the bottom of the file
JAVA_HOME="/usr/lib/jvm/java-10-oracle" # or substitute java-8Save the modified file, close the editor and terminal window.
ANDROID_HOME and PATH
To generate an Android app Cordova
requires the Android SDK and Gradle. Both should be installed under
your home directory with their locations identified in these system
variables. If Android Studio is installed at a later date, when you
first create a project it will copy the SDK and more to a directory
~/Android/Sdk so might as well put it there. The version of Gradle
included in PATH below is that used in TM352-17J: modify for a later
version.
Open the text editor and do File > Open, Right Click and check Show Hidden Files. Open the file .bashrc and add the following lines at the bottom. Alternatively entering: editor-name ~/.bashrc in a terminal should open the file directly.
# added for Cordova install
export ANDROID_HOME=$HOME/Android/Sdk
export PATH=$JAVA_HOME/bin:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools:$HOME/Gradle/gradle-4.4.1/bin:$PATH
Save the file.
To register JAVA_HOME the system must be restarted but before doing so you may wish to save a copy of the installation so far from the terminal window to a file: Edit > Select All, Ctrl+Shift+C and paste into a text editor.
Install Android SDK
Open a terminal window and create the directory for the SDK
martin@mint18 ~$ mkdir Android/Sdk
Download
the Linux sdk-tools .zip from
https://developer.android.com/studio/#downloads (from the 'Command line
tools only' section) to Android/Sdk. Extract the zip’s tools folder into
this directory.
It is essential that ANDROID_HOME is set correctly here or sdkmanager will put files in the wrong folder. To check it is correct
echo $ANDROID_HOMEOptionally, to avoid a warning enter
martin@mint18 ~$ mkdir .android && touch .android/repositories.cfg
Copy the following, then paste and enter at the command prompt
sdkmanager "platform-tools" "platforms;android-26" "build-tools;26.0.3" "system-images;android-26;google_apis;x86" "extras;android;m2repository" "extras;google;m2repository"
Accept licence agreements. Versions are those used in TM252-17J: check they meet your requirements.
There
should now be a new folder ‘cache’ in /home/martin/.android/ containing
many .xml scripts and several new folders in ANDROID_HOME including
build-tools. The file repositories.cfg remains empty indicating this
file and any warning generated if it does not exist are probably
spurious.
martin@mint18 ~$ mkdir GradleDownload Gradle v4.4.1 – complete from https://gradle.org/releases/ into the new Gradle folder and extract into ~/Gradle. If you download a later version do not forget that PATH must have been adjusted accordingly.
Check installation
To check that all this worked a Cordova project must be created
martin@mint18 ~$ cordova create Test_cordova
cd Test_cordova
cordova platforms add android
cordova requirements
The result should be
Android Studio project detected
Requirements check results for android:
Java JDK: installed 1.8.0
Android SDK: installed true
Android target: installed android-26
Gradle: installed /home/martin/Gradle/gradle-4.4.1/bin/gradle
If an error is seen check the relevant system variable is correct and the names of files match. Otherwise installation is complete.
JAVA_HOME could be defined in ~/.bashrc using export as for ANDROID_HOME and PATH saving the complication of text editor root privileges. Java is available to all applications so it is good practice to put the definition in /etc/environment. If additional software, Android Studio for example, is installed Cordova will continue to work even if JAVA_HOME is modified for some reason.