diff --git a/packages/flutter_tools/lib/src/cache.dart b/packages/flutter_tools/lib/src/cache.dart index c2db5a63365..f59bf22218a 100644 --- a/packages/flutter_tools/lib/src/cache.dart +++ b/packages/flutter_tools/lib/src/cache.dart @@ -254,51 +254,55 @@ class FlutterEngine { List _getPackageDirs() => const [kSkyEngine]; - List _getEngineDirs() { - List dirs = [ - 'android-arm', - 'android-arm-profile', - 'android-arm-release', - 'android-x64', - 'android-x86', - ]; - - if (cache.includeAllPlatforms) - dirs.addAll(['ios', 'ios-profile', 'ios-release', 'linux-x64']); - else if (platform.isMacOS) - dirs.addAll(['ios', 'ios-profile', 'ios-release']); - else if (platform.isLinux) - dirs.add('linux-x64'); - - return dirs; - } - // Return a list of (cache directory path, download URL path) tuples. - List> _getToolsDirs() { + List> _getBinaryDirs() { + List> binaryDirs = >[]; + if (cache.includeAllPlatforms) - return >[] - ..addAll(_osxToolsDirs) - ..addAll(_linuxToolsDirs); - else if (platform.isMacOS) - return _osxToolsDirs; + binaryDirs + ..addAll(_osxBinaryDirs) + ..addAll(_linuxBinaryDirs) + ..addAll(_androidBinaryDirs) + ..addAll(_iosBinaryDirs); else if (platform.isLinux) - return _linuxToolsDirs; - else - return >[]; + binaryDirs + ..addAll(_linuxBinaryDirs) + ..addAll(_androidBinaryDirs); + else if (platform.isMacOS) + binaryDirs + ..addAll(_osxBinaryDirs) + ..addAll(_androidBinaryDirs) + ..addAll(_iosBinaryDirs); + + return binaryDirs; } - List> get _osxToolsDirs => >[ + List> get _osxBinaryDirs => >[ ['darwin-x64', 'darwin-x64/artifacts.zip'], ['android-arm-profile/darwin-x64', 'android-arm-profile/darwin-x64.zip'], ['android-arm-release/darwin-x64', 'android-arm-release/darwin-x64.zip'], ]; - List> get _linuxToolsDirs => >[ + List> get _linuxBinaryDirs => >[ ['linux-x64', 'linux-x64/artifacts.zip'], ['android-arm-profile/linux-x64', 'android-arm-profile/linux-x64.zip'], ['android-arm-release/linux-x64', 'android-arm-release/linux-x64.zip'], ]; + List> get _androidBinaryDirs => >[ + ['android-x86', 'android-x86/artifacts.zip'], + ['android-x64', 'android-x64/artifacts.zip'], + ['android-arm', 'android-arm/artifacts.zip'], + ['android-arm-profile', 'android-arm-profile/artifacts.zip'], + ['android-arm-release', 'android-arm-release/artifacts.zip'], + ]; + + List> get _iosBinaryDirs => >[ + ['ios', 'ios/artifacts.zip'], + ['ios-profile', 'ios-profile/artifacts.zip'], + ['ios-release', 'ios-release/artifacts.zip'], + ]; + bool isUpToDate() { Directory pkgDir = cache.getCacheDir('pkg'); for (String pkgName in _getPackageDirs()) { @@ -317,13 +321,7 @@ class FlutterEngine { return false; Directory engineDir = cache.getArtifactDirectory(kName); - for (String dirName in _getEngineDirs()) { - Directory dir = fs.directory(path.join(engineDir.path, dirName)); - if (!dir.existsSync()) - return false; - } - - for (List toolsDir in _getToolsDirs()) { + for (List toolsDir in _getBinaryDirs()) { Directory dir = fs.directory(path.join(engineDir.path, toolsDir[0])); if (!dir.existsSync()) return false; @@ -366,10 +364,14 @@ class FlutterEngine { if (engineDir.existsSync()) engineDir.deleteSync(recursive: true); - for (String dirName in _getEngineDirs()) { - Directory dir = fs.directory(path.join(engineDir.path, dirName)); - await _downloadItem('Downloading engine artifacts $dirName...', - url + dirName + '/artifacts.zip', dir); + for (List toolsDir in _getBinaryDirs()) { + String cacheDir = toolsDir[0]; + String urlPath = toolsDir[1]; + Directory dir = fs.directory(path.join(engineDir.path, cacheDir)); + await _downloadItem('Downloading $cacheDir tools...', url + urlPath, dir); + + _makeFilesExecutable(dir); + File frameworkZip = fs.file(path.join(dir.path, 'Flutter.framework.zip')); if (frameworkZip.existsSync()) { Directory framework = fs.directory(path.join(dir.path, 'Flutter.framework')); @@ -378,14 +380,6 @@ class FlutterEngine { } } - for (List toolsDir in _getToolsDirs()) { - String cacheDir = toolsDir[0]; - String urlPath = toolsDir[1]; - Directory dir = fs.directory(path.join(engineDir.path, cacheDir)); - await _downloadItem('Downloading $cacheDir tools...', url + urlPath, dir); - _makeFilesExecutable(dir); - } - cache.setStampFor(kName, cache.getVersionFor(kName)); }