15
votes

Trying to get started with Travis CI for my Android projects. First I set up dummy project with Android Bootstrap, and added a the yml file from square's otto project - modified to have my username and repo name.

My build fails with the error "/home/travis/build.sh: line 94: android: command not found, even when square's project builds fine.

The error seems to indicate that the path isn't set properly, in spite of having these lines in my .travis.yml

  • export ANDROID_HOME=~/builds/f2prateek/FoodBot/android-sdk-linux
  • export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools

Is there something else I need to be setting up to get this right?

2

2 Answers

16
votes

Update 2014/05: Travis CI now has official support for Android.

http://docs.travis-ci.com/user/languages/android/

The workarounds below are not required anymore, unless you want to use it on a non-Android VM.


The issue is most likely with the fact that Travis CI switched over to 64-bit virtual machines. You need to install ia32-libs for Android to run in a 64-bit environment. This can currently be achieved with:

sudo apt-get install -qq --force-yes libgd2-xpm ia32-libs ia32-libs-multiarch

I wrote a blog post on getting Android builds running on Travis, which covers this as well as other details: http://rkistner.github.com/android/2013/02/05/android-builds-on-travis-ci/

Travis might support Android-specific virtual machines in the future, which will simplify the configuration. Follow the conversation on issue #56 for updates on this issue and discussions on the Android-specific VM.

3
votes

This reply covers up to Travis automatic testing. See the Medium article for the complete version: automatic testing and deployment.


Travis CI (@ API 26+)

Apparently from API 24 setting up the emulator is a pain on Travis is a pain[1][2][3][4].

Sean Barbeau, who's been digging through this for a lot more time than I have, has pretty much considered it impossible to emulate.

But there is a working and simpler alternative for API 26+, which is running the tests with gradlew instead of the adb emulator. It seems to have some limitations, but it should work. Credits to PocketHub.

sudo: required

language: android
jdk: oraclejdk8

before_cache:
  - rm -f  $HOME/.gradle/caches/modules-2/modules-2.lock
  - rm -rf $HOME/.gradle/caches/*/plugin-resolution/

cache:
  directories:
  - $HOME/.gradle/caches/
  - $HOME/.gradle/wrapper/
  - $HOME/.android/build-cache

env:
 global:
 - ANDROID_API=26
 - ANDROID_BUILD_TOOLS=26.0.2

android:
  components:
  - tools
  - tools # Running this twice get's the latest build tools (https://github.com/codepath/android_guides/wiki/Setting-up-Travis-CI)
  - platform-tools
  - android-${ANDROID_API}
  - build-tools-${ANDROID_BUILD_TOOLS}
  - extra

script:
- ./gradlew clean test build

Environment variables that you might have to adapt to your project ones:

Some information should be available either in the build.gradle or AndroidStudio -> Settings -> Android SDK -> SDK Tools

(if you're building a new project with an updated AndroidStudio you should just pick the latest versions in the following links)

ANDROID_API: https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels

ANDROID_BUILD_TOOLS: https://developer.android.com/studio/releases/build-tools.html

Example .travis.yml setup (with autodeploy to GitHub releases).