blob: 9453f284fbb6dcfc1fe8d2782f2cc417dc230490 [file] [log] [blame]
# 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