Setting up Build Environment for Cordova (Android) Applications on Cent OS 7
Sometimes, it becomes necessary to set up a Cordova build process on a Linux server–to let your colleagues make builds without doing any set up or make the built files available for download from the web. Here we will set up Android application build process on a clear Red Hat Cent OS 7 server.
We do not setup complex development environments often. Each time we have to do this, we usually forgot what we did last time, and have to go through lots of documentation and stumble upon the same errors again. Recently, I had to configure Android builds on a Linux server. This time, I documented each step carefully, so I could share it with you and hopefully save your precious time.
Let’s get to the business.
Hardware Requirements
- Clear Cent OS 7 virtual machine. Note that Cent OS 6 wouldn’t work due to low gcc version - Android build would throw an error.
- 1 CPU and 2 GB RAM. More resources–faster builds.
- 10 GB of free disk space
Required Software
- NVM and Node JS
- Cordova CLI - 8.1.2 at the moment
- Android SDK and CLI
- Java Development Kit 1.8.0
Installing NVM and Node JS
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
To install the latest version, get the up-to-date command here.
Re-open the terminal so that npm
command would become available and run:
nvm install 11
This will install the latest Node JS version. At the moment of writing it is 11.7.0. If you are reading this when later major Node version is out, use its version number instead.
Since this is your first Node installed via NPM, it would be used as a default Node. Read this article if you would like to find out how to change Node JS version with NVM.
To check that you are currently using the correct version of Node, run:
node -v
Installing Node global packages
You need to have some Node JS packages installed globally. This will make CLI commands necessary for making a build available from the terminal.
npm i -g cordova ionic
Of course, you can skip ionic, if you do not use Ionic Framework for your Cordova app. Do not forget to installed global NPM packages required by your application–be it yarn, webpack, gulp, etc.
Installing Java Development Kit
The next thing necessary for Cordova/Android development is JDK. Installation command:
yum install java-1.8.0-openjdk-devel
You need also set $JAVA_HOME
environmental variable to /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64
. Your path may be different, but $JAVA_HOME
should certainly point to the directory that contains ./bin/java
executable.
To do this, open your ~/.bash_profile
file in Vim editor and append the following:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64
The changes in .bash_profile
do not take place immediately, and to apply them, you need to reconnect to the server or run source ~/.bash_profile
.
Installing Gradle
Gradle is a build-automation system which is necessary for making Android builds. In order to install Gradle, we need to download it first. Grab the link to the latest version from this page.
wget https://services.gradle.org/distributions/gradle-5.1-bin.zip
Now create the destination folder and unzip Gradle in there:
mkdir /opt/gradle
unzip -d /opt/gradle gradle-5.1-bin.zip
Add Gradle path to your $PATH variable in your ~/.bash_profile
file:
PATH=$PATH:$HOME/bin:/opt/gradle/gradle-5.1/bin
Check if Gradle is installed correctly:
source ~/.bash_profile
gradle -v
Installing Android CLI and SDK packages
Download the latest Android Command Line tools from here. Do not download Android Studio, scroll to command line tools only.
wget https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
mkdir -p /opt/android
Move the archive to /opt/android
(so that it is available under /opt/android/tools
), unzip it in there, and add to the $PATH
environment variable /opt/android/tools
and /opt/android/tools/bin
. android
, sdkmanager
, and other CLI commands should become available, but note that they would work only if you set $JAVA_HOME
environment variable correctly.
Eventually, your $PATH
variable should look like the following:
PATH=$PATH:$HOME/bin:/opt/android/tools:/opt/android/tools/bin:/opt/gradle/gradle-5.1/bin
Do not forget to _source ~/.bash_profile
before proceeding to the next step.
Now it’s time to install SDK packages. To check available packages, run
sdkmanager --list
Among the list, we’d need the latest version of build tools
and platform-tools
, as well as Google Play Services–if you use their features such as push notifications. To install Google Play Services, run:
sdkmanager "build-tools;28.0.3" "platform-tools" "platforms;android-28" "extras;google;google_play_services"
Instead of "platforms;android-28"
or "build-tools;28.0.3"
use the latest version available.
The script will start downloading the updates. Accept the license agreement and wait till installation finishes.
If you run sdkmanager --list
once again, you will see the installed packages at the beginning of the output. And just in case, If you received Warning: File /root/.android/repositories.cfg could not be loaded
when trying to use sdkmanager, run touch ~/.android/repositories.cfg
.
Now add the $ANDROID_HOME variable to your .bash_profile
:
export ANDROID_HOME=/opt/android
Cordova CLI will throw an error if you do not have $JAVA_HOME
and $ANDROID_HOME
environment variables or if they contain incorrect paths.
…So now we are ready to go. Clone your project to the server. If you have not installed Git already, run yum install git. The first Android build would take some time, but the subsequent ones will finish much faster.
Hope, you went through all of these steps without any issues, and now are able to build .apk files from your smartphone even when you are far in the woods. Thanks for reading!