我应该如何配置Travis-CI来支持Android库?

7
我正在开发一个Android库(RateMyApp,你可以在GitHub上找到),但我不知道如何设置Travis CI以便每次我推送新代码时都能构建它。
我使用的.travis.yml文件如下:
language: java
script:
    - gradle bundleRelease

但是似乎被忽略了,因为从来没有调用gradle bundleRelease。相反,我得到了以下输出,表明调用了gradle assemble

Using worker: worker-linux-8-1.bb.travis-ci.org:travis-linux-5

travis_fold:start:git.1
$ git clone --depth=50 --branch=master git://github.com/mariosangiorgio/RateMyApp.git
[...]
mariosangiorgio/RateMyApp
Cloning into 'mariosangiorgio/RateMyApp'...
done.
travis_fold:end:git.1    
$ cd mariosangiorgio/RateMyApp
travis_fold:start:git.3
$ git checkout -qf 90faf4539c835136895ea92dd2bcc7da12ad1145
travis_fold:end:git.3
$ java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
$ javac -version
javac 1.7.0_45
travis_fold:start:install
$ gradle assemble
[...]
The command "gradle assemble" failed and exited with 1 during install.

Your build has been stopped.

我阅读了文档中链接的页面,但很遗憾对我并没有太大帮助。

3个回答

3

我在.travis.yml中使用一个SDK安装脚本来为Hilt进行安装。

language: java
jdk: oraclejdk7
before_install:
    # Install base Android SDK and components
    - sudo apt-get update -qq
    - sudo apt-get install -qq libstdc++6:i386 lib32z1 expect
    - export COMPONENTS=build-tools-19.0.3,android-19,extra-android-support,extra-android-m2repository,extra-google-m2repository
    - export LICENSES=android-sdk-license-bcbbd656
    - curl -3L https://raw.github.com/embarkmobile/android-sdk-installer/version-2/android-sdk-installer | bash /dev/stdin --install=$COMPONENTS --accept=$LICENSES
    - source ~/.android-sdk-installer/env

install:
    # Without TERM=dumb, we get mangled output in the Travis console
    - TERM=dumb ./gradlew clean assemble -PdisablePreDex

script:
    - TERM=dumb ./gradlew check -PdisablePreDex

编辑:Travis-CI已将Android作为一等公民实现-http://blog.travis-ci.com/2014-05-07-android-build-support-now-in-beta/


3
这是我的yaml文件,用于构建apk,但也适用于库文件。
language: java
jdk: oraclejdk7
branches:
  only:
    - master
before_install:
  - chmod +x gradlew
  # Install base Android SDK
  - sudo apt-get update -qq
  - if [ `uname -m` = x86_64 ]; then sudo apt-get install -qq --force-yes libgd2-xpm ia32-libs ia32-libs-multiarch > /dev/null; fi
  - wget http://dl.google.com/android/android-sdk_r22.0.5-linux.tgz
  - tar xzf android-sdk_r22.0.5-linux.tgz
  - export ANDROID_HOME=$PWD/android-sdk-linux
  - export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools
  # install android build tools
  - wget https://dl-ssl.google.com/android/repository/build-tools_r19.0.1-linux.zip
  - unzip build-tools_r19.0.1-linux.zip -d $ANDROID_HOME
  - mkdir -p $ANDROID_HOME/build-tools/
  - mv $ANDROID_HOME/android-4.4.2 $ANDROID_HOME/build-tools/19.0.1
  # Install required components.
  - echo yes | android update sdk --filter platform-tools --no-ui --force > /dev/null
  - echo yes | android update sdk --filter android-19 --no-ui --force > /dev/null
  - echo yes | android update sdk --filter extra-android-support --no-ui --force > /dev/null
  - echo yes | android update sdk --filter extra-android-m2repository --no-ui --force > /dev/null
install:
  - true
script:
  - TERM=dumb ./gradlew test assembleDebug

但要小心,因为这个脚本不会把构建好的工件推送到任何地方。


谢谢!您能否给我指点一些阅读材料,以便TravisCI将构件发布到某个地方? - mariosangiorgio
很遗憾,它不起作用。我收到了一个错误消息。你有什么想法是什么原因引起的吗?错误消息链接 - mariosangiorgio
1
你可以在gradle命令 - TERM=dumb ./gradlew bundleRelease 中加入 TERM=dumb 吗? - Eugen Martynov
谢谢,这对于调试问题非常有用。在我的情况下,错误是“无法找到目标android-18”,这是由于安装的SDK版本与我告诉Gradle要使用的版本不匹配所致。 - mariosangiorgio
是的,我在我的项目中使用SDK 19。很好,你已经修复了它。 - Eugen Martynov
答案已过时,因为Travis CI现在原生支持Android。 - Eugen Martynov

1
为了解释为什么您看到的是gradle assemble而不是gradle bundleRelease
在Travis的install:阶段中,默认情况下会调用gradle assemble(请参见Travis文档以获取阶段描述和this note)。
由于您的脚本没有install:部分来覆盖默认设置,因此Travis正在调用gradle assemble
您可以通过添加以下行来防止这种情况发生,这将告诉Travis在安装阶段不执行任何操作:
install:
    - true

我曾经遇到过类似的问题,当我想要Travis执行gradlew assembleDebug时,它执行了gradle assemble

因此,对于我来说,一个完整的工作脚本(截至2014年5月1日,将Android视为一等公民)是:

language: android
jdk: oraclejdk7

android:
  components:
    - build-tools-19.0.1

install:
    - true

script: TERM=dumb ./gradlew assembleDebug

感谢Austyn Mahoney在这里为我澄清了这一点。 编辑 截至2014年5月8日,Travis CI已删除Android beta的默认install:阶段,详情请参见此处。因此,您现在应该能够从脚本中删除install:阶段,并且Travis不会执行gradle assemble

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接