Update flutter_tools to use package:file throughout (#7385)
This removes direct file access from within flutter_tools
in favor of using `package:file` via a `FileSystem` that's
accessed via the `ApplicationContext`.
This lays the groundwork for us to be able to easily swap
out the underlying file system when running Flutter tools,
which will be used to provide a record/replay file system,
analogous to what we have for process invocations.
diff --git a/packages/flutter_tools/lib/src/android/android_sdk.dart b/packages/flutter_tools/lib/src/android/android_sdk.dart
index caf9686..832d7fe 100644
--- a/packages/flutter_tools/lib/src/android/android_sdk.dart
+++ b/packages/flutter_tools/lib/src/android/android_sdk.dart
@@ -2,13 +2,14 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-import 'dart:io';
+import 'dart:io' as io;
import 'package:path/path.dart' as path;
import 'package:pub_semver/pub_semver.dart';
import '../base/common.dart';
import '../base/context.dart';
+import '../base/file_system.dart';
import '../base/os.dart';
import '../globals.dart';
@@ -64,12 +65,12 @@
static AndroidSdk locateAndroidSdk() {
String androidHomeDir;
- if (Platform.environment.containsKey(kAndroidHome)) {
- androidHomeDir = Platform.environment[kAndroidHome];
- } else if (Platform.isLinux) {
+ if (io.Platform.environment.containsKey(kAndroidHome)) {
+ androidHomeDir = io.Platform.environment[kAndroidHome];
+ } else if (io.Platform.isLinux) {
if (homeDirPath != null)
androidHomeDir = '$homeDirPath/Android/Sdk';
- } else if (Platform.isMacOS) {
+ } else if (io.Platform.isMacOS) {
if (homeDirPath != null)
androidHomeDir = '$homeDirPath/Library/Android/sdk';
}
@@ -84,7 +85,7 @@
File aaptBin = os.which('aapt'); // in build-tools/$version/aapt
if (aaptBin != null) {
// Make sure we're using the aapt from the SDK.
- aaptBin = new File(aaptBin.resolveSymbolicLinksSync());
+ aaptBin = fs.file(aaptBin.resolveSymbolicLinksSync());
String dir = aaptBin.parent.parent.parent.path;
if (validSdkDirectory(dir))
return new AndroidSdk(dir);
@@ -93,7 +94,7 @@
File adbBin = os.which('adb'); // in platform-tools/adb
if (adbBin != null) {
// Make sure we're using the adb from the SDK.
- adbBin = new File(adbBin.resolveSymbolicLinksSync());
+ adbBin = fs.file(adbBin.resolveSymbolicLinksSync());
String dir = adbBin.parent.parent.path;
if (validSdkDirectory(dir))
return new AndroidSdk(dir);
@@ -105,7 +106,7 @@
}
static bool validSdkDirectory(String dir) {
- return FileSystemEntity.isDirectorySync(path.join(dir, 'platform-tools'));
+ return fs.isDirectorySync(path.join(dir, 'platform-tools'));
}
List<AndroidSdkVersion> get sdkVersions => _sdkVersions;
@@ -117,7 +118,7 @@
/// Validate the Android SDK. This returns an empty list if there are no
/// issues; otherwise, it returns a list of issues found.
List<String> validateSdkWellFormed() {
- if (!FileSystemEntity.isFileSync(adbPath))
+ if (!fs.isFileSync(adbPath))
return <String>['Android SDK file not found: $adbPath.'];
if (sdkVersions.isEmpty || latestVersion == null)
@@ -133,7 +134,7 @@
void _init() {
List<String> platforms = <String>[]; // android-22, ...
- Directory platformsDir = new Directory(path.join(directory, 'platforms'));
+ Directory platformsDir = fs.directory(path.join(directory, 'platforms'));
if (platformsDir.existsSync()) {
platforms = platformsDir
.listSync()
@@ -144,7 +145,7 @@
List<Version> buildTools = <Version>[]; // 19.1.0, 22.0.1, ...
- Directory buildToolsDir = new Directory(path.join(directory, 'build-tools'));
+ Directory buildToolsDir = fs.directory(path.join(directory, 'build-tools'));
if (buildToolsDir.existsSync()) {
buildTools = buildToolsDir
.listSync()
@@ -253,7 +254,7 @@
String toString() => '[${sdk.directory}, SDK version $sdkLevel, build-tools $buildToolsVersionName]';
String _exists(String path) {
- if (!FileSystemEntity.isFileSync(path))
+ if (!fs.isFileSync(path))
return 'Android SDK file not found: $path.';
return null;
}