diff --git a/OAT.xml b/OAT.xml index 2440975a3114d53513168f5ef220ca949bb9082a..5534951f90f7adf31c0596bd39c98936bab7d229 100644 --- a/OAT.xml +++ b/OAT.xml @@ -93,7 +93,7 @@ - + diff --git a/README.en.md b/README.en.md index 6a3c4bdc9f138fb98e0d36f52c5a8038bb6421f6..5d8ad933ceee71210691ca359e0507af86a6c37d 100644 --- a/README.en.md +++ b/README.en.md @@ -12,7 +12,7 @@ This warehouse is based on the compatible extension of flutter sdk for OpenHarmo The flutter tools command supports use on Linux/Mac/Windows. * Build dependencies: - Depend on [flutter engine](https://github.com/flutter/engine) to build products: `ohos_debug_unopt_arm64` and `ohos_release_arm64`, please add: `--local-engine=\` + Depend on [flutter engine](https://github.com/flutter/engine) to build products: `ohos_debug_unopt_arm64` and `ohos_release_arm64`, please add: `--local-engine=<engine product in the running parameters of the flutter tools command Directory>` * Building steps: @@ -48,11 +48,11 @@ This warehouse is based on the compatible extension of flutter sdk for OpenHarmo ... ``` - 3. Configure Gradle: Download `gradle 7.1` and unzip it, configure it into environment variables: + 3. Configure Gradle: Download `gradle 7.3` and unzip it, configure it into environment variables: ``` # grade - export PATH=/home//env/gradle-7.1/bin:$PATH + export PATH=/home//env/gradle-7.3/bin:$PATH ``` 4. Download Flutter and configure the environment after the download is complete: @@ -158,7 +158,7 @@ export HOS_SDK_HOME=/home//env/{HarmonyOS sdk} export SIGN_TOOL_HOME=/home//ohos/developtools_hapsigner/autosign # grade -export PATH=/home//env/gradle-7.1/bin:$PATH +export PATH=/home//env/gradle-7.3/bin:$PATH #nodejs export NODE_HOME=/home//env/node-v14.19.1-linux-x64 export PATH=$NODE_HOME/bin:$PATH @@ -175,8 +175,9 @@ export PATH=$NODE_HOME/bin:$PATH ``` # Create project flutter create --platforms ohos flutter_demo - # Enter the project root directory to compile - flutter build hap --local-engine-src-path /home//ohos/engine/src --local-engine ohos_release_arm64 + # Enter the project root directory to compile, the `src/out` in `--local-engine` shoud be preserved. + flutter build hap --local-engine=/home//ohos/engine/src/out/ohos_release_arm64 --release + flutter build hap --local-engine=/home//ohos/engine/src/out/ohos_debug_unopt_arm64 --debug ``` 3. After flutter devices discover the ohos device, use `hdc -t install ` to install it. @@ -198,19 +199,19 @@ HDC_SERVER_PORT=8710 After the configuration is completed, the flutter sdk can complete the device connection through the hdc server. You can also refer to [official guidance](https://docs.openharmony.cn/pages/v4.0/zh-cn/device-dev/subsystems/subsys-toolchain -hdc-guide.md/#hdc-client%E5%A6%82%E4%BD%95%E8%BF%9C%E7%A8%8B%E8%AE%BF%E9%97%AEhdc-server) ## Compatible command list developed by OpenHarmony: -| Command name | Command description | Instructions for use | -| ------- | ------- |---------------------------------- ----------------------------------| -| doctor | environment detection | flutter doctor | -| config | environment configuration | flutter config --\ \ | -| create | Create a new project | flutter create --platforms ohos,android --org \ \ | -| devices | Connected device discovery | flutter devices | -| install | application installation | flutter install -t \ \ | -| assemble | resource packaging | flutter assemble | -| build | Test application build | flutter build hap --target-platform ohos-arm64 --debug --local-engine=\ | -| build | Formal application build | flutter build hap --target-platform ohos-arm64 --release --local-engine=\ | -| run | application run | flutter run --local-engine=\ | -| attach | debug mode | flutter attach | -| screenshot | catch screen | flutter screenshot | +| Command name | Command description | Instructions for use | +| ------------ | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| doctor | environment detection | flutter doctor | +| config | environment configuration | flutter config --<key> <value> | +| create | Create a new project | flutter create --platforms ohos,android --org <org> <appName> | +| devices | Connected device discovery | flutter devices | +| install | application installation | flutter install -t <deviceId> <hap file path> | +| assemble | resource packaging | flutter assemble | +| build | Test application build | flutter build hap --debug --local-engine=<debug engine product path compatible with ohos> \[--target-platform ohos-arm64\] | +| build | Formal application build | flutter build hap --release --local-engine=<ohos-compatible release engine product path> \[--target-platform ohos-arm64\] | +| run | application run | flutter run --local-engine=<ohos-compatible engine product path> | +| attach | debug mode | flutter attach | +| screenshot | catch screen | flutter screenshot | Prompt: [Flutter third-party library adaptation plan](https://docs.qq.com/sheet/DVVJDWWt1V09zUFN2) diff --git a/README.md b/README.md index f294770bef77fa3d5ab42b0f61175894ce5b9a9c..c0670b573b22006366b22acec290483a84e443a2 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Flutter SDK 仓库 flutter tools指令支持Linux、Mac和Windows下使用。 * 构建依赖: - 依赖[flutter engine](https://github.com/flutter/engine)构建产物:`ohos_debug_unopt_arm64` 与 `ohos_release_arm64`,请在flutter tools指令运行参数中添加:`--local-engine=\` + 依赖[flutter engine](https://github.com/flutter/engine)构建产物:`ohos_debug_unopt_arm64` 与 `ohos_release_arm64`,请在flutter tools指令运行参数中添加:`--local-engine=<engine产物目录>` * 构建步骤: @@ -49,11 +49,11 @@ Flutter SDK 仓库 ... ``` - 3. 配置Gradle:下载 `gradle 7.1` 并解压,配置到环境变量中: + 3. 配置Gradle:下载 `gradle 7.3` 并解压,配置到环境变量中: ``` # grade - export PATH=/home//env/gradle-7.1/bin:$PATH + export PATH=/home//env/gradle-7.3/bin:$PATH ``` 4. 下载Flutter,下载完成后配置环境: @@ -160,7 +160,7 @@ export HOS_SDK_HOME=/home//env/{HarmonyOS sdk} export SIGN_TOOL_HOME=/home//ohos/developtools_hapsigner/autosign # grade -export PATH=/home//env/gradle-7.1/bin:$PATH +export PATH=/home//env/gradle-7.3/bin:$PATH # nodejs export NODE_HOME=/home//env/node-v14.19.1-linux-x64 export PATH=$NODE_HOME/bin:$PATH @@ -177,8 +177,9 @@ export PATH=$NODE_HOME/bin:$PATH ``` # 创建工程 flutter create --platforms ohos flutter_demo - # 进入工程根目录编译 - flutter build hap --local-engine-src-path /home//ohos/engine/src --local-engine ohos_release_arm64 + # 进入工程根目录编译,`--local-engine` 中的 `src/out` 需要保留 + flutter build hap --local-engine=/home//ohos/engine/src/out/ohos_release_arm64 --release + flutter build hap --local-engine=/home//ohos/engine/src/out/ohos_debug_unopt_arm64 --debug ``` 3. flutter devices发现ohos设备之后,使用 `hdc -t install `进行安装。 @@ -200,19 +201,19 @@ HDC_SERVER_PORT=8710 配置完成后flutter sdk可以通过hdc server完成设备连接,也可参考[官方指导](https://docs.openharmony.cn/pages/v4.0/zh-cn/device-dev/subsystems/subsys-toolchain-hdc-guide.md/#hdc-client%E5%A6%82%E4%BD%95%E8%BF%9C%E7%A8%8B%E8%AE%BF%E9%97%AEhdc-server) ## 已兼容OpenHarmony开发的指令列表: -| 指令名称 | 指令描述 | 使用说明 | -| ------- | ------- |-------------------------------------------------------------------| -| doctor | 环境检测 | flutter doctor | -| config | 环境配置 | flutter config --\ \ | -| create | 创建新项目 | flutter create --platforms ohos,android --org \ \ | -| devices | 已连接设备查找 | flutter devices | -| install | 应用安装 | flutter install -t \ \ | -| assemble | 资源打包 | flutter assemble | -| build | 测试应用构建 | flutter build hap --target-platform ohos-arm64 --debug --local-engine=\<兼容ohos的debug engine产物路径\> | -| build | 正式应用构建 | flutter build hap --target-platform ohos-arm64 --release --local-engine=\<兼容ohos的release engine产物路径\> | -| run | 应用运行 | flutter run --local-engine=\<兼容ohos的engine产物路径\> | -| attach | 调试模式 | flutter attach | -| screenshot | 截屏 | flutter screenshot | +| 指令名称 | 指令描述 | 使用说明 | +| ---------- | -------------- | -------------------------------------------------------------------------------------------------------------------- | +| doctor | 环境检测 | flutter doctor | +| config | 环境配置 | flutter config --<key> <value> | +| create | 创建新项目 | flutter create --platforms ohos,android --org <org> <appName> | +| devices | 已连接设备查找 | flutter devices | +| install | 应用安装 | flutter install -t <deviceId> <hap文件路径> | +| assemble | 资源打包 | flutter assemble | +| build | 测试应用构建 | flutter build hap --debug --local-engine=<兼容ohos的debug engine产物路径> \[--target-platform ohos-arm64\] | +| build | 正式应用构建 | flutter build hap --release --local-engine=<兼容ohos的release engine产物路径> \[--target-platform ohos-arm64\] | +| run | 应用运行 | flutter run --local-engine=<兼容ohos的engine产物路径> | +| attach | 调试模式 | flutter attach | +| screenshot | 截屏 | flutter screenshot | 附:[Flutter三方库适配计划](https://docs.qq.com/sheet/DVVJDWWt1V09zUFN2) diff --git a/packages/flutter/lib/src/foundation/_platform_io.dart b/packages/flutter/lib/src/foundation/_platform_io.dart index 5e67d9fca4d8a610782ced2aa9691e571a2a8488..4d87f726ea4b723976b5a27d485c3b851892aad4 100644 --- a/packages/flutter/lib/src/foundation/_platform_io.dart +++ b/packages/flutter/lib/src/foundation/_platform_io.dart @@ -23,7 +23,7 @@ platform.TargetPlatform get defaultTargetPlatform { result = platform.TargetPlatform.macOS; } else if (Platform.isWindows) { result = platform.TargetPlatform.windows; - } else if (Platform.isOhos) { + } else if (Platform.operatingSystem == 'ohos') { result = platform.TargetPlatform.ohos; } assert(() { diff --git a/packages/flutter/lib/src/widgets/scroll_view.dart b/packages/flutter/lib/src/widgets/scroll_view.dart index 1c94377d573daf17f29872d83d1e9a16ce6b08b0..2f73a8f7542c8f4a7f1a7d7df135e88a2f6a2da4 100644 --- a/packages/flutter/lib/src/widgets/scroll_view.dart +++ b/packages/flutter/lib/src/widgets/scroll_view.dart @@ -419,7 +419,7 @@ abstract class ScrollView extends StatelessWidget { axisDirection: axisDirection, controller: scrollController, physics: physics, - scrollBehavior: scrollBehavior, + scrollBehavior: ScrollConfiguration.of(context).copyWith(scrollbars:false), semanticChildCount: semanticChildCount, restorationId: restorationId, viewportBuilder: (BuildContext context, ViewportOffset offset) { diff --git a/packages/flutter_tools/lib/src/commands/clean.dart b/packages/flutter_tools/lib/src/commands/clean.dart index fbcae995c39e92e4b1967d379c28f88d329fde5b..14f3be9032c12a60790c346967ab6bec50913fdc 100644 --- a/packages/flutter_tools/lib/src/commands/clean.dart +++ b/packages/flutter_tools/lib/src/commands/clean.dart @@ -68,6 +68,7 @@ class CleanCommand extends FlutterCommand { deleteFile(flutterProject.flutterPluginsFile); flutterProject.ohos.deleteOhModulesCache(); + deleteFile(flutterProject.ohos.ephemeralDirectory); return const FlutterCommandResult(ExitStatus.success); } diff --git a/packages/flutter_tools/lib/src/flutter_plugins.dart b/packages/flutter_tools/lib/src/flutter_plugins.dart index 221c92f275ab2e4c0eef018df3af02defb7e45dd..069e7848d88ff6094f44e8476dcfa9d1433cb71d 100644 --- a/packages/flutter_tools/lib/src/flutter_plugins.dart +++ b/packages/flutter_tools/lib/src/flutter_plugins.dart @@ -789,7 +789,7 @@ $_dartPluginRegisterWith {{#windows}} $_dartPluginRegisterWith {{/windows}} - } else if (Platform.isOhos) { + } else if (Platform.operatingSystem == 'ohos') { {{#ohos}} $_dartPluginRegisterWith {{/ohos}} diff --git a/packages/flutter_tools/lib/src/ohos/hvigor.dart b/packages/flutter_tools/lib/src/ohos/hvigor.dart index b03f4560811ebf3658eeeeb9619a7bef0ac341dc..32579fac51fe61f1be0d523541e309943bd1fe8b 100644 --- a/packages/flutter_tools/lib/src/ohos/hvigor.dart +++ b/packages/flutter_tools/lib/src/ohos/hvigor.dart @@ -755,6 +755,10 @@ class OhosHvigorBuilder implements OhosBuilder { throwToolExit('current project is not module or has not pub get'); } parseData(flutterProject, logger); + + /// 检查plugin的har构建 + await checkPluginsHarUpdate(flutterProject, buildInfo, ohosBuildData); + await flutterBuildPre(flutterProject, buildInfo, targetPlatform: targetPlatform, logger: logger); 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 18e2ab25e46d4a4b49b6f3e4216b79182dc62615..c2f611d7a4b68ab747432e9120b9285b7da81fcc 100644 --- a/packages/flutter_tools/lib/src/ohos/ohos_dependencies_manager.dart +++ b/packages/flutter_tools/lib/src/ohos/ohos_dependencies_manager.dart @@ -66,7 +66,7 @@ Future checkOhosPluginsDependencies(FlutterProject flutterProject) async { /// 查询所有的normal依赖 final List list = getOhosDependenciesListFromPackageFile( - flutterProject.ohos.mainModulePackageFile, + flutterProject.ohos.flutterModulePackageFile, dependenceType: DependenceType.normal); final List hasInstallPlugin = list.map((OhosDependence e) => e.baseModuleName).toList(); @@ -86,7 +86,7 @@ Future checkOhosPluginsDependencies(FlutterProject flutterProject) async { OhosDependence transform(OhosPlugin ohosPlugin, DependenceType dependenceType) { return OhosDependence('@ohos/${ohosPlugin.name}', ohosPlugin.name, - '../har/${ohosPlugin.name}.har', dependenceType); + './har/${ohosPlugin.name}.har', dependenceType); } /// 解析dependence列表,dependenceType为空时,返回normal和dev的合集。 @@ -126,16 +126,16 @@ List parseDependenciesFromType( Future addDependencies( FlutterProject flutterProject, List list) async { final dynamic config = - parsePakcageConfig(flutterProject.ohos.mainModulePackageFile); + parsePakcageConfig(flutterProject.ohos.flutterModulePackageFile); final Map dependencies = config['dependencies'] as Map; for (final OhosDependence dependence in list) { dependencies[dependence.moduleName] = - 'file:../har/${dependence.baseModuleName}.har'; + 'file:./har/${dependence.baseModuleName}.har'; } final String configNew = JSON5.stringify(config, space: 2); - flutterProject.ohos.mainModulePackageFile + flutterProject.ohos.flutterModulePackageFile .writeAsStringSync(configNew, flush: true); } 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 486e010524963987a0f003031cc49ea7350ddec8..5006744f61cbbab96bae12fcce500766751f3f56 100644 --- a/packages/flutter_tools/lib/src/ohos/ohos_plugins_manager.dart +++ b/packages/flutter_tools/lib/src/ohos/ohos_plugins_manager.dart @@ -74,7 +74,7 @@ Future checkPluginsHarUpdate(FlutterProject flutterProject, for (final String path in harPaths) { final File originFile = globals.fs.file(path); final String descPath = globals.fs.path.join( - flutterProject.ohos.ohosRoot.childDirectory('har').path, + flutterProject.ohos.flutterModuleDirectory.childDirectory('har').path, originFile.basename); originFile.copySync(descPath); } diff --git a/packages/flutter_tools/lib/src/ohos/ohos_sdk.dart b/packages/flutter_tools/lib/src/ohos/ohos_sdk.dart index 2531984905e04c4b71a3e3c032f8406e3215048e..46289c15c2e3b4fd721e1e95459b81effcc3b05b 100644 --- a/packages/flutter_tools/lib/src/ohos/ohos_sdk.dart +++ b/packages/flutter_tools/lib/src/ohos/ohos_sdk.dart @@ -22,7 +22,7 @@ const String kOhosSdkRoot = 'OHOS_SDK_HOME'; // HarmonyOS SDK const String kHmosHome = 'HOS_SDK_HOME'; -const List supportSdkVersion = ['8', '9', '10']; +const List supportSdkVersion = ['10', '11', '9']; class OhosSdk { OhosSdk(this._sdkDir) { diff --git a/packages/flutter_tools/lib/src/project.dart b/packages/flutter_tools/lib/src/project.dart index 6f622c872acfa09e8843d3a97712cf0eac129b01..7365689b58088583554701e20dfe169c4c20a8f9 100644 --- a/packages/flutter_tools/lib/src/project.dart +++ b/packages/flutter_tools/lib/src/project.dart @@ -954,8 +954,8 @@ class OhosProject extends FlutterProjectPlatform { .childDirectory('default') .childFile('entry-default-signed.hap'); - File get mainModulePackageFile => - mainModuleDirectory.childFile('oh-package.json5'); + File get flutterModulePackageFile => + flutterModuleDirectory.childFile('oh-package.json5'); File get localPropertiesFile => ohosRoot.childFile('local.properties'); diff --git a/packages/flutter_tools/templates/app_shared/ohos.tmpl/har/har_product.tmpl/flutter_embedding.har.debug.10 b/packages/flutter_tools/templates/app_shared/ohos.tmpl/har/har_product.tmpl/flutter_embedding.har.debug.10 index 457d0d83b2e998db5c79e2a92d2a360e81071162..d2497409438e6e02d1fdb3c3ea8d096813e1e70b 100644 Binary files a/packages/flutter_tools/templates/app_shared/ohos.tmpl/har/har_product.tmpl/flutter_embedding.har.debug.10 and b/packages/flutter_tools/templates/app_shared/ohos.tmpl/har/har_product.tmpl/flutter_embedding.har.debug.10 differ diff --git a/packages/flutter_tools/templates/app_shared/ohos.tmpl/har/har_product.tmpl/flutter_embedding.har.profile.10 b/packages/flutter_tools/templates/app_shared/ohos.tmpl/har/har_product.tmpl/flutter_embedding.har.profile.10 index 4d39a4f2db09eaf2e549e7c569535f22ea474ff1..c40c6365d9ae3c8500f5bb7663675eea06fd2b31 100644 Binary files a/packages/flutter_tools/templates/app_shared/ohos.tmpl/har/har_product.tmpl/flutter_embedding.har.profile.10 and b/packages/flutter_tools/templates/app_shared/ohos.tmpl/har/har_product.tmpl/flutter_embedding.har.profile.10 differ diff --git a/packages/flutter_tools/templates/app_shared/ohos.tmpl/har/har_product.tmpl/flutter_embedding.har.release.10 b/packages/flutter_tools/templates/app_shared/ohos.tmpl/har/har_product.tmpl/flutter_embedding.har.release.10 index 223c678869e3d73e36a6ed427aa9e6952e90c491..13faa13936939abf0b57681107f4622de9b500ed 100644 Binary files a/packages/flutter_tools/templates/app_shared/ohos.tmpl/har/har_product.tmpl/flutter_embedding.har.release.10 and b/packages/flutter_tools/templates/app_shared/ohos.tmpl/har/har_product.tmpl/flutter_embedding.har.release.10 differ