| # Copyright 2020 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| from contextlib import contextmanager |
| from recipe_engine import recipe_api |
| |
| |
| class AndroidSdkApi(recipe_api.RecipeApi): |
| """Provides Android SDK environment. |
| |
| Expects the android29 cache to be mounted on the swarming bot. |
| """ |
| |
| def install(self, sdk_root, env, env_prefixes): |
| """Installs Android SDK in cache. |
| |
| Args: |
| sdk_root(Path): The path to install the different android packages. |
| env(dict): Current environment variables. |
| env_prefixes(dict): Current environment prefixes variables. |
| """ |
| with self.m.step.nest('download Android SDK components'): |
| self.m.cipd.ensure( |
| sdk_root.join('tools'), |
| self.m.cipd.EnsureFile().add_package( |
| 'flutter/android/sdk/tools/${platform}', |
| 'version:26.1.1', |
| ), |
| ) |
| self.m.cipd.ensure( |
| sdk_root.join('platform-tools'), |
| self.m.cipd.EnsureFile().add_package( |
| 'flutter/android/sdk/platform-tools/${platform}', |
| 'version:29.0.2', |
| ), |
| ) |
| self.m.cipd.ensure( |
| sdk_root.join('platforms'), |
| self.m.cipd.EnsureFile().add_package( |
| 'flutter/android/sdk/platforms', |
| 'version:29r1', |
| ), |
| ) |
| self.m.cipd.ensure( |
| sdk_root.join('build-tools'), |
| self.m.cipd.EnsureFile().add_package( |
| 'flutter/android/sdk/build-tools/${platform}', |
| 'version:29.0.1', |
| ), |
| ) |
| self.m.cipd.ensure( |
| sdk_root.join('ndk-bundle'), |
| self.m.cipd.EnsureFile().add_package( |
| 'flutter/android/ndk/${platform}', |
| 'version:21.3.6528147', |
| ), |
| ) |
| self.m.cipd.ensure( |
| sdk_root.join('licenses'), |
| self.m.cipd.EnsureFile().add_package( |
| 'flutter_internal/android/sdk/licenses', |
| 'latest', |
| ), |
| ) |
| |
| # Setup environment variables |
| env['ANDROID_SDK_ROOT'] = sdk_root |
| env['ANDROID_HOME'] = sdk_root |
| env['GRADLE_USER_HOME'] = self.m.path['cache'].join('gradle') |
| env['GRADLE_OPTS'] = '-Dorg.gradle.daemon=false' |
| paths = env_prefixes.get('PATH', []) |
| paths.append(sdk_root.join('platform-tools')) |
| paths.append(sdk_root.join('tools')) |
| env_prefixes['PATH'] = paths |