Android SDK caching in Travis CI

I have few open libraries on which I installed Travis CI. They work fine, except that it takes 25 minutes to verify the build. Most of the time is spent downloading dependencies and Android SDK platforms.

I currently have the following .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 

As you can see, I have already cached several gradle directories, but it still does not cache the Android SDK platforms. I am sure that I am missing a few directories that I still need to cache.

Is there a way to make assemblies faster by caching these platforms and SDK dependencies?

+6
source share
1 answer

It is not recommended to cache SDK tools, but itโ€™s possible, I did it in the past, I will look for a sample

Please delete these unnecessary lines for now, in order to speed it up and tell me if this works.

  - 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 

You only need to install repositories, one emulator and specific components, and not a list like this:

 - 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) 

Update: I found this assembly where I cached tools for the SDK tools using a custom path as follows:

 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" 

You do not need to do this and directly cache the default path where the repositories are stored:

 /usr/local/android-sdk/extras 

You do not want to save all sdk tools to cache, including all system images.

The purpose of the caches is to make the installation specific to the language quick and easy, therefore everything related to tools like Bundler, pip, Composer, npm, Gradle, Maven is what the cache should.

Large files that install quickly but load slowly do not benefit from caching because they take so long to load from the cache as from the source:

  • Android SDK
  • Debian packages
  • JDK packages
  • Compiled binaries

Default environment options :

TRAVIS_BUILD_DIR : The absolute path to the directory in which the created repository was copied to the desktop.

+2
source

Source: https://habr.com/ru/post/1011792/


All Articles