Almacenamiento en caché del SDK de Android en Travis CI

Tengo pocas librerías de código abierto en las que he instalado Travis CI. Funcionan bien, excepto que tarda 25+ minutos para comprobar una construcción. La mayor parte del tiempo se pierde en la descarga de dependencias y plataformas Android SDK.

Actualmente tengo lo siguiente en mi .travis.yml

language: android jdk: - oraclejdk8 before_install: - chmod +x gradlew env: global: - ANDROID_API_LEVEL=24 - EMULATOR_API_LEVEL=21 - ANDROID_BUILD_TOOLS_VERSION=24.0.1 - ANDROID_ABI=google_apis/armeabi-v7a - ADB_INSTALL_TIMEOUT=20 # minutes (2 minutes by default) android: components: - tools - tools - platform-tools - build-tools-$ANDROID_BUILD_TOOLS_VERSION - android-$ANDROID_API_LEVEL - android-$EMULATOR_API_LEVEL - extra - add-on - extra-google-m2repository - extra-android-m2repository # Google Play Services - extra-google-google_play_services # Support library - extra-android-support - addon-google_apis-google-$ANDROID_API_LEVEL - addon-google_apis-google-$EMULATOR_API_LEVEL - sys-img-armeabi-v7a-addon-google_apis-google-$ANDROID_API_LEVEL - sys-img-armeabi-v7a-addon-google_apis-google-$EMULATOR_API_LEVEL before_cache: - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock cache: directories: - $HOME/.gradle/wrapper - $HOME/.gradle/native - $HOME/.gradle/daemon - $HOME/.gradle/caches/jars-1 - $HOME/.gradle/caches/2.3 before_script: - echo no | android create avd --force -n test -t android-21 --abi armeabi-v7a - emulator -avd test -no-skin -no-audio -no-window & - android-wait-for-emulator - adb shell input keyevent 82 & script: - gradle clean check 

Como puede ver, ya he almacenado en caché algunos directorios gradle, pero todavía no está almacenando en caché las plataformas Android SDK. Estoy seguro de que estoy perdiendo pocos directorios que todavía tengo que poner en caché.

¿Hay alguna manera de hacer las compilaciones más rápido mediante el almacenamiento en caché de las plataformas SDK y dependencias?

No se recomienda caching SDK herramientas, pero es posible, lo hice en el pasado, voy a buscar una muestra

Por favor, mientras tanto, eliminar estas líneas innecesarias para acelerar y decirme si funciona.

  - extra - add-on # Google Play Services - extra-google-google_play_services # Support library - extra-android-support - addon-google_apis-google-$ANDROID_API_LEVEL - sys-img-armeabi-v7a-addon-google_apis-google-$ANDROID_API_LEVEL 

Sólo es necesario instalar los repositorios, un emulador y componentes específicos, no una lista como esta:

 - add-on - extra Installing Archives: Preparing to install archives Downloading GPU Debugging tools, revision 1.0.3 Installing GPU Debugging tools, revision 1.0.3 Installed GPU Debugging tools, revision 1.0.3 Downloading Android Support Repository, revision 29 Installing Android Support Repository, revision 29 Installed Android Support Repository, revision 29 Downloading Android Support Library, revision 23.2.1 Installing Android Support Library, revision 23.2.1 Installed Android Support Library, revision 23.2.1 Downloading Google AdMob Ads SDK, revision 11 (Obsolete) Installing Google AdMob Ads SDK, revision 11 (Obsolete) Installed Google AdMob Ads SDK, revision 11 (Obsolete) Downloading Google Analytics App Tracking SDK, revision 3 (Obsolete) Installing Google Analytics App Tracking SDK, revision 3 (Obsolete) Installed Google Analytics App Tracking SDK, revision 3 (Obsolete) Downloading Android Auto Desktop Head Unit emulator, revision 1.1 Installing Android Auto Desktop Head Unit emulator, revision 1.1 Installed Android Auto Desktop Head Unit emulator, revision 1.1 Downloading Google Cloud Messaging for Android Library, revision 3 (Obsolete) Installing Google Cloud Messaging for Android Library, revision 3 (Obsolete) Installed Google Cloud Messaging for Android Library, revision 3 (Obsolete) Downloading Google Play services for Froyo, revision 12 (Obsolete) Installing Google Play services for Froyo, revision 12 (Obsolete) Installed Google Play services for Froyo, revision 12 (Obsolete) Downloading Google Play services, revision 29 Installing Google Play services, revision 29 Installed Google Play services, revision 29 Downloading Google Repository, revision 25 Installing Google Repository, revision 25 Installed Google Repository, revision 25 Downloading Google Play APK Expansion library, revision 1 Installing Google Play APK Expansion library, revision 1 Installed Google Play APK Expansion library, revision 1 Downloading Google Play Licensing Library, revision 1 Installing Google Play Licensing Library, revision 1 Installed Google Play Licensing Library, revision 1 Downloading Google Play Billing Library, revision 5 Installing Google Play Billing Library, revision 5 Installed Google Play Billing Library, revision 5 Downloading Android Auto API Simulators, revision 1 Installing Android Auto API Simulators, revision 1 Installed Android Auto API Simulators, revision 1 Downloading Google Web Driver, revision 2 Installing Google Web Driver, revision 2 Installed Google Web Driver, revision 2 Done. 15 packages installed. November 19, 2013 Do you accept the license 'google-gdk-license-35dc2951' [y/n]: y Installing Archives: Preparing to install archives Downloading Google APIs, Android API 23, revision 1 Installing Google APIs, Android API 23, revision 1 Installed Google APIs, Android API 23, revision 1 Downloading Google APIs, Android API 21, revision 1 Installing Google APIs, Android API 21, revision 1 Installed Google APIs, Android API 21, revision 1 Downloading Google APIs (x86 System Image), Android API 19, revision 18 Installing Google APIs (x86 System Image), Android API 19, revision 18 Installed Google APIs (x86 System Image), Android API 19, revision 18 Downloading Google APIs, Android API 19, revision 18 Installing Google APIs, Android API 19, revision 18 Installed Google APIs, Android API 19, revision 18 Downloading Glass Development Kit Preview, Android API 19, revision 11 Installing Glass Development Kit Preview, Android API 19, revision 11 Installed Glass Development Kit Preview, Android API 19, revision 11 Downloading Google APIs, Android API 18, revision 4 Installing Google APIs, Android API 18, revision 4 Installed Google APIs, Android API 18, revision 4 Downloading Google APIs, Android API 17, revision 4 Installing Google APIs, Android API 17, revision 4 Installed Google APIs, Android API 17, revision 4 Downloading Google APIs, Android API 16, revision 4 Installing Google APIs, Android API 16, revision 4 Installed Google APIs, Android API 16, revision 4 Downloading Google APIs, Android API 15, revision 3 Installing Google APIs, Android API 15, revision 3 Installed Google APIs, Android API 15, revision 3 Downloading Google APIs, Android API 10, revision 2 (Obsolete) Installing Google APIs, Android API 10, revision 2 (Obsolete) Installed Google APIs, Android API 10, revision 2 (Obsolete) 

Actualización: encontré esta versión donde estaba caché SDK herramientas extras utilizando una ruta personalizada como esta:

 cache: apt: true directories: - ${TRAVIS_BUILD_DIR}/gradle/caches/ - ${TRAVIS_BUILD_DIR}/gradle/wrapper/dists/ - ${TRAVIS_BUILD_DIR}/android-sdk/extras/ env: global: - GRADLE_USER_HOME=${TRAVIS_BUILD_DIR}/gradle - ANDROID_HOME=${TRAVIS_BUILD_DIR}/android-sdk - SDK=${TRAVIS_BUILD_DIR}/android-sdk - PATH=${GRADLE_USER_HOME}/bin/:${SDK}/:${SDK}/tools/:${SDK}/platform-tools/:${PATH} before_install: - echo "WARNING delete this when fixed"; export OLD_SDK=/usr/local/android-sdk-23.0.2; mkdir -p ${SDK}; cp -u -R ${OLD_SDK}/platforms ${SDK}/platforms; cp -u -R ${OLD_SDK}/system-images ${SDK}/system-images; cp -u -R ${OLD_SDK}/tools ${SDK}/tools || echo "CP ERROR" 

No es necesario hacerlo y guardar directamente en la memoria caché la ruta predeterminada donde residen los repositorios:

 /usr/local/android-sdk/extras 

No desea guardar las herramientas de sdk completas en caché incluyendo todas las imágenes del sistema.

El propósito de la caché es hacer que la instalación de dependencias específicas del idioma sea fácil y rápida, por lo que todo lo relacionado con herramientas como Bundler, pip, Composer, npm, Gradle, Maven, es lo que debe ir al caché.

Los archivos grandes que son rápidos de instalar pero lentos para descargar no se benefician del almacenamiento en caché, ya que tardan tanto en descargarse desde la caché como desde la fuente original:

  • SDK de Android
  • Paquetes Debian
  • Paquetes JDK
  • Binarios compilados

Variables de entorno predeterminadas :

TRAVIS_BUILD_DIR : La ruta absoluta al directorio donde se ha copiado el repositorio en el trabajador.

  • No se puede construir el proyecto con Travis-CI y Android
  • Travis ci build failing - causa: PermGen espacio
  • Las pruebas de Android fallan en Travis con ShellCommandUnresponsiveException
  • Comenzando google-services.json a GitHub
  • Travis CI se queda atascado en la creación de herramientas de construcción en Android
  • Dependencias de Gradle con Travis CI en proyecto Android
  • ¿Cuál es la mejor práctica para usar keystores para firmar la versión de lanzamiento de una aplicación para Android en Travis CI?
  • Retrolambda en Travis CI
  • ¿Cómo burlar el buildConfigField de Gradle para la construcción de Travis CI?
  • Cómo corregir el permiso gradlew denegado en travis.yml?
  • Travis CI skip pruebas (Gradle Android proyecto)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.