From 71a1d123e1b9c9be192a90208a67bb571bb9408e Mon Sep 17 00:00:00 2001 From: hezhengyi Date: Tue, 29 Oct 2024 15:03:08 +0800 Subject: [PATCH] =?UTF-8?q?flutter=5Fmodule.har=E4=B8=AD=E7=9A=84har?= =?UTF-8?q?=E4=BE=9D=E8=B5=96=E8=AE=BE=E7=BD=AE=E7=BB=9D=E5=AF=B9=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=E6=94=AF=E6=8C=81=E5=BC=80=E5=85=B3,=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E5=85=B3=E9=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/src/ohos/ohos_plugins_manager.dart | 26 +++++++++++++------ packages/flutter_tools/lib/src/project.dart | 8 ++++++ 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/packages/flutter_tools/lib/src/ohos/ohos_plugins_manager.dart b/packages/flutter_tools/lib/src/ohos/ohos_plugins_manager.dart index c0035dd27cc..574df426461 100644 --- a/packages/flutter_tools/lib/src/ohos/ohos_plugins_manager.dart +++ b/packages/flutter_tools/lib/src/ohos/ohos_plugins_manager.dart @@ -19,12 +19,15 @@ import 'package:json5/json5.dart'; import '../base/common.dart'; import '../base/file_system.dart'; +import '../base/utils.dart'; import '../flutter_plugins.dart'; import '../globals.dart' as globals; import '../platform_plugins.dart'; import '../plugins.dart'; import '../project.dart'; +const String kUseAbsolutePathOfHar = 'useAbsolutePathOfHar'; + /// 检查 ohos plugin 依赖 Future checkOhosPluginsDependencies(FlutterProject flutterProject) async { final List plugins = (await findPlugins(flutterProject)) @@ -36,6 +39,9 @@ Future checkOhosPluginsDependencies(FlutterProject flutterProject) async { return; } + final SettingsFile settings = flutterProject.ohos.settings; + final bool useAbsolutePathOfHar = settings.values[kUseAbsolutePathOfHar] == 'true'; + final String packageConfig = packageFile.readAsStringSync(); final Map config = JSON5.parse(packageConfig) as Map; final Map dependencies = @@ -48,10 +54,10 @@ Future checkOhosPluginsDependencies(FlutterProject flutterProject) async { } } final String absolutePath = globals.fs.path.join(flutterProject.ohos.ohosRoot.path, 'har/${plugin.name}.har'); - if (flutterProject.isModule) { + if (useAbsolutePathOfHar && flutterProject.isModule) { dependencies[plugin.name] = 'file:$absolutePath'; } else { - final String relativePath = _relative(absolutePath, from: globals.fs.path.dirname(packageFile.path)); + final String relativePath = _relative(absolutePath, globals.fs.path.dirname(packageFile.path)); dependencies[plugin.name] = 'file:$relativePath'; } } @@ -88,7 +94,7 @@ Future addPluginsModules(FlutterProject flutterProject) async { 'name': plugin.name, 'srcPath': _relative( globals.fs.path.join(plugin.path, OhosPlugin.kConfigKey), - from: flutterProject.ohos.ohosRoot.path, + flutterProject.ohos.ohosRoot.path, ), 'targets': >[ { @@ -122,10 +128,10 @@ Future addFlutterModuleAndPluginsSrcOverrides(FlutterProject flutterProjec for (final Plugin plugin in plugins) { overrides[plugin.name] = _relative( globals.fs.path.join(plugin.path, OhosPlugin.kConfigKey), - from: flutterProject.ohos.ohosRoot.path, + flutterProject.ohos.ohosRoot.path, ); } - final String relativePath = _relative(flutterProject.ohos.flutterModuleDirectory.path, from: flutterProject.ohos.ohosRoot.path); + final String relativePath = _relative(flutterProject.ohos.flutterModuleDirectory.path, flutterProject.ohos.ohosRoot.path); overrides['@ohos/flutter_module'] = 'file:./$relativePath'; overrides['@ohos/flutter_ohos'] = 'file:./har/flutter.har'; final String configNew = const JsonEncoder.withIndent(' ').convert(config); @@ -181,10 +187,12 @@ Future addFlutterModuleAndPluginsOverrides(FlutterProject flutterProject) final String packageConfig = packageFile.readAsStringSync(); final Map config = JSON5.parse(packageConfig) as Map; final Map overrides = config['overrides'] as Map? ?? {}; + final SettingsFile settings = flutterProject.ohos.settings; + final bool useAbsolutePathOfHar = settings.values[kUseAbsolutePathOfHar] == 'true'; for (final Plugin plugin in plugins) { final String absolutePath = globals.fs.path.join(flutterProject.ohos.ohosRoot.path, 'har/${plugin.name}.har'); - if (flutterProject.isModule) { + if (useAbsolutePathOfHar && flutterProject.isModule) { overrides[plugin.name] = 'file:$absolutePath'; } else { overrides[plugin.name] = 'file:./har/${plugin.name}.har'; @@ -194,8 +202,10 @@ Future addFlutterModuleAndPluginsOverrides(FlutterProject flutterProject) packageFile.writeAsStringSync(configNew, flush: true); } -String _relative(String path, {String? from}) { - final String realPath = globals.fs.file(path).resolveSymbolicLinksSync(); +String _relative(String path, String from) { + final String realPath = path.endsWith('.har') + ? path + : globals.fs.file(path).resolveSymbolicLinksSync(); final String realFrom = globals.fs.file(from).resolveSymbolicLinksSync(); final String result = globals.fs.path.relative(realPath, from: realFrom).replaceAll(r'\', '/'); return result; diff --git a/packages/flutter_tools/lib/src/project.dart b/packages/flutter_tools/lib/src/project.dart index afa0119091b..1c1e5cfae02 100644 --- a/packages/flutter_tools/lib/src/project.dart +++ b/packages/flutter_tools/lib/src/project.dart @@ -1254,6 +1254,14 @@ class OhosProject extends FlutterProjectPlatform { File get ephemeralLocalPropertiesFile => ephemeralDirectory.childFile('local.properties'); + SettingsFile get settings => isModule + ? (ephemeralLocalPropertiesFile.existsSync() + ? SettingsFile.parseFromFile(ephemeralLocalPropertiesFile) + : SettingsFile()) + : (localPropertiesFile.existsSync() + ? SettingsFile.parseFromFile(localPropertiesFile) + : SettingsFile()); + bool hasSignedHapBuild(flavor) { return getSignedHapFile(flavor).existsSync(); } -- Gitee