Android : Continuous Integration (Travis CI) with Java
It's very good for the developer to know the build status of his application. THis makes it better for an application to be monitored 24hours.
Today we are going to explore how to add continuous integration in an Android Java project. There are a lot of Continuous integration tools such as Travis CI, Circle CI, Jenkins, Bamboo, TeamCity etc. For our case, we are going to use TravisCI, but you can also feel free to explore the rest.
The following are the steps you take :
- First and foremost start by creating your project in Android Studio.
- After creating the project, navigate to the Left top corner, change the drop down from Android to Project. Below is the screenshot:
- Then create a file in the root folder of your project called
.travis.yml
, for my case it's called ConvergeLevelApp. - Open the
.travis.yml
file and include the following :
a) Set the language of the project in the file and JDK version:
language: android
jdk: oraclejdk8
b). Install Android SDK components as below, you can even define the list of SDK components to be installed :
android:
components:
- build-tools-26.0.2
- android-26
- extra
Note.
The exact component names must be specified (filter aliases like add-on
or extra
are also accepted). To get a list of available exact component names and descriptions run the command sdkmanager --list
(preferably in your local development machine).
c). Then we have to also deal with the licenses,but by default, Travis CI will accept all the requested licenses, but it is also possible to define a whitelist of licenses to be accepted, below is a full code snippet:
language: android
android:
components:
- build-tools-26.0.2
- android-26
- add-on
- extra
licenses:
- 'android-sdk-preview-license-52d11cd2'
- 'android-sdk-license-.+'
- 'google-gdk-license-.+'
d). Next, Starting the emulator on Travis. This also helps so much in several circumstances, such as running instrumentation tests to see if all the tests are passing and so much more. At the moment, Currently, Travis supports **android 22 ** emulation and below , as per the documentation Android Travis. But this may change in the future feel free to visit the documentation.
Below is the code snippet for emulation:
# Emulator Management: Create, Start and Wait
before_script:
- echo no | android create avd --force -n test -t android-22 --abi armeabi-v7a
- emulator -avd test -no-audio -no-window &
- android-wait-for-emulator
- adb shell input keyevent 82 &
e). Below is the final output of the .travis.yml
file.
language: android
jdk: oraclejdk8
env:
global:
- ANDROID_API_LEVEL=25
- ANDROID_BUILD_TOOLS_VERSION=25.0.0
android:
licenses:
- 'android-sdk-preview-license-.+'
- 'android-sdk-license-.+'
- 'google-gdk-license-.+'
components:
- tools
- tools
- platform-tools
- extra-google-google_play_services
- extra-google-m2repository
- extra-android-m2repository
- build-tools-25.0.0
- android-22
- sys-img-armeabi-v7a-android-22
before_install:
- yes | sdkmanager "platforms;android-27"
- yes | sdkmanager "platforms;android-28"
before_script:
- echo no | android create avd --force -n test -t android-22 --abi armeabi-v7a
- emulator -avd test -no-audio -no-window &
- android-wait-for-emulator
- adb shell input keyevent 82 &
After doing all these steps.
-
Navigate to travis link Travis CI and signup with your github account.Below is the screenshot.
-
Ensure that you have already pushed your entire project on Github, so that it can be visible on your Travis CI account.Check this link for more details How to link Android Studio with Github.
After pushing your project on Github , Navigate on Travis CI dashboard , you will search your project and you switch your project ON to enusre that you have enabled Travis in your project. Below is how your project should look after enabling it.
-
Then lastly your build will start building until it succeeds.
This is the status you have to get.
If you get build failed, that means you were not successful while building the project. In the engineering industry this means there's a problem in your project such as code maintainability issues, features breaking or crashing and so many other bugs.
In conclusion, with Continuous Integration in our projects this reduces a lot of the bugs in the project.
For more information visit Travis Android documentation
Good luck. Cheers.
helped me a lot, thanks man