From b86f909ea1122418984d5d0f14f761b687fbccf0 Mon Sep 17 00:00:00 2001 From: xuchang Date: Mon, 20 Nov 2023 02:21:40 -0800 Subject: [PATCH] =?UTF-8?q?IssueNo:=20#I8HZSI=20=E8=A7=A3=E5=86=B3bug?= =?UTF-8?q?=EF=BC=9Aopenharmony=20plugin=E7=9A=84=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=BF=90=E8=A1=8C=E5=BC=82=E5=B8=B8=20Sig:?= =?UTF-8?q?=20OpenHarmony-SIG/flutter-flutter=20Feature=20or=20Bugfix:=20B?= =?UTF-8?q?ugfix=20Binary=20Source:=20No?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xuchang --- .../src/ohos/ohos_dependencies_manager.dart | 9 +++-- .../lib/src/ohos/ohos_plugins_manager.dart | 37 +++++++++++++----- .../GeneratedPluginRegistrant.ets.tmpl | 16 -------- .../plugin/ohos.tmpl/build-profile.json5.tmpl | 2 +- .../.gitignore | 0 .../build-profile.json5.tmpl | 0 .../hvigorfile.ts.tmpl | 0 .../index.ets.tmpl | 3 +- .../libs/flutter_ohos.har | Bin .../oh-package.json5.tmpl | 0 .../components/plugin}/pluginClass.ets.tmpl | 8 +++- .../src/main/module.json5.tmpl | 0 .../main/resources/base/element/string.json | 0 .../main/resources/en_US/element/string.json | 0 .../main/resources/zh_CN/element/string.json | 0 .../src/test/List.test.ets | 0 .../src/test/LocalUnit.test.ets | 0 .../templates/template_manifest.json | 27 ++++++------- 18 files changed, 54 insertions(+), 48 deletions(-) delete mode 100644 packages/flutter_tools/templates/app_shared/ohos.tmpl/entry/src/main/ets/plugins/GeneratedPluginRegistrant.ets.tmpl rename packages/flutter_tools/templates/plugin/ohos.tmpl/{pluginClass.tmpl => projectName.tmpl}/.gitignore (100%) rename packages/flutter_tools/templates/plugin/ohos.tmpl/{pluginClass.tmpl => projectName.tmpl}/build-profile.json5.tmpl (100%) rename packages/flutter_tools/templates/plugin/ohos.tmpl/{pluginClass.tmpl => projectName.tmpl}/hvigorfile.ts.tmpl (100%) rename packages/flutter_tools/templates/plugin/ohos.tmpl/{pluginClass.tmpl => projectName.tmpl}/index.ets.tmpl (84%) rename packages/flutter_tools/templates/plugin/ohos.tmpl/{pluginClass.tmpl => projectName.tmpl}/libs/flutter_ohos.har (100%) rename packages/flutter_tools/templates/plugin/ohos.tmpl/{pluginClass.tmpl => projectName.tmpl}/oh-package.json5.tmpl (100%) rename packages/flutter_tools/templates/plugin/ohos.tmpl/{pluginClass.tmpl/src/main/ets/projectName.tmpl => projectName.tmpl/src/main/ets/components/plugin}/pluginClass.ets.tmpl (80%) rename packages/flutter_tools/templates/plugin/ohos.tmpl/{pluginClass.tmpl => projectName.tmpl}/src/main/module.json5.tmpl (100%) rename packages/flutter_tools/templates/plugin/ohos.tmpl/{pluginClass.tmpl => projectName.tmpl}/src/main/resources/base/element/string.json (100%) rename packages/flutter_tools/templates/plugin/ohos.tmpl/{pluginClass.tmpl => projectName.tmpl}/src/main/resources/en_US/element/string.json (100%) rename packages/flutter_tools/templates/plugin/ohos.tmpl/{pluginClass.tmpl => projectName.tmpl}/src/main/resources/zh_CN/element/string.json (100%) rename packages/flutter_tools/templates/plugin/ohos.tmpl/{pluginClass.tmpl => projectName.tmpl}/src/test/List.test.ets (100%) rename packages/flutter_tools/templates/plugin/ohos.tmpl/{pluginClass.tmpl => projectName.tmpl}/src/test/LocalUnit.test.ets (100%) diff --git a/packages/flutter_tools/lib/src/ohos/ohos_dependencies_manager.dart b/packages/flutter_tools/lib/src/ohos/ohos_dependencies_manager.dart index e1451440d4..da74ae4103 100644 --- a/packages/flutter_tools/lib/src/ohos/ohos_dependencies_manager.dart +++ b/packages/flutter_tools/lib/src/ohos/ohos_dependencies_manager.dart @@ -15,6 +15,7 @@ import 'package:json5/json5.dart'; +import '../base/common.dart'; import '../base/file_system.dart'; import '../flutter_plugins.dart'; import '../globals.dart' as globals; @@ -68,8 +69,8 @@ Future checkOhosPluginsDependencies(FlutterProject flutterProject) async { } OhosDependence transform(OhosPlugin ohosPlugin) { - return OhosDependence('@ohos/${ohosPlugin.name}', - '../har/${ohosPlugin.name}.har', ohosPlugin.name); + return OhosDependence('@ohos/${ohosPlugin.name}', ohosPlugin.name, + '../har/${ohosPlugin.name}.har'); } /// 从entry/oh-package.json5解析出所有依赖 @@ -99,7 +100,7 @@ Future addDependencies( for (final OhosDependence dependence in list) { dependencies[dependence.moduleName] = - 'file:../har/${dependence.baseModuleName}'; + 'file:../har/${dependence.baseModuleName}.har'; } final String configNew = JSON5.stringify(obj, space: 2); flutterProject.ohos.mainModulePackageFile @@ -110,4 +111,4 @@ dynamic parsePakcageConfig(FlutterProject flutterProject) { final File packageFile = flutterProject.ohos.mainModulePackageFile; final String packageConfig = packageFile.readAsStringSync(); return JSON5.parse(packageConfig); -} \ No newline at end of file +} 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 5d2545b8c6..4e037fa4ec 100644 --- a/packages/flutter_tools/lib/src/ohos/ohos_plugins_manager.dart +++ b/packages/flutter_tools/lib/src/ohos/ohos_plugins_manager.dart @@ -21,6 +21,7 @@ import '../platform_plugins.dart'; import '../plugins.dart'; import '../project.dart'; import 'hvigor.dart'; +import 'dart:io' as io; /// 检查plugins的har是否需要更新 Future checkPluginsHarUpdate( @@ -35,11 +36,16 @@ Future checkPluginsHarUpdate( return; } + if (!flutterProject.directory.childFile('.flutter-plugins').existsSync()) { + throwToolExit('please run "flutter pub get" in project first.'); + } + ///检查当前工程下har文件夹下已生成的har文件 final List harFiles = getProjectHarList(flutterProject); final List toBeGenerateHarList = list - .where((OhosPlugin plugin) => !harFiles.contains('${plugin.name}.har')) + .where((OhosPlugin plugin) => + !hasContainsStr(harFiles, '${plugin.name}.har')) .toList(); if (toBeGenerateHarList.isEmpty) { globals.printStatus( @@ -69,12 +75,23 @@ Future checkPluginsHarUpdate( } } +bool hasContainsStr(List list, String name) { + for (final String element in list) { + if (element.contains(name)) { + return true; + } + } + return false; +} + List getProjectHarList(FlutterProject flutterProject) { final Directory directory = flutterProject.ohos.ohosRoot.childDirectory('har'); if (directory.existsSync()) { return directory .listSync() + .where((FileSystemEntity element) => + io.FileSystemEntity.isFileSync(element.path)) .map((FileSystemEntity file) => file.path) .toList(); } else { @@ -84,25 +101,25 @@ List getProjectHarList(FlutterProject flutterProject) { } Future pluginsHarGenerate(String pluginPath, String pluginName) async { + await ohpmInstall( + processManager: globals.processManager, + entryPath: globals.fs.path.join(pluginPath, pluginName), + logger: globals.logger); final String hvigorwPath = getHvigorwPath(pluginPath, checkMod: true); final int errorCode0 = await assembleHar( processManager: globals.processManager, workPath: pluginPath, - moduleName: 'ohos', + moduleName: pluginName, hvigorwPath: hvigorwPath, logger: globals.logger); if (errorCode0 != 0) { throwToolExit( 'ohosPluginsManager: pluginPath:$pluginPath, assembleHar error! please check log.'); } - final String originHarPath = getHarPath(pluginPath, 'ohos.har'); - final File originHarFile = globals.fs.file(originHarPath); - final String newHarPath = getHarPath(pluginPath, '$pluginName.har'); - originHarFile.renameSync(newHarPath); - return newHarPath; + return getHarPath(pluginPath, pluginName); } -String getHarPath(String pluginPath, String fileName) { - return globals.fs.path.join( - pluginPath, 'ohos', 'build', 'default', 'outputs', 'default', fileName); +String getHarPath(String pluginPath, String pluginName) { + return globals.fs.path.join(pluginPath, pluginName, 'build', 'default', + 'outputs', 'default', '$pluginName.har'); } diff --git a/packages/flutter_tools/templates/app_shared/ohos.tmpl/entry/src/main/ets/plugins/GeneratedPluginRegistrant.ets.tmpl b/packages/flutter_tools/templates/app_shared/ohos.tmpl/entry/src/main/ets/plugins/GeneratedPluginRegistrant.ets.tmpl deleted file mode 100644 index a5d99aa30b..0000000000 --- a/packages/flutter_tools/templates/app_shared/ohos.tmpl/entry/src/main/ets/plugins/GeneratedPluginRegistrant.ets.tmpl +++ /dev/null @@ -1,16 +0,0 @@ -import { FlutterPlugin } from '@ohos/flutter_ohos/src/main/ets/embedding/engine/plugins/FlutterPlugin'; -import List from '@ohos.util.List'; -import UrlLauncherPlugin from '@ohos/url_launcher_ohos/src/main/ets/components/plugin/UrlLauncherPlugin' - -/** - * Generated file. Do not edit. - * This file is generated by the Flutter tool based on the - * plugins that support the Ohos platform. - */ -export class GeneratedPluginRegistrant { - static getPlugins(): List { - let pluginList : List = new List(); - pluginList.add(new UrlLauncherPlugin()); - return pluginList; - } -} diff --git a/packages/flutter_tools/templates/plugin/ohos.tmpl/build-profile.json5.tmpl b/packages/flutter_tools/templates/plugin/ohos.tmpl/build-profile.json5.tmpl index d5fb31d2e1..83a9158ec8 100644 --- a/packages/flutter_tools/templates/plugin/ohos.tmpl/build-profile.json5.tmpl +++ b/packages/flutter_tools/templates/plugin/ohos.tmpl/build-profile.json5.tmpl @@ -22,7 +22,7 @@ "modules": [ { "name": "{{projectName}}", - "srcPath": "./{{pluginClass}}" + "srcPath": "./{{projectName}}" } ] } \ No newline at end of file diff --git a/packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/.gitignore b/packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/.gitignore similarity index 100% rename from packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/.gitignore rename to packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/.gitignore diff --git a/packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/build-profile.json5.tmpl b/packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/build-profile.json5.tmpl similarity index 100% rename from packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/build-profile.json5.tmpl rename to packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/build-profile.json5.tmpl diff --git a/packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/hvigorfile.ts.tmpl b/packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/hvigorfile.ts.tmpl similarity index 100% rename from packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/hvigorfile.ts.tmpl rename to packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/hvigorfile.ts.tmpl diff --git a/packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/index.ets.tmpl b/packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/index.ets.tmpl similarity index 84% rename from packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/index.ets.tmpl rename to packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/index.ets.tmpl index f944d47196..a4d4c30b47 100644 --- a/packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/index.ets.tmpl +++ b/packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/index.ets.tmpl @@ -13,4 +13,5 @@ * limitations under the License. */ -export { {{pluginClass}} } from './src/main/ets/{{projectName}}/{{pluginClass}}' +import {{pluginClass}} from './src/main/ets/components/plugin/{{pluginClass}}'; +export default {{pluginClass}}; diff --git a/packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/libs/flutter_ohos.har b/packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/libs/flutter_ohos.har similarity index 100% rename from packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/libs/flutter_ohos.har rename to packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/libs/flutter_ohos.har diff --git a/packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/oh-package.json5.tmpl b/packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/oh-package.json5.tmpl similarity index 100% rename from packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/oh-package.json5.tmpl rename to packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/oh-package.json5.tmpl diff --git a/packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/src/main/ets/projectName.tmpl/pluginClass.ets.tmpl b/packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/src/main/ets/components/plugin/pluginClass.ets.tmpl similarity index 80% rename from packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/src/main/ets/projectName.tmpl/pluginClass.ets.tmpl rename to packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/src/main/ets/components/plugin/pluginClass.ets.tmpl index ddc3aac172..958f5d83ee 100644 --- a/packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/src/main/ets/projectName.tmpl/pluginClass.ets.tmpl +++ b/packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/src/main/ets/components/plugin/pluginClass.ets.tmpl @@ -3,7 +3,7 @@ import MethodChannel, { MethodCallHandler, MethodResult } from '@ohos/flutter_oh import MethodCall from '@ohos/flutter_ohos/src/main/ets/plugin/common/MethodCall'; /** {{pluginClass}} **/ -export class {{pluginClass}} implements FlutterPlugin, MethodCallHandler { +export default class {{pluginClass}} implements FlutterPlugin, MethodCallHandler { private channel: MethodChannel | null = null; constructor() { @@ -25,6 +25,10 @@ export class {{pluginClass}} implements FlutterPlugin, MethodCallHandler { } onMethodCall(call: MethodCall, result: MethodResult): void { - result.notImplemented(); + if (call.method == "getPlatformVersion") { + result.success("OpenHarmony ^ ^ ") + } else { + result.notImplemented() + } } } \ No newline at end of file diff --git a/packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/src/main/module.json5.tmpl b/packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/src/main/module.json5.tmpl similarity index 100% rename from packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/src/main/module.json5.tmpl rename to packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/src/main/module.json5.tmpl diff --git a/packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/src/main/resources/base/element/string.json b/packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/src/main/resources/base/element/string.json similarity index 100% rename from packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/src/main/resources/base/element/string.json rename to packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/src/main/resources/base/element/string.json diff --git a/packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/src/main/resources/en_US/element/string.json b/packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/src/main/resources/en_US/element/string.json similarity index 100% rename from packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/src/main/resources/en_US/element/string.json rename to packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/src/main/resources/en_US/element/string.json diff --git a/packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/src/main/resources/zh_CN/element/string.json b/packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/src/main/resources/zh_CN/element/string.json similarity index 100% rename from packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/src/main/resources/zh_CN/element/string.json rename to packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/src/main/resources/zh_CN/element/string.json diff --git a/packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/src/test/List.test.ets b/packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/src/test/List.test.ets similarity index 100% rename from packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/src/test/List.test.ets rename to packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/src/test/List.test.ets diff --git a/packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/src/test/LocalUnit.test.ets b/packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/src/test/LocalUnit.test.ets similarity index 100% rename from packages/flutter_tools/templates/plugin/ohos.tmpl/pluginClass.tmpl/src/test/LocalUnit.test.ets rename to packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/src/test/LocalUnit.test.ets diff --git a/packages/flutter_tools/templates/template_manifest.json b/packages/flutter_tools/templates/template_manifest.json index 37084f33f6..ae6d6208dd 100644 --- a/packages/flutter_tools/templates/template_manifest.json +++ b/packages/flutter_tools/templates/template_manifest.json @@ -155,7 +155,6 @@ "templates/app_shared/ohos.tmpl/entry/oh-package.json5.tmpl", "templates/app_shared/ohos.tmpl/entry/src/main/module.json5", "templates/app_shared/ohos.tmpl/entry/src/main/ets/entryability/EntryAbility.ets.tmpl", - "templates/app_shared/ohos.tmpl/entry/src/main/ets/plugins/GeneratedPluginRegistrant.ets.tmpl", "templates/app_shared/ohos.tmpl/entry/src/main/ets/pages/Index.ets.tmpl", "templates/app_shared/ohos.tmpl/entry/src/main/resources/base/element/color.json", "templates/app_shared/ohos.tmpl/entry/src/main/resources/base/element/string.json", @@ -393,19 +392,19 @@ "templates/plugin/ohos.tmpl/dependencies/rollup.tgz", "templates/plugin/ohos.tmpl/hvigor/hvigor-config.json5.tmpl", "templates/plugin/ohos.tmpl/hvigor/hvigor-wrapper.js.tmpl", - "templates/plugin/ohos.tmpl/pluginClass.tmpl/libs/flutter_ohos.har", - "templates/plugin/ohos.tmpl/pluginClass.tmpl/src/main/ets/projectName.tmpl/pluginClass.ets.tmpl", - "templates/plugin/ohos.tmpl/pluginClass.tmpl/src/main/resources/base/element/string.json", - "templates/plugin/ohos.tmpl/pluginClass.tmpl/src/main/resources/en_US/element/string.json", - "templates/plugin/ohos.tmpl/pluginClass.tmpl/src/main/resources/zh_CN/element/string.json", - "templates/plugin/ohos.tmpl/pluginClass.tmpl/src/main/module.json5.tmpl", - "templates/plugin/ohos.tmpl/pluginClass.tmpl/src/test/List.test.ets", - "templates/plugin/ohos.tmpl/pluginClass.tmpl/src/test/LocalUnit.test.ets", - "templates/plugin/ohos.tmpl/pluginClass.tmpl/.gitignore", - "templates/plugin/ohos.tmpl/pluginClass.tmpl/build-profile.json5.tmpl", - "templates/plugin/ohos.tmpl/pluginClass.tmpl/hvigorfile.ts.tmpl", - "templates/plugin/ohos.tmpl/pluginClass.tmpl/index.ets.tmpl", - "templates/plugin/ohos.tmpl/pluginClass.tmpl/oh-package.json5.tmpl", + "templates/plugin/ohos.tmpl/projectName.tmpl/libs/flutter_ohos.har", + "templates/plugin/ohos.tmpl/projectName.tmpl/src/main/ets/components/plugin/pluginClass.ets.tmpl", + "templates/plugin/ohos.tmpl/projectName.tmpl/src/main/resources/base/element/string.json", + "templates/plugin/ohos.tmpl/projectName.tmpl/src/main/resources/en_US/element/string.json", + "templates/plugin/ohos.tmpl/projectName.tmpl/src/main/resources/zh_CN/element/string.json", + "templates/plugin/ohos.tmpl/projectName.tmpl/src/main/module.json5.tmpl", + "templates/plugin/ohos.tmpl/projectName.tmpl/src/test/List.test.ets", + "templates/plugin/ohos.tmpl/projectName.tmpl/src/test/LocalUnit.test.ets", + "templates/plugin/ohos.tmpl/projectName.tmpl/.gitignore", + "templates/plugin/ohos.tmpl/projectName.tmpl/build-profile.json5.tmpl", + "templates/plugin/ohos.tmpl/projectName.tmpl/hvigorfile.ts.tmpl", + "templates/plugin/ohos.tmpl/projectName.tmpl/index.ets.tmpl", + "templates/plugin/ohos.tmpl/projectName.tmpl/oh-package.json5.tmpl", "templates/plugin/ohos.tmpl/build-profile.json5.tmpl", "templates/plugin/ohos.tmpl/hvigorfile.ts.tmpl", "templates/plugin/ohos.tmpl/hvigorw.bat.tmpl", -- Gitee