diff --git a/README.en.md b/README.en.md index 4fa188385de7d2c824857960038252dc7b75ccf1..90172584915c0d5b815a80f182b0151416ef034c 100644 --- a/README.en.md +++ b/README.en.md @@ -18,7 +18,8 @@ This repository is a compatible extension of Flutter SDK for the OpenHarmony pla *The following environment variable configuration is for Unix-like systems (Linux, Mac). You can directly refer to the configuration below. For environment variable configuration under Windows, please set it in ‘Edit System Environment Variables’* 1. Download OpenHarmony SDK and configure environment variables - * API12, deveco-studio-5.0.0.300 or command-line-tools-5.0.0.300 + * API12, deveco-studio-5.0.3.300 or command-line-tools-5.0.3.300 + * Configure Java17 * Configure environment variables (SDK, node, ohpm, hvigor) ```sh @@ -164,3 +165,6 @@ Attachment: [Flutter third-party library adaptation plan](https://docs.qq.com/sh 2. Execute `fluent clean` to clear the project compilation cache 3. Execute `flutter run -d $DEVICE --debug` 3. Additional information: If a similar error occurs while running Android or iOS, you can also try restoring the environment variable FLUTTER_STORAGE_BASE_URL , clearing the cache, and then running again. + +12. After the ROM update in Beta 2 version, anonymous memory requests are no longer supported. Due to this change, the debug mode of Flutter application will crash. Please use release or profile mode first. + 1. Reference Documents: [Explanation of Change in Anonymous Memory Execution Permission Control Policy](https://developer.huawei.com/consumer/cn/doc/harmonyos-roadmap-V5/changelogs-for-all-apps-b031-V5#%E5%8C%BF%E5%90%8D%E5%86%85%E5%AD%98%E6%89%A7%E8%A1%8C%E6%9D%83%E9%99%90%E7%AE%A1%E6%8E%A7%E7%AD%96%E7%95%A5%E5%8F%98%E6%9B%B4%E8%AF%B4%E6%98%8E) diff --git a/README.md b/README.md index 0522c8c8a476d56345c58343954172b9f393e1f9..7e0e3cc70cfa7de4aca63ffc41805af8203bd752 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,8 @@ Flutter SDK 仓库 *下列环境变量配置,类Unix系统(Linux、Mac),下可直接参照配置,Windows下环境变量配置请在‘编辑系统环境变量’中设置* 1. 配置HarmonyOS SDK和环境变量 - * API12, deveco-studio-5.0.0.300 或 command-line-tools-5.0.0.300 + * API12, deveco-studio-5.0.3.300 或 command-line-tools-5.0.3.300 + * 配置 Java17 * 配置环境变量 (SDK, node, ohpm, hvigor) ```sh @@ -83,6 +84,12 @@ Flutter SDK 仓库 flutter run --debug -d ``` +5. 构建app包命令: +``` + # 示例:flutter build app --release [--local-engine=/src/out/ohos_release_arm64] local-engine为可选项 + flutter build app --release +``` + ## 已兼容OpenHarmony开发的指令列表 | 指令名称 | 指令描述 | 使用说明 | @@ -173,3 +180,5 @@ Flutter SDK 仓库 4. 运行 `flutter run -d $DEVICE --debug` 3. 补充信息: 运行android或ios出现类似错误,也可以尝试还原环境变量 FLUTTER_STORAGE_BASE_URL ,清除缓存后重新运行。 +11. Beta2版本的ROM更新后,不再支持申请匿名内存。受此次变更影响,flutter应用的debug模式运行会闪退,请先使用release或profile运行模式。 + 1. 参考文档:[匿名内存执行权限管控策略变更说明](https://developer.huawei.com/consumer/cn/doc/harmonyos-roadmap-V5/changelogs-for-all-apps-b031-V5#%E5%8C%BF%E5%90%8D%E5%86%85%E5%AD%98%E6%89%A7%E8%A1%8C%E6%9D%83%E9%99%90%E7%AE%A1%E6%8E%A7%E7%AD%96%E7%95%A5%E5%8F%98%E6%9B%B4%E8%AF%B4%E6%98%8E) diff --git a/bin/internal/engine.ohos.version b/bin/internal/engine.ohos.version index b15f39a9e5621b44c7808657339fd0ab31c5717a..c5001676dc9622b21ec6104be7769b33649792b9 100644 --- a/bin/internal/engine.ohos.version +++ b/bin/internal/engine.ohos.version @@ -1 +1 @@ -18a0a1af65ac8d9448d7599cf86a7ccc96a0b13c +5006f157d46a85aecab64d80dbdf91fe3cda873b diff --git a/packages/flutter/lib/src/material/page_transitions_theme.dart b/packages/flutter/lib/src/material/page_transitions_theme.dart index f0ed130220876678613d80d4a69eab53b3d063f0..e07d0cd163e3ef597b48681890c57e30b5d1e809 100644 --- a/packages/flutter/lib/src/material/page_transitions_theme.dart +++ b/packages/flutter/lib/src/material/page_transitions_theme.dart @@ -201,10 +201,7 @@ class _OpenRightwardsPageTransition extends StatelessWidget { return AnimatedBuilder( animation: animation, builder: (BuildContext context, Widget? child) { - return Container( - alignment: Alignment.topLeft, - child: child, - ); + return child ?? Container(); }, child: AnimatedBuilder( animation: secondaryAnimation, diff --git a/packages/flutter/lib/src/widgets/scroll_view.dart b/packages/flutter/lib/src/widgets/scroll_view.dart index 0fcb1f5346c5677d599b1b4167087adfc7d23f9d..efa8d74904c817d8f3415a4520ad7e1ece376741 100644 --- a/packages/flutter/lib/src/widgets/scroll_view.dart +++ b/packages/flutter/lib/src/widgets/scroll_view.dart @@ -414,16 +414,13 @@ abstract class ScrollView extends StatelessWidget { final ScrollController? scrollController = effectivePrimary ? PrimaryScrollController.maybeOf(context) : controller; - ScrollBehavior? localScrollBehavior = scrollBehavior; - if(defaultTargetPlatform == TargetPlatform.ohos){ - localScrollBehavior = ScrollConfiguration.of(context).copyWith(scrollbars:false); - } + final Scrollable scrollable = Scrollable( dragStartBehavior: dragStartBehavior, axisDirection: axisDirection, controller: scrollController, physics: physics, - scrollBehavior: localScrollBehavior, + scrollBehavior: scrollBehavior, semanticChildCount: semanticChildCount, restorationId: restorationId, viewportBuilder: (BuildContext context, ViewportOffset offset) { diff --git a/packages/flutter_tools/lib/src/ohos/hvigor.dart b/packages/flutter_tools/lib/src/ohos/hvigor.dart index fe3873655294d540343dc4afbbcfb9b8183bf24c..02c869184f3c38970c3e542652a40cd1e4f7c22f 100644 --- a/packages/flutter_tools/lib/src/ohos/hvigor.dart +++ b/packages/flutter_tools/lib/src/ohos/hvigor.dart @@ -113,7 +113,7 @@ String getAbsolutePath(FlutterProject flutterProject, String path) { return path; } -Future invokeCmd( +Future invokeCmd( {required List command, required String workDirectory, required ProcessManager processManager, @@ -128,11 +128,7 @@ Future invokeCmd( .transform(utf8.decoder) .transform(const LineSplitter()) .listen((String line) { - if (line.contains('error')) { - throwToolExit('command {$command} invoke error!:$line'); - } else { - logger?.printStatus(line); - } + logger?.printStatus(line); }); final int exitCode = await server.exitCode; if (exitCode == 0) { @@ -140,7 +136,7 @@ Future invokeCmd( } else { logger?.printError('$cmd invoke error.'); } - return; + return server; } /// ohpm should init first @@ -148,29 +144,18 @@ Future ohpmInstall( {required ProcessManager processManager, required String workingDirectory, Logger? logger}) async { - final List command = [ - 'ohpm', - 'install', - '--all', - ]; - logger?.printTrace('invoke at:$workingDirectory ,command: ${command.join(' ')}'); - final Process server = - await processManager.start(command, workingDirectory: workingDirectory); - - server.stderr.transform(utf8.decoder).listen(logger?.printError); - final StdoutHandler stdoutHandler = - StdoutHandler(logger: logger!, fileSystem: globals.localFileSystem); - server.stdout - .transform(utf8.decoder) - .transform(const LineSplitter()) - .listen(stdoutHandler.handler); - final int exitCode = await server.exitCode; - if (exitCode == 0) { - logger.printStatus('ohpm install success.'); - } else { - logger.printError('ohpm install error.'); - } - return; + final List cleanCmd = ['ohpm', 'clean']; + final List installCmd = ['ohpm', 'install', '--all']; + await invokeCmd( + command: cleanCmd, + workDirectory: workingDirectory, + processManager: processManager, + logger: logger); + await invokeCmd( + command: installCmd, + workDirectory: workingDirectory, + processManager: processManager, + logger: logger); } /// 根据来源,替换关键字,输出target文件 @@ -186,23 +171,12 @@ Future hvigorwTask(List taskCommand, required String workPath, required String hvigorwPath, Logger? logger}) async { - final String taskStr = taskCommand.join(' '); - logger?.printTrace('invoke hvigorw task: $taskStr'); - final Process server = - await processManager.start(taskCommand, workingDirectory: workPath); - server.stderr.transform(utf8.decoder).listen(logger?.printError); - final StdoutHandler stdoutHandler = - StdoutHandler(logger: logger!, fileSystem: globals.localFileSystem); - server.stdout - .transform(utf8.decoder) - .transform(const LineSplitter()) - .listen(stdoutHandler.handler); - final int exitCode = await server.exitCode; - if (exitCode == 0) { - logger.printStatus('success! when invoke: $taskStr.'); - } else { - logger.printError('error! when invoke: $taskStr ,exitCode = $exitCode. '); - } + final Process process = await invokeCmd( + command: taskCommand, + workDirectory: workPath, + processManager: processManager, + logger: logger); + int exitCode = await process.exitCode; return exitCode; } @@ -643,16 +617,16 @@ class OhosHvigorBuilder implements OhosBuilder { // TODO: implement buildHsp throw UnimplementedError(); } - + @override Future buildApp({ required FlutterProject project, required OhosBuildInfo ohosBuildInfo, required String target, }) async { - + await buildApplicationPipeLine(project, ohosBuildInfo, target: target); - + final String hvigorwPath = getHvigorwPath(ohosRootPath, checkMod: true); /// invoke hvigow task generate hap file. @@ -665,7 +639,7 @@ class OhosHvigorBuilder implements OhosBuilder { throwToolExit('assembleHap error! please check log.'); } } - + Future buildApplicationPipeLine(FlutterProject flutterProject, OhosBuildInfo ohosBuildInfo, {required String target}) async { if (!flutterProject.ohos.ohosBuildData.moduleInfo.hasEntryModule) { throwToolExit(