¿Cómo debo configurar Travis-CI para una biblioteca de Android?
Estoy desarrollando una biblioteca de Android ( RateMyApp , que se puede encontrar en GitHub), pero no puedo ver cómo debo configurar Travis CI para construirlo cada vez que empuje nuevo código.
El archivo .travis.yml
que estoy usando es el siguiente:
- Travis CI para Android
- Travis CI para Android - Error de compilación: No se pudo encontrar el destino y no se encontraron dependencias
- "Invalid --abi armeabi-v7a para el destino seleccionado" con las API de Google
- ¿Por qué Travis CI descarga todo lo que construye cada vez?
- Travis-CI Android pruebas con Gradle mantener el tiempo de espera
language: java script: - gradle bundleRelease
Pero parece ser ignorado porque gradle bundleRelease
nunca se invoca. En su lugar, obtengo la siguiente salida que me sugiere que gradle assemble
se invoca en su lugar.
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.
Leí la página enlazada en la documentación, pero por desgracia no me fue de mucha ayuda.
- Travis CI Android Tests: no hay dispositivos conectados
- Uso de Travis CI con Android
- Travis CI Android - No encuentra la versión que coincide
- Falso positivos: junit.framework.AssertionFailedError: EditText no se encuentra
- Leer versionName de build.gradle en bash
- Cómo ejecutar Prueba Travis-CI y Espresso
- ¿Cómo configurar un emulador que ejecuta API 25 usando una matriz de compilación en Travis CI?
- Travis CI se queda atascado en la creación de herramientas de construcción en Android
Aquí está mi archivo de yaml
que está construyendo apk. Pero debe funcionar también para la biblioteca.
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
Pero tenga cuidado ya que este script no empuja construido artefacto en cualquier lugar
Utilizo un script de instalación de SDK en .travis.yml
para 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
EDIT: Travis-CI ha implementado Android como un ciudadano de primera clase – http://blog.travis-ci.com/2014-05-07-android-build-support-now-in-beta/
Para gradle assemble
por qué está viendo gradle assemble
lugar de gradle bundleRelease
:
gradle assemble
se invoca por defecto en la install:
etapa de Travis (véase Travis docs para la descripción de etapas, y esta nota ).
Dado que no tiene una install:
sección de su script para anular el valor predeterminado, Travis invoca gradle assemble
.
Puede evitar esto añadiendo las siguientes líneas, lo que le dice a Travis que no haga nada durante la fase de instalación:
install: - true
Tuve un problema similar , con Travis ejecutando gradle assemble
cuando quería ejecutar gradlew assembleDebug
.
Por lo tanto, para mí, un guión de trabajo completo (a partir del 1 de mayo de 2014 con Android como ciudadano de primera clase ) es:
language: android jdk: oraclejdk7 android: components: - build-tools-19.0.1 install: - true script: TERM=dumb ./gradlew assembleDebug
Gracias a Austyn Mahoney por aclarar esto para mí aquí .
EDITAR
A partir del 8 de mayo de 2014, Travis CI ha eliminado la install:
predeterminada install:
etapa para la versión beta de Android, como se analiza aquí . Por lo tanto, ahora debe ser capaz de eliminar la install:
etapa de su script, y Travis no debe ejecutar gradle assemble
.