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 e9cdfcf9ba9153291d089aa118a309f5c7f54db3..8bef3277fbb405b781b9908515aa53af73a9b9ab 100644 --- a/packages/flutter_tools/lib/src/ohos/ohos_plugins_manager.dart +++ b/packages/flutter_tools/lib/src/ohos/ohos_plugins_manager.dart @@ -111,6 +111,7 @@ Future pluginsHarGenerate(String ohosPath, String pluginName, String moduleName, BuildInfo buildInfo, OhosBuildData ohosBuildData) async { final String modulePath = globals.fs.path.join(ohosPath, moduleName); checkDevDependencies(modulePath, buildInfo, ohosBuildData); + checkDependencies(modulePath, buildInfo, ohosBuildData); await ohpmInstall( processManager: globals.processManager, entryPath: modulePath, @@ -148,6 +149,27 @@ void checkDevDependencies( } } +/// 检查module的dependencies,如果存在 "@ohos/flutter_ohos": "file:./libs/flutter_ohos.har" , 拷贝har文件到module目录 +void checkDependencies( + String modulePath, BuildInfo buildInfo, OhosBuildData ohosBuildData) { + + globals.printStatus('checkDependencies 检查modulePath: $modulePath'); + final Directory moduleDirectory = globals.fs.directory(modulePath); + final File packageConfigFile = moduleDirectory.childFile('oh-package.json5'); + final List devDependencies = + getOhosDependenciesListFromPackageFile(packageConfigFile, + dependenceType: DependenceType.normal); + + /// 如果包含@ohos/flutter_ohos,每次构建,都需要重新拷贝har文件,确保flutter_embedding.har文件的正确性 + if (devDependencies.any( + (OhosDependence element) => element.moduleName == '@ohos/flutter_ohos')) { + final OhosDependence flutterOhosDepence = devDependencies.firstWhere( + (OhosDependence element) => element.moduleName == '@ohos/flutter_ohos'); + copyOhosEmbeddingHarToModule( + modulePath, flutterOhosDepence, buildInfo, ohosBuildData); + } +} + void copyOhosEmbeddingHarToModule( String modulePath, OhosDependence flutterOhosDepence, diff --git a/packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/oh-package.json5.tmpl b/packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/oh-package.json5.tmpl index ef6526586a63d9f4040242adcbaaa8105659a84e..bcbbd9cdc1f99f21ce23c22db129da9b9fcc03d4 100644 --- a/packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/oh-package.json5.tmpl +++ b/packages/flutter_tools/templates/plugin/ohos.tmpl/projectName.tmpl/oh-package.json5.tmpl @@ -5,7 +5,7 @@ "main": "index.ets", "author": "", "license": "Apache-2.0", - "devDependencies": { + "dependencies": { "@ohos/flutter_ohos": "file:./libs/flutter_ohos.har" } }