| # 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.""" |
| |
| def install(self): |
| """Installs Android SDK in cache.""" |
| android_root = self.m.path['cache'].join('android_root') |
| with self.m.step.nest('Download Android SDK Components'): |
| self.m.cipd.ensure( |
| android_root.join('platform-tools'), |
| self.m.cipd.EnsureFile().add_package( |
| 'flutter/android/sdk/platform-tools/${platform}', |
| 'version:29.0.2', |
| ), |
| ) |
| self.m.cipd.ensure( |
| android_root.join('platforms'), |
| self.m.cipd.EnsureFile().add_package( |
| 'flutter/android/sdk/platforms', |
| 'version:29r1', |
| ), |
| ) |
| self.m.cipd.ensure( |
| android_root.join('build-tools'), |
| self.m.cipd.EnsureFile().add_package( |
| 'flutter/android/sdk/build-tools/${platform}', |
| 'version:29.0.1', |
| ), |
| ) |
| |
| with self.m.step.nest('Android SDK Licenses'): |
| self.m.file.ensure_directory('mkdir licenses', |
| android_root.join('licenses')) |
| self.m.file.write_text( |
| 'android sdk license', |
| android_root.join('licenses', 'android-sdk-license'), |
| str(self.m.properties['android_sdk_license']), |
| ) |
| self.m.file.write_text( |
| 'android sdk preview license', |
| android_root.join('licenses', 'android-sdk-preview-license'), |
| str(self.m.properties['android_sdk_preview_license']), |
| ) |
| |
| @contextmanager |
| def context(self): |
| """Yields a context that contains Android SDK environment. |
| |
| Must call api.android_sdk.install() first. |
| """ |
| android_root = self.m.path['cache'].join('android_root') |
| with self.m.context( |
| env={'ANDROID_SDK_ROOT': android_root}, |
| env_prefixes={'PATH': [android_root.join('platform-tools')]}): |
| yield |