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