Support ANDROID_SDK_ROOT in addition to ANDROID_HOME (#25221)

* Fall back to ANDROID_SDK_ROOT if ANDROID_HOME is not set

And update descriptions to use the non-deprecated ANDROID_SDK_ROOT.

Fixes #15114.

* Remove trailing whitespace

* Update dev/devicelab/lib/framework/adb.dart

Co-Authored-By: DanTup <danny@tuppeny.com>

* Reformat long line
This commit is contained in:
Danny Tuppeny 2018-12-17 17:29:09 +00:00 committed by GitHub
parent f0871deb3e
commit c19142d8b7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 23 additions and 10 deletions

View file

@ -8,7 +8,7 @@ task:
# test path names with spaces in them.
CIRRUS_WORKING_DIR: "/tmp/flutter sdk"
PATH: "$CIRRUS_WORKING_DIR/bin:$CIRRUS_WORKING_DIR/bin/cache/dart-sdk/bin:$PATH"
ANDROID_HOME: "/opt/android_sdk"
ANDROID_SDK_ROOT: "/opt/android_sdk"
git_fetch_script:
- git fetch origin
- git fetch origin master # To set FETCH_HEAD for "git merge-base" to work

View file

@ -34,7 +34,7 @@ if [[ "$SHARD" = "deploy_gallery" ]]; then
fi
set -x
# ANDROID_HOME must be set in the env.
# ANDROID_SDK_ROOT must be set in the env.
(
cd examples/flutter_gallery
flutter build apk --release -t lib/main_publish.dart

View file

@ -184,7 +184,9 @@ Future<void> _flutterBuildAot(String relativePathToApplication) async {
Future<void> _flutterBuildApk(String relativePathToApplication) async {
// TODO(dnfield): See if we can get Android SDK on all Cirrus platforms.
if (Platform.environment['ANDROID_HOME']?.isEmpty ?? true) {
if (
(Platform.environment['ANDROID_HOME']?.isEmpty ?? true) &&
(Platform.environment['ANDROID_SDK_ROOT']?.isEmpty ?? true)) {
return;
}
print('Running APK build tests...');

View file

@ -102,9 +102,9 @@ reproduce a CI test failure locally.
## Prerequisites
You must set the `ANDROID_HOME` environment variable to run tests on Android. If
you have a local build of the Flutter engine, then you have a copy of the
Android SDK at `.../engine/src/third_party/android_tools/sdk`.
You must set the `ANDROID_HOME` or `ANDROID_SDK_ROOT` environment variable to run
tests on Android. If you have a local build of the Flutter engine, then you have
a copy of the Android SDK at `.../engine/src/third_party/android_tools/sdk`.
You can find where your Android SDK is using `flutter doctor`.

View file

@ -461,11 +461,15 @@ class IosDevice implements Device {
/// Path to the `adb` executable.
String get adbPath {
final String androidHome = Platform.environment['ANDROID_HOME'];
final String androidHome =
Platform.environment['ANDROID_HOME'] != null
? Platform.environment['ANDROID_HOME']
: Platform.environment['ANDROID_SDK_ROOT'];
if (androidHome == null)
throw 'ANDROID_HOME environment variable missing. This variable must '
'point to the Android SDK directory containing platform-tools.';
throw 'The ANDROID_SDK_ROOT and ANDROID_HOME environment variables are '
'missing. At least one of these variables must point to the Android '
'SDK directory containing platform-tools.';
final String adbPath = path.join(androidHome, 'platform-tools/adb');

View file

@ -21,6 +21,7 @@ import 'android_studio.dart' as android_studio;
AndroidSdk get androidSdk => context[AndroidSdk];
const String kAndroidHome = 'ANDROID_HOME';
const String kAndroidSdkRoot = 'ANDROID_SDK_ROOT';
// Android SDK layout:
@ -243,6 +244,8 @@ class AndroidSdk {
androidHomeDir = config.getValue('android-sdk');
} else if (platform.environment.containsKey(kAndroidHome)) {
androidHomeDir = platform.environment[kAndroidHome];
} else if (platform.environment.containsKey(kAndroidSdkRoot)) {
androidHomeDir = platform.environment[kAndroidSdkRoot];
} else if (platform.isLinux) {
if (homeDirPath != null)
androidHomeDir = fs.path.join(homeDirPath, 'Android', 'Sdk');

View file

@ -125,6 +125,10 @@ class AndroidValidator extends DoctorValidator {
final String androidHomeDir = platform.environment[kAndroidHome];
messages.add(ValidationMessage('$kAndroidHome = $androidHomeDir'));
}
if (platform.environment.containsKey(kAndroidSdkRoot)) {
final String androidSdkRoot = platform.environment[kAndroidSdkRoot];
messages.add(ValidationMessage('$kAndroidSdkRoot = $androidSdkRoot'));
}
final List<String> validationResult = androidSdk.validateSdkWellFormed();

View file

@ -30,7 +30,7 @@ Future<void> buildApk({
// Validate that we can find an android sdk.
if (androidSdk == null)
throwToolExit('No Android SDK found. Try setting the ANDROID_HOME environment variable.');
throwToolExit('No Android SDK found. Try setting the ANDROID_SDK_ROOT environment variable.');
final List<String> validationResult = androidSdk.validateSdkWellFormed();
if (validationResult.isNotEmpty) {