From 04d01df1aeb287748e84643f9f91b1cef3fb28de Mon Sep 17 00:00:00 2001 From: hyiso Date: Sat, 11 May 2024 17:01:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E5=BC=80=E5=8F=91=E4=B8=8D?= =?UTF-8?q?=E5=BC=BA=E4=BE=9D=E8=B5=96=20--local-engine?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: hyiso --- packages/flutter_tools/lib/src/artifacts.dart | 119 +++++++++--------- .../flutter_tools/lib/src/build_info.dart | 12 -- .../build_system/targets/shader_compiler.dart | 1 + packages/flutter_tools/lib/src/cache.dart | 28 ++++- .../lib/src/commands/build_app.dart | 9 ++ .../lib/src/commands/build_hap.dart | 9 ++ .../lib/src/commands/build_har.dart | 9 ++ .../lib/src/commands/build_hsp.dart | 9 ++ packages/flutter_tools/lib/src/compile.dart | 24 +--- .../flutter_tools/lib/src/flutter_cache.dart | 115 +++++++++++++++++ .../lib/src/resident_runner.dart | 4 +- .../lib/src/runner/flutter_command.dart | 2 +- 12 files changed, 245 insertions(+), 96 deletions(-) diff --git a/packages/flutter_tools/lib/src/artifacts.dart b/packages/flutter_tools/lib/src/artifacts.dart index e715808359..6a75ffd154 100644 --- a/packages/flutter_tools/lib/src/artifacts.dart +++ b/packages/flutter_tools/lib/src/artifacts.dart @@ -49,12 +49,6 @@ enum Artifact { /// Tools related to subsetting or icon font files. fontSubset, constFinder, - - /// the flutter engine runtime - flutterEngineSo, - - /// The dart binary used to execute any of the required snapshots. - engineDartBinary, } /// A subset of [Artifact]s that are platform and build mode independent @@ -216,10 +210,6 @@ String? _artifactToFileName(Artifact artifact, [ TargetPlatform? platform, Build return 'font-subset$exe'; case Artifact.constFinder: return 'const_finder.dart.snapshot'; - case Artifact.flutterEngineSo: - return 'libflutter.so'; - case Artifact.engineDartBinary: - return 'dart$exe'; } } @@ -513,8 +503,6 @@ class CachedArtifacts implements Artifacts { case Artifact.vmSnapshotData: case Artifact.windowsCppClientWrapper: case Artifact.windowsDesktopPath: - case Artifact.flutterEngineSo: - case Artifact.engineDartBinary: return _getHostArtifactPath(artifact, platform, mode); } } @@ -547,8 +535,6 @@ class CachedArtifacts implements Artifacts { case Artifact.vmSnapshotData: case Artifact.windowsCppClientWrapper: case Artifact.windowsDesktopPath: - case Artifact.flutterEngineSo: - case Artifact.engineDartBinary: return _getHostArtifactPath(artifact, platform, mode); } } @@ -593,16 +579,17 @@ class CachedArtifacts implements Artifacts { case Artifact.vmSnapshotData: case Artifact.windowsCppClientWrapper: case Artifact.windowsDesktopPath: - case Artifact.flutterEngineSo: - case Artifact.engineDartBinary: return _getHostArtifactPath(artifact, platform, mode); } } String _getOhosArtifactPath(Artifact artifact, TargetPlatform platform, BuildMode mode) { - final String? engineDir = _getEngineArtifactsPath(platform, mode); + final String engineDir = _getEngineArtifactsPath(platform, mode)!; switch (artifact) { case Artifact.genSnapshot: + assert(mode != BuildMode.debug, 'Artifact $artifact only available in non-debug mode.'); + final String hostPlatform = getNameForHostPlatform(globals.platform.isMacOS ? HostPlatform.darwin_x64 : getCurrentHostPlatform()); + return _fileSystem.path.join(engineDir, hostPlatform, _artifactToFileName(artifact)); case Artifact.frontendServerSnapshotForEngineDartSdk: case Artifact.constFinder: case Artifact.flutterFramework: @@ -623,8 +610,6 @@ class CachedArtifacts implements Artifacts { case Artifact.vmSnapshotData: case Artifact.windowsCppClientWrapper: case Artifact.windowsDesktopPath: - case Artifact.flutterEngineSo: - case Artifact.engineDartBinary: return _getHostArtifactPath(artifact, platform, mode); } } @@ -694,14 +679,6 @@ class CachedArtifacts implements Artifacts { case Artifact.fuchsiaFlutterRunner: case Artifact.fuchsiaKernelCompiler: throw StateError('Artifact $artifact not available for platform $platform.'); - case Artifact.flutterEngineSo: - return _cache.getArtifactDirectory('engine') - .childFile(_artifactToFileName(artifact)!) - .path; - case Artifact.engineDartBinary: - return _fileSystem.path.join( - _dartSdkPath(_cache), 'bin', - _artifactToFileName(artifact),); } } @@ -732,11 +709,15 @@ class CachedArtifacts implements Artifacts { case TargetPlatform.android_arm64: case TargetPlatform.android_x64: case TargetPlatform.android_x86: + case TargetPlatform.ohos_arm: + case TargetPlatform.ohos_arm64: + case TargetPlatform.ohos_x64: assert(mode != null, 'Need to specify a build mode for platform $platform.'); final String suffix = mode != BuildMode.debug ? '-${snakeCase(getModeName(mode!), '-')}' : ''; return _fileSystem.path.join(engineDir, platformName + suffix); case TargetPlatform.android: - assert(false, 'cannot use TargetPlatform.android to look up artifacts'); + case TargetPlatform.ohos: + assert(false, 'cannot use $platform to look up artifacts'); return null; } } @@ -837,18 +818,25 @@ class CachedLocalEngineArtifacts implements LocalEngineArtifacts { final CachedArtifacts _backupCache; /// this list hostArtifact will execute by the backup engine ,because local engine arch not match . - final List hostArtifactList = [ + final List hostArtifactList = [ HostArtifact.engineDartBinary, HostArtifact.impellerc, ]; + /// this list Artifact will execute by the backup engine ,because local engine arch not match . + final List ohosArtifactList = [ + Artifact.flutterTester, + Artifact.fontSubset, + Artifact.genSnapshot, + ]; + bool isOhosLocalEngine(){ return localEngineName.contains('ohos'); } @override FileSystemEntity getHostArtifact(HostArtifact artifact) { - if(isOhosLocalEngine() && hostArtifactList.contains(artifact)){ + if (isOhosLocalEngine() && hostArtifactList.contains(artifact)) { return _backupCache.getHostArtifact(artifact); } switch (artifact) { @@ -928,6 +916,35 @@ class CachedLocalEngineArtifacts implements LocalEngineArtifacts { } } + String _getOhosArtifactPath( + Artifact artifact, { + TargetPlatform? platform, + BuildMode? mode, + EnvironmentType? environmentType, + }) { + const List clangDirs = ['clang_x64', '.', 'clang_x86', 'clang_i386', 'clang_arm64']; + for (final String clangDir in clangDirs) { + final String artifactPath = _fileSystem.path.join(engineOutPath, clangDir, _artifactToFileName(artifact, platform, mode)); + if (_processManager.canRun(artifactPath)) { + const int kExpectedExitCode = 255; + try { + if (_processManager.runSync([artifactPath]).exitCode == kExpectedExitCode) { + return artifactPath; + } + } on Exception { + // ohos artifact will exit with code 255 if it is passed the --help flag. + // This is a common case, so we catch the exception and continue. + } + } + } + return _backupCache.getArtifactPath( + artifact, + platform: platform, + mode: mode, + environmentType: environmentType, + ); + } + @override String getArtifactPath( Artifact artifact, { @@ -935,6 +952,14 @@ class CachedLocalEngineArtifacts implements LocalEngineArtifacts { BuildMode? mode, EnvironmentType? environmentType, }) { + if (isOhosLocalEngine() && ohosArtifactList.contains(artifact)) { + return _getOhosArtifactPath( + artifact, + platform: platform, + mode: mode, + environmentType: environmentType, + ); + } platform ??= _currentHostPlatform(_platform, _operatingSystemUtils); platform = _mapTargetPlatform(platform); final bool isDirectoryArtifact = artifact == Artifact.flutterPatchedSdkPath; @@ -989,17 +1014,11 @@ class CachedLocalEngineArtifacts implements LocalEngineArtifacts { case Artifact.linuxHeaders: case Artifact.windowsDesktopPath: case Artifact.windowsCppClientWrapper: - case Artifact.flutterEngineSo: return _fileSystem.path.join(_hostEngineOutPath, artifactFileName); case Artifact.frontendServerSnapshotForEngineDartSdk: return _fileSystem.path.join( _getDartSdkPath(), 'bin', 'snapshots', artifactFileName, ); - case Artifact.engineDartBinary: - final String clangName = getClangNameForHostPlatform(getCurrentHostPlatform()); - return _fileSystem.path.join( - engineOutPath, clangName, artifactFileName, - ); } } @@ -1067,13 +1086,7 @@ class CachedLocalEngineArtifacts implements LocalEngineArtifacts { } String _genSnapshotPath(TargetPlatform? platform) { - late List clangDirs; - if (isOhosPlatform(platform)) { - // on ohos platform, clang_x64 has compatibility first - clangDirs = ['clang_x64', 'clang_arm64', '.', 'clang_x86', 'clang_i386']; - } else { - clangDirs = ['.', 'clang_x64', 'clang_x86', 'clang_i386', 'clang_arm64']; - } + const List clangDirs = ['.', 'clang_x64', 'clang_x86', 'clang_i386', 'clang_arm64']; final String genSnapshotName = _artifactToFileName(Artifact.genSnapshot)!; for (final String clangDir in clangDirs) { final String genSnapshotPath = _fileSystem.path.join(engineOutPath, clangDir, genSnapshotName); @@ -1085,20 +1098,14 @@ class CachedLocalEngineArtifacts implements LocalEngineArtifacts { } String _flutterTesterPath(TargetPlatform platform) { - late List clangDirs; - clangDirs = ['clang_x64', 'clang_arm64', '.', 'clang_x86', 'clang_i386']; - final String testerName = _artifactToFileName(Artifact.flutterTester)!; - if (_platform.isLinux || _platform.isMacOS || _platform.isWindows) { - for (final String clangDir in clangDirs) { - final String testerPath = _fileSystem.path.join(engineOutPath, clangDir, testerName); - if (_processManager.canRun(testerPath)) { - return testerPath; - } - } - } else { - throw Exception('Unsupported platform $platform.'); + if (_platform.isLinux) { + return _fileSystem.path.join(engineOutPath, _artifactToFileName(Artifact.flutterTester)); + } else if (_platform.isMacOS) { + return _fileSystem.path.join(engineOutPath, 'flutter_tester'); + } else if (_platform.isWindows) { + return _fileSystem.path.join(engineOutPath, 'flutter_tester.exe'); } - throw Exception('Unable to find $testerName'); + throw Exception('Unsupported platform $platform.'); } @override diff --git a/packages/flutter_tools/lib/src/build_info.dart b/packages/flutter_tools/lib/src/build_info.dart index 5d51baad99..117449838a 100644 --- a/packages/flutter_tools/lib/src/build_info.dart +++ b/packages/flutter_tools/lib/src/build_info.dart @@ -631,18 +631,6 @@ enum OhosArch { x86_64, } - -bool isOhosPlatform(TargetPlatform? targetPlatform){ - switch(targetPlatform){ - case TargetPlatform.ohos: - case TargetPlatform.ohos_arm: - case TargetPlatform.ohos_arm64: - case TargetPlatform.ohos_x64: - return true; - } - return false; -} - /// The default set of iOS device architectures to build for. List defaultIOSArchsForEnvironment( EnvironmentType environmentType, diff --git a/packages/flutter_tools/lib/src/build_system/targets/shader_compiler.dart b/packages/flutter_tools/lib/src/build_system/targets/shader_compiler.dart index ad148de5b7..8d5083822b 100644 --- a/packages/flutter_tools/lib/src/build_system/targets/shader_compiler.dart +++ b/packages/flutter_tools/lib/src/build_system/targets/shader_compiler.dart @@ -73,6 +73,7 @@ class DevelopmentShaderCompiler { case TargetPlatform.ohos_arm64: case TargetPlatform.ohos_arm: case TargetPlatform.ohos_x64: + case TargetPlatform.ohos: assert(!enableImpeller); _shaderTarget = ShaderTarget.sksl; break; diff --git a/packages/flutter_tools/lib/src/cache.dart b/packages/flutter_tools/lib/src/cache.dart index b433d38836..2b32caad9f 100644 --- a/packages/flutter_tools/lib/src/cache.dart +++ b/packages/flutter_tools/lib/src/cache.dart @@ -53,7 +53,8 @@ class DevelopmentArtifact { static const DevelopmentArtifact iOS = DevelopmentArtifact._('ios', feature: flutterIOSFeature); /// Artifacts required for OpenHarmony development. - static const DevelopmentArtifact ohos = DevelopmentArtifact._('ohos', feature: flutterOhosFeature); + static const DevelopmentArtifact ohosGenSnapshot = DevelopmentArtifact._('ohos_gen_snapshot', feature: flutterOhosFeature); + static const DevelopmentArtifact ohosInternalBuild = DevelopmentArtifact._('ohos_internal_build', feature: flutterOhosFeature); /// Artifacts required for web development. static const DevelopmentArtifact web = DevelopmentArtifact._('web', feature: flutterWebFeature); @@ -85,7 +86,8 @@ class DevelopmentArtifact { androidMaven, androidInternalBuild, iOS, - ohos, + ohosGenSnapshot, + ohosInternalBuild, web, macOS, windows, @@ -476,6 +478,23 @@ class Cache { return overrideUrl; } + /// The prefix for URLs that store Ohos Flutter engine artifacts that are fetched + /// during the installation of the Flutter SDK. + String get ohosStorageBaseUrl { + final String? overrideUrl = _platform.environment['OHOS_FLUTTER_STORAGE_BASE_URL']; + if (overrideUrl == null) { + return ''; + } + // verify that this is a valid URI. + try { + Uri.parse(overrideUrl); + } on FormatException catch (err) { + throwToolExit('"OHOS_FLUTTER_STORAGE_URL_PREFIX" contains an invalid URI:\n$err'); + } + _maybeWarnAboutStorageOverride(overrideUrl); + return overrideUrl; + } + /// The base for URLs that store Flutter engine artifacts in CIPD. /// /// For some platforms, such as Web and Fuchsia, CIPD artifacts are fetched @@ -863,6 +882,9 @@ abstract class EngineCachedArtifact extends CachedArtifact { /// A list of the dart package directories to download. List getPackageDirs(); + /// The base URL for the storage bucket from which the artifact is downloaded. + String get storageBaseUrl => cache.storageBaseUrl; + @override bool isUpToDateInner(FileSystem fileSystem) { final Directory pkgDir = cache.getCacheDir('pkg'); @@ -895,7 +917,7 @@ abstract class EngineCachedArtifact extends CachedArtifact { FileSystem fileSystem, OperatingSystemUtils operatingSystemUtils, ) async { - final String url = '${cache.storageBaseUrl}/flutter_infra_release/flutter/$version/'; + final String url = '$storageBaseUrl/flutter_infra_release/flutter/$version/'; final Directory pkgDir = cache.getCacheDir('pkg'); for (final String pkgName in getPackageDirs()) { diff --git a/packages/flutter_tools/lib/src/commands/build_app.dart b/packages/flutter_tools/lib/src/commands/build_app.dart index dc0076ccd7..d91b54c972 100644 --- a/packages/flutter_tools/lib/src/commands/build_app.dart +++ b/packages/flutter_tools/lib/src/commands/build_app.dart @@ -56,6 +56,15 @@ class BuildAppCommand extends BuildSubCommand { @override String get name => 'app'; + @override + bool get reportNullSafety => false; + + @override + Future> get requiredArtifacts async => { + DevelopmentArtifact.ohosGenSnapshot, + DevelopmentArtifact.ohosInternalBuild, + }; + @override Future runCommand() async { if (globals.hmosSdk == null) { diff --git a/packages/flutter_tools/lib/src/commands/build_hap.dart b/packages/flutter_tools/lib/src/commands/build_hap.dart index cd1bc4f475..27448777c0 100644 --- a/packages/flutter_tools/lib/src/commands/build_hap.dart +++ b/packages/flutter_tools/lib/src/commands/build_hap.dart @@ -56,6 +56,15 @@ class BuildHapCommand extends BuildSubCommand { @override String get name => 'hap'; + @override + bool get reportNullSafety => false; + + @override + Future> get requiredArtifacts async => { + DevelopmentArtifact.ohosGenSnapshot, + DevelopmentArtifact.ohosInternalBuild, + }; + @override Future runCommand() async { if (globals.hmosSdk == null) { diff --git a/packages/flutter_tools/lib/src/commands/build_har.dart b/packages/flutter_tools/lib/src/commands/build_har.dart index f87a1b31d5..b9445beb43 100644 --- a/packages/flutter_tools/lib/src/commands/build_har.dart +++ b/packages/flutter_tools/lib/src/commands/build_har.dart @@ -56,6 +56,15 @@ class BuildHarCommand extends BuildSubCommand { @override String get name => 'har'; + @override + bool get reportNullSafety => false; + + @override + Future> get requiredArtifacts async => { + DevelopmentArtifact.ohosGenSnapshot, + DevelopmentArtifact.ohosInternalBuild, + }; + @override Future runCommand() async { if (globals.hmosSdk == null) { diff --git a/packages/flutter_tools/lib/src/commands/build_hsp.dart b/packages/flutter_tools/lib/src/commands/build_hsp.dart index 16fb188eab..10716d89c8 100644 --- a/packages/flutter_tools/lib/src/commands/build_hsp.dart +++ b/packages/flutter_tools/lib/src/commands/build_hsp.dart @@ -56,6 +56,15 @@ class BuildHspCommand extends BuildSubCommand { @override String get name => 'hsp'; + @override + bool get reportNullSafety => false; + + @override + Future> get requiredArtifacts async => { + DevelopmentArtifact.ohosGenSnapshot, + DevelopmentArtifact.ohosInternalBuild, + }; + @override Future runCommand() async { if (globals.hmosSdk == null) { diff --git a/packages/flutter_tools/lib/src/compile.dart b/packages/flutter_tools/lib/src/compile.dart index 8e43ff5680..a41a8af369 100644 --- a/packages/flutter_tools/lib/src/compile.dart +++ b/packages/flutter_tools/lib/src/compile.dart @@ -15,11 +15,9 @@ import 'base/common.dart'; import 'base/file_system.dart'; import 'base/io.dart'; import 'base/logger.dart'; -import 'base/os.dart'; import 'base/platform.dart'; import 'build_info.dart'; import 'convert.dart'; -import 'globals.dart' as globals; /// Opt-in changes to the dart compilers. const List kDartCompilerExperiments = [ @@ -284,17 +282,8 @@ class KernelCompiler { dartPluginRegistrantUri = packageConfig.toPackageUri(dartPluginRegistrantFileUri)?.toString() ?? toMultiRootPath(dartPluginRegistrantFileUri, _fileSystemScheme, _fileSystemRoots, _fileSystem.path.separator == r'\'); } - String? engineDartBinary; - if (globals.os.hostPlatform == HostPlatform.darwin_arm64) { - final Artifacts? artifacts = globals.artifacts; - if (artifacts is LocalEngineArtifacts) { - final LocalEngineArtifacts localEngineArtifacts = artifacts; - engineDartBinary = localEngineArtifacts.getArtifactPath(Artifact.engineDartBinary); - } - } - engineDartBinary = engineDartBinary ?? _artifacts.getHostArtifact(HostArtifact.engineDartBinary).path; final List command = [ - engineDartBinary, + engineDartPath, '--disable-dart-dev', frontendServer, '--sdk-root', @@ -753,17 +742,8 @@ class DefaultResidentCompiler implements ResidentCompiler { final String frontendServer = _artifacts.getArtifactPath( Artifact.frontendServerSnapshotForEngineDartSdk ); - String? engineDartBinary; - if (globals.os.hostPlatform == HostPlatform.darwin_arm64) { - final Artifacts? artifacts = globals.artifacts; - if (artifacts is LocalEngineArtifacts) { - final LocalEngineArtifacts localEngineArtifacts = artifacts; - engineDartBinary = localEngineArtifacts.getArtifactPath(Artifact.engineDartBinary); - } - } - engineDartBinary = engineDartBinary ?? _artifacts.getHostArtifact(HostArtifact.engineDartBinary).path; final List command = [ - engineDartBinary, + _artifacts.getHostArtifact(HostArtifact.engineDartBinary).path, '--disable-dart-dev', frontendServer, '--sdk-root', diff --git a/packages/flutter_tools/lib/src/flutter_cache.dart b/packages/flutter_tools/lib/src/flutter_cache.dart index 973d3ef632..d84d0b60ff 100644 --- a/packages/flutter_tools/lib/src/flutter_cache.dart +++ b/packages/flutter_tools/lib/src/flutter_cache.dart @@ -37,6 +37,7 @@ class FlutterCache extends Cache { registerArtifact(AndroidGenSnapshotArtifacts(this, platform: platform)); registerArtifact(AndroidInternalBuildArtifacts(this)); registerArtifact(IOSEngineArtifacts(this, platform: platform)); + registerArtifact(OhosGenSnapshotArtifacts(this, platform: platform)); registerArtifact(FlutterWebSdk(this, platform: platform)); registerArtifact(FlutterSdk(this, platform: platform)); registerArtifact(WindowsEngineArtifacts(this, platform: platform)); @@ -511,6 +512,95 @@ class IOSEngineArtifacts extends EngineCachedArtifact { } } +/// The artifact used to generate snapshots for Ohos builds. +class OhosGenSnapshotArtifacts extends EngineCachedArtifact { + OhosGenSnapshotArtifacts(Cache cache, { + required Platform platform, + }) : _platform = platform, + super( + 'ohos-sdk', + cache, + DevelopmentArtifact.ohosGenSnapshot, + ); + + final Platform _platform; + + @override + List getPackageDirs() => const []; + + @override + List> getBinaryDirs() { + return >[ + if (cache.includeAllPlatforms) ...>[ + ..._osxBinaryDirsForOhos, + ..._linuxBinaryDirsForOhos, + ..._windowsBinaryDirsForOhos, + ..._dartSdks, + ] else if (_platform.isWindows) + ..._windowsBinaryDirsForOhos + else if (_platform.isMacOS) + ..._osxBinaryDirsForOhos + else if (_platform.isLinux) + ..._linuxBinaryDirsForOhos, + ]; + } + + @override + List getLicenseDirs() { + return []; + } + + @override + String? get version => cache.getVersionFor('ohos-engine'); + + @override + String get storageBaseUrl => cache.ohosStorageBaseUrl; +} + +/// Artifacts used for Ohos internal builds. +class OhosInternalBuildArtifacts extends EngineCachedArtifact { + OhosInternalBuildArtifacts(Cache cache) : super( + 'ohos-internal-build-artifacts', + cache, + DevelopmentArtifact.ohosInternalBuild, + ); + + @override + List> getBinaryDirs() { + return >[ + ..._ohosBinaryDirs, + ]; + } + + @override + List getLicenseDirs() { + return const []; + } + + @override + List getPackageDirs() { + return []; + } + + @override + String? get version => cache.getVersionFor('ohos-engine'); + + @override + String get storageBaseUrl => cache.ohosStorageBaseUrl; + + @override + Future updateInner( + ArtifactUpdater artifactUpdater, + FileSystem fileSystem, + OperatingSystemUtils operatingSystemUtils, + ) async { + if (cache.ohosStorageBaseUrl.isEmpty) { + return; + } + await super.updateInner(artifactUpdater, fileSystem, operatingSystemUtils); + } +} + /// A cached artifact containing Gradle Wrapper scripts and binaries. /// /// While this is only required for Android, we need to always download it due @@ -909,6 +999,31 @@ const List> _androidBinaryDirs = >[ ['android-x86-jit-release', 'android-x86-jit-release/artifacts.zip'], ]; +/// 目前只有arm64 +const List> _osxBinaryDirsForOhos = >[ + ['ohos-arm64-profile/darwin-x64', 'ohos-arm64-profile/darwin-x64.zip'], + ['ohos-arm64-release/darwin-x64', 'ohos-arm64-release/darwin-x64.zip'], +]; + +/// 目前只有arm64 +const List> _linuxBinaryDirsForOhos = >[ + ['ohos-arm64/linux-x64', 'ohos-arm64/linux-x64.zip'], + ['ohos-arm64-profile/linux-x64', 'ohos-arm64-profile/linux-x64.zip'], + ['ohos-arm64-release/linux-x64', 'ohos-arm64-release/linux-x64.zip'], +]; + +/// 目前只有arm64 +const List> _windowsBinaryDirsForOhos = >[ + ['ohos-arm64-profile/windows-x64', 'ohos-arm64-profile/windows-x64.zip'], + ['ohos-arm64-release/windows-x64', 'ohos-arm64-release/windows-x64.zip'], +]; + +/// 目前只有arm64 +const List> _ohosBinaryDirs = >[ + ['ohos-arm64-profile', 'ohos-arm64-profile/artifacts.zip'], + ['ohos-arm64-release', 'ohos-arm64-release/artifacts.zip'], +]; + const List> _dartSdks = > [ ['darwin-x64', 'dart-sdk-darwin-x64.zip'], ['linux-x64', 'dart-sdk-linux-x64.zip'], diff --git a/packages/flutter_tools/lib/src/resident_runner.dart b/packages/flutter_tools/lib/src/resident_runner.dart index e5ef7409f4..e978c8ad79 100644 --- a/packages/flutter_tools/lib/src/resident_runner.dart +++ b/packages/flutter_tools/lib/src/resident_runner.dart @@ -250,9 +250,9 @@ class FlutterDevice { subscription = observatoryUris!.listen((Uri? observatoryUri) async { // when on hdc server mode,the host is not local,change to hdc server final String? hdcServerHost = getHdcServerHost(); - if(hdcServerHost!=null){ + if (hdcServerHost != null) { const String localHost = '127.0.0.1'; - observatoryUri = Uri.parse(observatoryUri?.toString()?.replaceAll(localHost, hdcServerHost)??localHost); + observatoryUri = Uri.parse(observatoryUri?.toString().replaceAll(localHost, hdcServerHost) ?? localHost); } // FYI, this message is used as a sentinel in tests. diff --git a/packages/flutter_tools/lib/src/runner/flutter_command.dart b/packages/flutter_tools/lib/src/runner/flutter_command.dart index e6e98364cd..62604b8f85 100644 --- a/packages/flutter_tools/lib/src/runner/flutter_command.dart +++ b/packages/flutter_tools/lib/src/runner/flutter_command.dart @@ -1710,7 +1710,7 @@ DevelopmentArtifact? artifactFromTargetPlatform(TargetPlatform targetPlatform) { case TargetPlatform.ohos_arm: case TargetPlatform.ohos_arm64: case TargetPlatform.ohos_x64: - return DevelopmentArtifact.ohos; + return DevelopmentArtifact.ohosGenSnapshot; case TargetPlatform.darwin: if (featureFlags.isMacOSEnabled) { return DevelopmentArtifact.macOS; -- Gitee