From 7400f4ca88587074ff935e863bc55a81bd9e7529 Mon Sep 17 00:00:00 2001 From: SimpleLove520 <1960997571@qq.com> Date: Tue, 21 Jan 2025 16:16:08 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=83=A8=E5=88=86?= =?UTF-8?q?=E8=8B=B1=E6=96=87=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: SimpleLove520 <1960997571@qq.com> --- ...=> harmonyos-flutter-environment-setup.md} | 170 ++++++++---------- ohos/docs/04_development/README_EN.md | 13 +- ...external-texture-adaptation-for-flutter.md | 55 +++--- ...unication-between-flutter-and-harmonyos.md | 114 ++++++++++++ .../using-a-module-in-hybrid-development.md | 125 +++++++++++++ ...sing-flutterEntry-in-hybrid-development.md | 95 ++++++++++ ohos/docs/05_performance/README_EN.md | 12 +- .../performance-delimitation.md | 58 +++--- .../performance-frame-rendering-tracking.md | 44 +++-- .../performance-sliding-response-time.md | 59 +++--- .../performance-threads-sequence.md | 91 +++++----- ohos/docs/08_FAQ/README_EN.md | 24 +-- ohos/docs/08_FAQ/environment.md | 38 ++-- .../docs/08_FAQ/flutter-cppcrash-guideline.md | 70 ++++---- ohos/docs/08_FAQ/ohos-code.md | 70 ++++++++ ohos/docs/08_FAQ/ohos-hap.md | 142 +++++++++++++++ ohos/docs/08_FAQ/ohos-run.md | 17 +- ohos/docs/media/05/image-4-401_EN.png | Bin 0 -> 181773 bytes ohos/docs/media/08/code2_EN.png | Bin 0 -> 50562 bytes 19 files changed, 851 insertions(+), 346 deletions(-) rename ohos/docs/03_environment/{openharmony-flutter-environment-setup.md => harmonyos-flutter-environment-setup.md} (54%) create mode 100644 ohos/docs/04_development/using-a-flutter-channel-for-communication-between-flutter-and-harmonyos.md create mode 100644 ohos/docs/04_development/using-a-module-in-hybrid-development.md create mode 100644 ohos/docs/04_development/using-flutterEntry-in-hybrid-development.md create mode 100644 ohos/docs/08_FAQ/ohos-hap.md create mode 100644 ohos/docs/media/05/image-4-401_EN.png create mode 100644 ohos/docs/media/08/code2_EN.png diff --git a/ohos/docs/03_environment/openharmony-flutter-environment-setup.md b/ohos/docs/03_environment/harmonyos-flutter-environment-setup.md similarity index 54% rename from ohos/docs/03_environment/openharmony-flutter-environment-setup.md rename to ohos/docs/03_environment/harmonyos-flutter-environment-setup.md index 0cbcacb2..aec0ae68 100644 --- a/ohos/docs/03_environment/openharmony-flutter-environment-setup.md +++ b/ohos/docs/03_environment/harmonyos-flutter-environment-setup.md @@ -1,12 +1,11 @@ -# OpenHarmony Flutter Environment Setup +# HarmonyOS Flutter Environment Setup ## Environment Preparation ### 1. Downloading and Installing the Latest DevEco Studio Development Suite and Its Dependencies #### 1.1 Official Download URL -Official download address of the Harmony development suite: https://developer.huawei.com/consumer/cn/download/ - +Official download address of the HarmonyOS development suite: https://developer.huawei.com/consumer/cn/download/ ``` Note: (1) The development suite is supported in Linux, macOS, and Windows systems. @@ -22,15 +21,13 @@ Official download address of the Harmony development suite: https://developer.hu ![](../media/03_1/img_17_EN.png) -##### (2) Download an emulator in DevEco Studio if no real OpenHarmony device is available. -For details about how to download and install the emulator, see section 2.2 "Install an emulator." - -##### (3) Download OpenHarmony Flutter. - -Project URL: https://gitee.com/openharmony-sig/flutter_flutter +##### (2) Download an Emulator in DevEco Studio if no real HarmonyOS device is available. +For details about how to download and install the Emulator, see section 2.2 "Install an Emulator." -Use a code editor to download the repository to your local PC and specify the dev or master branch. The dev branch is continuously updated and has more features than the master branch. +##### (3) Download HarmonyOS Flutter. + Project URL: https://gitee.com/openharmony-sig/flutter_flutter + Use a code editor to download the repository to your local PC and specify the dev or master branch. The dev branch is continuously updated and has more features than the master branch. ``` 1 git clone https://gitee.com/openharmony-sig/flutter_flutter.git 2 git checkout -b dev origin/dev @@ -39,25 +36,24 @@ Use a code editor to download the repository to your local PC and specify the de * Building a Flutter project requires the use of **ohos_debug_unopt_arm64** and **ohos_release_arm64**. * Add the `--local-engine=src/out/` to the running parameters of the Flutter Tools instruction to specify the engine to be downloaded. Otherwise, the latest engine on the cloud is used by default. Example: flutter build hap [--local-engine=/Users/admin/Documents/flutter_engine/src/out/ohos_debug_unopt_arm64]. * [Download the build products](https://docs.qq.com/sheet/DUnljRVBYUWZKZEtF?tab=BB08J2). -* The engine path must contain the **src/out** directory. After you decompress the downloaded package of the build products, save it to the local path with the **src/out** directory, for example, **/Users/lihui/Documents/flutter_engine/src/out**. +* The engine's local path must contain the **src/out** directory. After you decompress the downloaded package of the build products, save it to a local path with the **src/out** directory, for example, **/Users/admin/Documents/flutter_engine/src/out**. ![](../media/03_1/img_4_EN.png) #### 1.3 Preinstalled Environment Dependencies -* The OpenHarmony SDK requires the Java environment. You can download JDK 17 from the [Oracle website](https://www.oracle.com/java/technologies/downloads/#java17) or OpenJDK website and set up the environment. +* The HarmonyOS SDK requires the Java environment. You can download JDK 17 from the [Oracle website](https://www.oracle.com/java/technologies/downloads/#java17) or OpenJDK website and set the environment. * Execute the following instruction to check the JDK installation result: - - ```sh - java -version - ``` +```sh +java -version +``` ### 2. How to Install #### 2.1 Decompress the component suite package and install the DevEco Studio. -![](../media/03_1/img_01.png) +![](../media/03_1/img_01_EN.png) -#### 2.2 Install an emulator. +#### 2.2 Install an Emulator. ![](../media/03_1/img_18.png) ![](../media/03_1/img_18_1_EN.png) ![](../media/03_1/img_18_2_EN.png) @@ -67,71 +63,62 @@ Use a code editor to download the repository to your local PC and specify the de #### 2.3 Configure environment variables. * Use the terminal tool to determine the storage path of the actual environment variables in the current system. Execute the following instruction: - - ```sh - echo $SHELL - ``` - +```sh +echo $SHELL +``` * If the output is `/bin/bash`, execute the following instruction to open the **.bash_profile** file: - - ```sh - vi ~/.bash_profile - ``` - +```sh +vi ~/.bash_profile +``` * If the output is `/bin/zsh`, execute the following instruction to open the **.zshrc** file: - - ```sh - vi ~/.zshrc - ``` - +```sh +vi ~/.zshrc +``` * After you get the environment variable storage file, configure the environment variables. For example, open the **bash_profile** file and execute the `vi ~/.bash_profile` instruction. +```sh - ```sh - - # Mirror inside china - export PUB_HOSTED_URL=https://pub.flutter-io.cn - export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn - - # flutter_flutter/bin directory pulled from Flutter pub - export PATH=/Users/admin/ohos/flutter_flutter/bin:$PATH - - # OpenHarmony SDK - export TOOL_HOME=/Applications/DevEco-Studio.app/Contents # macOS environment - export DEVECO_SDK_HOME=$TOOL_HOME/sdk # command-line-tools/sdk - export PATH=$TOOL_HOME/tools/ohpm/bin:$PATH # command-line-tools/ohpm/bin - export PATH=$TOOL_HOME/tools/hvigor/bin:$PATH # command-line-tools/hvigor/bin - export PATH=$TOOL_HOME/tools/node/bin:$PATH # command-line-tools/tool/node/bin - export HDC_HOME=$TOOL_HOME/sdk/default/openharmony/toolchains # (Optional) hdc instruction - - # Optional configuration items (required when using the Android Studio or Visual Studio Code to debug. The JDK version is 17.0.12) - JAVA_HOME=/Users/admin/Documents/JDK/jdk-17.0.12.jdk/Contents/Home - PATH=$JAVA_HOME/bin:$PATH:. - export JAVA_HOME - export PATH - - # Optional configuration item (to prevent the creation of subsequent Flutter projects from being affected by the mismatched environment variable of the Gitee download URL for OpenHarmony Flutter) - export FLUTTER_GIT_URL=https://gitee.com/openharmony-sig/flutter_flutter.git - - # Optional configuration item (required only when there is no node environment in the tool file under the command-line-tools directory) - # export NODE_HOME=/Users/lihui/node/node-18.14.1 - # export PATH=$PATH:$NODE_HOME/bin - ``` - +# Mirror inside China +export PUB_HOSTED_URL=https://pub.flutter-io.cn +export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn + +# flutter_flutter/bin directory pulled from Flutter pub +export PATH=/Users/admin/ohos/flutter_flutter/bin:$PATH + +# HamonyOS SDK +export TOOL_HOME=/Applications/DevEco-Studio.app/Contents # macOS environment +export DEVECO_SDK_HOME=$TOOL_HOME/sdk # command-line-tools/sdk +export PATH=$TOOL_HOME/tools/ohpm/bin:$PATH # command-line-tools/ohpm/bin +export PATH=$TOOL_HOME/tools/hvigor/bin:$PATH # command-line-tools/hvigor/bin +export PATH=$TOOL_HOME/tools/node/bin:$PATH # command-line-tools/tool/node/bin +export HDC_HOME=$TOOL_HOME/sdk/HarmonyOS-NEXT-DB1/openharmony/toolchains # (Optional) hdc instruction + +# Optional configuration items (required when using the Android Studio or Visual Studio Code to debug. The JDK version is 17.0.12) +JAVA_HOME=/Users/admin/Documents/JDK/jdk-17.0.12.jdk/Contents/Home +PATH=$JAVA_HOME/bin:$PATH:. +export JAVA_HOME +export PATH + +# Optional configuration item (to prevent the creation of subsequent Flutter projects from being affected by the mismatched environment variable of the Gitee download URL for HarmonyOS Flutter) +export FLUTTER_GIT_URL=https://gitee.com/openharmony-sig/flutter_flutter.git + +# Optional configuration item (required only when there is no node environment in the tool file under the command-line-tools directory) +# export NODE_HOME=/Users/admin/node/node-18.14.1 +# export PATH=$PATH:$NODE_HOME/bin +``` * After all required environment variables are configured, execute the following instruction to update the environment configuration for making it take effect: +```sh +source ~/.bash_profile +``` - ```sh - source ~/.bash_profile - ``` - -#### 2.4 Run the emulator. +#### 2.4 Run the Emulator. ![](../media/03_1/m1_EN.png) -Create an emulator. +Create an Emulator. ![](../media/03_1/img.png) -Start the emulator. +Start the Emulator. ![](../media/03_1/m2_EN.png) @@ -140,7 +127,7 @@ Emulator running effect ![](../media/03_1/m3_EN.png) -## OpenHarmony Flutter Integration and Debugging +## HarmonyOS Flutter Integration and Debugging ### 1. Checking the Environment Run `flutter doctor -v` to check whether the environment variable configuration is correct. The check results for both Flutter and OpenHarmony should be **ok**. If there are any prompts indicating missing environment variable configuration, follow the prompts to configure the environment. @@ -162,7 +149,7 @@ flutter create flutter build hap --debug ``` -### 3. Running the Flutter Project on a Real OpenHarmony Device +### 3. Running the Flutter Project on a Real HarmonyOS Device #### 3.1 Sign the project. Before running the project on a real device, you need to sign the project. Steps are as follows. ![](../media/03_1/sign01.png) @@ -171,21 +158,19 @@ Before running the project on a real device, you need to sign the project. Steps #### 3.2 Run the project on a real device. * Execute the `flutter devices` instruction to discover a real device and obtain the device ID. - Method 1: Go to the project directory, compile the HAP in the specified build mode, and install it on the OpenHarmony device. - - ```sh - flutter run --debug -d - ``` - - Method 2: Go to the project root directory, compile the HAP, and install it on the OpenHarmony device. +Method 1: Go to the project directory, compile the HAP in the specified build mode, and install it on the HarmonyOS device. +```sh + flutter run --debug -d +``` - ```sh - flutter build hap --debug - hdc -t install - ``` +Method 2: Go to the project root directory, compile the HAP, and install it on the HarmonyOS device. +```sh + flutter build hap --debug + hdc -t install +``` - Method 3: Use DevEco Studio to set your phone as the real device and start running. - ![](../media/03_1/img12.png) +Method 3: Use DevEco Studio to set your phone as the real device and start running. +![](../media/03_1/img12.png) ### 4. Running the Flutter Project on an Emulator @@ -193,7 +178,7 @@ Before running the project on a real device, you need to sign the project. Steps ![](../media/03_1/open_ohos.png) -#### 4.2 Start the OpenHarmony emulator in DevEco Studio. +#### 4.2 Start the HarmonyOS Emulator in DevEco Studio. ![](../media/03_1/m1_EN.png) @@ -201,7 +186,7 @@ Before running the project on a real device, you need to sign the project. Steps ![](../media/03_1/m3_EN.png) -Switch to the OpenHarmony emulator. +Switch to the HarmonyOS Emulator. ![](../media/03_1/img00_EN.png) @@ -209,21 +194,24 @@ Switch to the OpenHarmony emulator. ![](../media/03_1/img9_EN.png) -![](../media/03_1/img_10_EN.png) +![](../media/03_1/img10_EN.png) ### 5. FAQs on Emulator Running #### 5.1 Unable to Create an Emulator Case 1: Use an account that has passed real-name authentication to sign in. +#### 5.2 Unable to Run the Emulator on Windows or macOS x86 Architecture +Currently, the Emulator supports the macOS ARM architecture, and Flutter has not been adapted to the x86 architecture. Therefore, you cannot run the Emulator on Windows or Mac x86 architecture. ### 6. FAQs on pub upgrade Instruction #### 6.1 Executing the pub upgrade Takes a Long Time -Case 1: A large number of files need to be loaded for the first time. The time required varies greatly depending on the network conditions. Please wait. +Case 1: A large number of files need to be pulled for the first loading. The time required varies according to the network status. If the download fails, check the network connection or replace the proxy, and try again. Case 2: Delete the **flutter_flutter/bin/cache** file and try again. Case 3: Replace the source of the mirror. Example: PUB_HOSTED_URL=https://mirrors.tuna.tsinghua.edu.cn/dart-pub - FLUTTER_STORAGE_BASE_URL=https://mirrors.tuna.tsinghua.edu.cn/flutter \ No newline at end of file + FLUTTER_STORAGE_BASE_URL=https://mirrors.tuna.tsinghua.edu.cn/flutter + diff --git a/ohos/docs/04_development/README_EN.md b/ohos/docs/04_development/README_EN.md index a6705b7f..5e2a4b11 100644 --- a/ohos/docs/04_development/README_EN.md +++ b/ohos/docs/04_development/README_EN.md @@ -1,25 +1,24 @@ # Feature Development -## Adding a Flutter Page to Your OpenHarmony Application +## Adding a Flutter Page to Your HarmonyOS Application 1. [Using FlutterPage](./using-flutterpage.md) -2. [Using FlutterEntry](./using-flutterentry.md) +2. [Using FlutterEntry in Hybrid Development](./using-flutterEntry-in-hybrid-development.md) -## Using a Flutter Platform Channel in Your OpenHarmony Application +## Using a Flutter Channel in Your HarmonyOS Application -1. [Using a Flutter Platform Channel](./using-a-flutter-platform-channel.md) +1. [Using a Flutter Channel for Communication Between Flutter and HarmonyOS](./using-a-flutter-channel-for-communication-between-flutter-and-harmonyos.md) ## Hybrid Rendering with Native Code 1. [External Texture Adaptation for Flutter](./external-texture-adaptation-for-flutter.md) 2. [Using FlutterEngineGroup](./using-flutterenginegroup.md) 3. [Using a Platform View](./using-a-platform-view.md) -4. [Platform View Same-Layer Rendering Adaptation and Switching](./platform-view-same-layer-rendering-adaptation-and-switching.md) +4. [Platform View Same-Layer Rendering Adaptation and Switching](./platform-view-same-layer-rendering-solution-adaptation-and-switching.md) ## Developing a Flutter Static Library -1. [Developing a Module](./developing-a-module.md) +1. [Using a Module in Hybrid Development](./using-a-module-in-hybrid-development.md) 2. [Developing a Package](./developing-a-package.md) 3. [Developing a Plugin](./developing-a-plugin.md) 4. [Developing an FFI Plugin](./developing-an-ffi-plugin.md) - diff --git a/ohos/docs/04_development/external-texture-adaptation-for-flutter.md b/ohos/docs/04_development/external-texture-adaptation-for-flutter.md index 6d593729..3a0ddbdd 100644 --- a/ohos/docs/04_development/external-texture-adaptation-for-flutter.md +++ b/ohos/docs/04_development/external-texture-adaptation-for-flutter.md @@ -1,52 +1,49 @@ -# External Texture Adaptation for Flutter +External Texture Adaptation for Flutter Flutter uses external textures on the ohos platform. In the case of camera preview and video playback, the Flutter engine returns a surface ID when a texture is registered. In the case of image display, a texture is registered with the Flutter engine in the form of a PixelMap. -Generally, to facilitate code reuse, the function code for connecting the ohos platform to the Flutter external texture is encapsulated as a module, and the module is registered as a plugin with the Flutter engine. For details, see https://gitee.com/openharmony-sig/flutter_packages/tree/master/packages/video_player/video_player_ohos/ohos. +**NOTE**
1. Generally, to facilitate code reuse, the function code for connecting the ohos platform to the Flutter external texture is encapsulated as a module, and the module is registered as a plugin with the Flutter engine. For details, see [video_player_ohos](https://gitee.com/openharmony-sig/flutter_packages/tree/master/packages/video_player/video_player_ohos/ohos). -## Camera Preview +2. The background color of the external texture is white and cannot be changed. +# Camera Preview -### Demo URL +## Demo URL: [test_camera](https://gitee.com/openharmony-sig/flutter_samples/tree/master/ohos/testcamera) -https://gitee.com/openharmony-sig/flutter_samples/tree/master/ohos/testcamera - -### How to Implement +## How to Implement 1. Obtain **TextureRegistry** from the **FlutterPluginBinding** input parameter in **onAttachedToEngine** to implement the plugin. - ![](../media/04_1/dc15b84a4b97ec7f923ffefe121bd346.png) +![](../media/04_1/dc15b84a4b97ec7f923ffefe121bd346.png) 2. Implement the response method for texture registration in **onMethodCall**. - ![](../media/04_1/3f7a2a6befa3459f00a90b6e796839e4.png) +![](../media/04_1/3f7a2a6befa3459f00a90b6e796839e4.png) - In **registerCameraTexture** used to register a texture, obtain the texture ID, and then register the texture based on the texture ID with the flutter engine to obtain a surface ID. +In **registerCameraTexture** used to register a texture, obtain the texture ID, and then register the texture based on the texture ID with the flutter engine to obtain a surface ID. - ![](../media/04_1/7ea99353820d6640826bf0bd24dd5f8b.png) +![](../media/04_1/7ea99353820d6640826bf0bd24dd5f8b.png) 3. Use the obtained surface ID when starting camera preview. - ![](../media/04_1/614df503f2164dd4e4a4b4a5e5bc9c87_EN.png) - -4. Call **MethodChannel** at the dart layer to trigger texture registration and start camera preview. +![](../media/04_1/614df503f2164dd4e4a4b4a5e5bc9c87_EN.png) - ![](../media/04_1/62bbfe62e6fecbb269ab9f607fb2cfbf.png) +4 . Call **MethodChannel** at the dart layer to trigger texture registration and start camera preview. - Use the obtained texture ID to build a texture widget for image preview. +![](../media/04_1/62bbfe62e6fecbb269ab9f607fb2cfbf.png) - ![](../media/04_1/37b3118e6921ff70b1baf4234fcdaa69.png) +Use the obtained texture ID to build a texture widget for image preview. -## Video Playback +![](../media/04_1/37b3118e6921ff70b1baf4234fcdaa69.png) -### Demo URL +# Video Playback -https://gitee.com/openharmony-sig/flutter_packages/tree/master/packages/video_player/video_player_ohos/example +## Demo URL: [video_player](https://gitee.com/openharmony-sig/flutter_packages/tree/master/packages/video_player/video_player_ohos/example) -### How to Implement +## How to Implement Video playback uses the same way as camera preview in registering a texture. Steps are as follows: -1. Implement the native ohos player AVplayer in the **video_player_ohos** plugin. For details, see **https://docs.openharmony.cn/pages/v4.1/en/application-dev/reference/apis-media-kit/_a_v_player.md**. +1. Implement the native ohos player AVplayer in the **video_player_ohos** plugin. For details, see [Using AVPlayer to Play Audio (ArkTS)](https://docs.openharmony.cn/pages/v5.0/en/application-dev/media/media/using-avplayer-for-playback.md). 2. Obtain **TextureRegistry** from the **FlutterPluginBinding** input parameter in **onAttachedToEngine** to implement the plugin (encapsulated in **FlutterState**). ![](../media/04_1/50312d42df3346723abf740064ea019b.png) @@ -59,19 +56,17 @@ Video playback uses the same way as camera preview in registering a texture. Ste ![](../media/04_1/d7e3f8d50d8970578c1bfc9bdcb1941c.png) -5. When the AVplayer is in the **AvplayerStatus.INITIALIZED** state, the surface ID is assigned to the AVplayer. - - ![](../media/04_1/7f03e4b85c4434de763faf2b3d073a6d.png) +5. When the AVplayer is in the **AvplayerStatus.INITIALIZED** state, the surface ID is assigned to the AVplayer. -When the AVplayer is created in step 3, the texture ID needs to be returned to the dart layer. Then the dart layer can use the external texture to complete rendering in the texture widget. +![](../media/04_1/7f03e4b85c4434de763faf2b3d073a6d.png) -## Image Display +1. When the AVplayer is created in step 3, the texture ID needs to be returned to the dart layer. Then the dart layer can use the external texture to complete rendering in the texture widget. -### Demo URL +# Image Display -https://gitee.com/openharmony-sig/flutter_samples/tree/master/ohos/testpicture +## Demo URL: [test_picture](https://gitee.com/openharmony-sig/flutter_samples/tree/master/ohos/testpicture) -### How to Implement +## How to Implement In the case of image display, no surface is used for connection to the external texture. The texture is registered with the Flutter engine in the form of a PixelMap. diff --git a/ohos/docs/04_development/using-a-flutter-channel-for-communication-between-flutter-and-harmonyos.md b/ohos/docs/04_development/using-a-flutter-channel-for-communication-between-flutter-and-harmonyos.md new file mode 100644 index 00000000..562c81d1 --- /dev/null +++ b/ohos/docs/04_development/using-a-flutter-channel-for-communication-between-flutter-and-harmonyos.md @@ -0,0 +1,114 @@ +# Using a Flutter Channel for Communication Between Flutter and HarmonyOS + +This topic describes how to use a Flutter channel in the HarmonyOS Flutter project. + +The following are the key implementation codes. For details about the complete demo, see [channel_demo](https://gitee.com/openharmony-sig/flutter_samples/tree/master/ohos/channel_demo). + +## MethodChannel + +Dart code + +```dart +// Create an instance. +final _platform = const MethodChannel('samples.flutter.dev/battery'); +// Call the getBatteryLevel method. +final result = await _platform.invokeMethod('getBatteryLevel'); +``` + +ets code + +```ts +onAttachedToEngine(binding: FlutterPluginBinding): void { + let that = this; + // Create an instance. + this.channel = new MethodChannel(binding.getBinaryMessenger(), "samples.flutter.dev/battery"); + // Set the callback and call the implementation. + this.channel.setMethodCallHandler({ + onMethodCall(call: MethodCall, result: MethodResult) { + switch (call.method) { + case "getBatteryLevel": + that.api.getBatteryLevel(result); + break; + default: + result.notImplemented(); + break; + } + } + }) +} +``` + +## BasicMessageChannel + +Dart code + +```dart +int count = 0; +// Create an instance. +final _basicChannel = const BasicMessageChannel( + "samples.flutter.dev/basic_channel", StandardMessageCodec()); +// Call a method to obtain the return value from the platform. +String result = await _basicChannel.send(++count) as String; +``` + +ets code + +```ts +onAttachedToEngine(binding: FlutterPluginBinding): void { + // Create an instance. + this.basicChannel = new BasicMessageChannel(binding.getBinaryMessenger(), "samples.flutter.dev/basic_channel", new StandardMessageCodec()); + // Set the callback and call the implementation. + this.basicChannel.setMessageHandler({ + onMessage(message: Any, reply: Reply) { + Log.i(TAG, "message=" + message); + if (message % 2 == 0) { + reply.reply("run with if case."); + } else { + reply.reply("run with else case"); + } + } + }) +} +``` + +## EventChannel + +Dart code + +```dart +// Create an instance. +final _eventChannel = const EventChannel('samples.flutter.dev/event_channel'); +// Enable listening for events. +_eventChannel.receiveBroadcastStream().listen((event) { + setState(() { + message = "EventChannel event=$event"; + }); +}); +``` + +ets code + +```ts +private eventSink?: EventSink; + +onAttachedToEngine(binding: FlutterPluginBinding): void { + let that = this; + // Create an instance. + this.eventChannel = new EventChannel(binding.getBinaryMessenger(), "samples.flutter.dev/event_channel"); + // Set the callback to obtain EventSink. + this.eventChannel.setStreamHandler({ + onListen(args: Any, events: EventSink): void { + that.eventSink = events; + Log.i(TAG, "onListen: " + args); + }, + onCancel(args: Any): void { + that.eventSink = undefined; + Log.i(TAG, "onCancel: " + args); + } + }); +} + +// ... +// After EventSink sends the data, the event listener at the dart layer can receive the sent data. +that.eventSink?.success("Success at " + new Date()); +``` diff --git a/ohos/docs/04_development/using-a-module-in-hybrid-development.md b/ohos/docs/04_development/using-a-module-in-hybrid-development.md new file mode 100644 index 00000000..3006501c --- /dev/null +++ b/ohos/docs/04_development/using-a-module-in-hybrid-development.md @@ -0,0 +1,125 @@ +# Using a Module in Hybrid Development + +This topic describes how to reference a flutter_module project in an ohos project. + +- ohos project: a native HarmonyOS project that can be created by DevEco Studio. +- flutter_module project: a Flutter submodule project that can be created by executing Flutter instructions. + +## Environment Setup + +- Use [flutter_flutter](https://gitee.com/openharmony-sig/flutter_flutter) to configure environment variables. +- Use the engine products generated by [flutter_engine](https://gitee.com/openharmony-sig/flutter_engine). + +Use DevEco Studio to create a native HarmonyOS project named **MyApplication**. + +## flutter_module Project Operations + +```sh +# 1. Create a Flutter submodule project. +flutter create -t module my_flutter_module +# 2. Compile and generate flutter_module.har. +cd my_flutter_module +flutter build har --debug +cd - +# 3. Copy EntryAbility.ets and Index.ets to MyApplication. +cp my_flutter_module/.ohos/entry/src/main/ets/entryability/EntryAbility.ets MyApplication/entry/src/main/ets/entryability/EntryAbility.ets +cp my_flutter_module/.ohos/entry/src/main/ets/pages/Index.ets MyApplication/entry/src/main/ets/pages/Index.ets +``` + +## ohos Project Operations + +An ohos project can reference a Flutter project in either of the following ways: + +### Method 1: Referencing the HAR File + +#### 1. Copy the HAR file. + +```sh +cp -r my_flutter_module/.ohos/har/* MyApplication/har/ +``` + +### 2. Modify the **MyApplication/oh-package.json5** file. + +```json +{ + // ... + "dependencies": { + // If the useNormalizedOHMUrl field in the project-level build-profile.json5 file is set to true, the alias used by the dependent package in oh-package.json5 must be the same as the name of oh-package.json5 in the dependent package. Otherwise, an error will be reported during compilation. + "@ohos/flutter_module": "har/flutter_module.har" + }, + "overrides": { + // Conflicts in dependencies need to be eliminated here. + "@ohos/flutter_ohos": "har/flutter.har", + "plugin_xxx": "har/plugin_xxx.har" + } +} +``` + +#### 3. Use DevEco Studio to configure the signature of **MyApplication**. + +#### 4. Run **MyApplication**. + +### Method 2: Directly Referencing the flutter_module Source Code + +#### 1. Copy the flutter_module source code and Flutter-related files. + +```sh +cp -r my_flutter_module/.ohos/flutter_module MyApplication/ +mkdir -p MyApplication/flutter_module/src/main/resources/rawfile +cp -r my_flutter_module/.ohos/flutter_module/src/main/resources/rawfile/flutter_assets MyApplication/flutter_module/src/main/resources/rawfile +cp my_flutter_module/.ohos/har/flutter.har MyApplication/har/flutter.har +``` + +#### 2. Modify the **MyApplication/build-profile.json5** file. + +```json +{ + // ... + "modules": [ + { + "name": "entry", + "srcPath": "./entry", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + }, + // The following is the content newly added: + { + "name": "flutter_module", + "srcPath": "./flutter_module", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + } + ] +} +``` + +#### 3. Modify the **MyApplication/oh-package.json5** file. + +```json +{ + // ... + "dependencies": { + "flutter_module": "./flutter_module", + "@ohos/flutter_ohos": "./har/flutter.har" + }, + "overrides": { + "@ohos/flutter_ohos": "./har/flutter.har" + } +} +``` + +#### 4. Use DevEco Studio to configure the signature of **MyApplication**. + +#### 5. Run **MyApplication**. diff --git a/ohos/docs/04_development/using-flutterEntry-in-hybrid-development.md b/ohos/docs/04_development/using-flutterEntry-in-hybrid-development.md new file mode 100644 index 00000000..872c3455 --- /dev/null +++ b/ohos/docs/04_development/using-flutterEntry-in-hybrid-development.md @@ -0,0 +1,95 @@ +# Using FlutterEntry in Hybrid Development + +## 1. Making the EntryAbility to Inherit from the UIAbility + +```ts +export default class EntryAbility extends UIAbility implements ExclusiveAppComponent { + + detachFromFlutterEngine(): void { + // throw new Error('Method not implemented.'); + } + + getAppComponent(): UIAbility { + return this; + } + + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { + FlutterManager.getInstance().pushUIAbility(this); + } + + onDestroy(): void | Promise { + FlutterManager.getInstance().popUIAbility(this); + } + + onWindowStageCreate(windowStage: window.WindowStage): void { + windowStage.getMainWindowSync().setWindowLayoutFullScreen(true); + FlutterManager.getInstance().pushWindowStage(this, windowStage); + windowStage.loadContent('pages/Index'); + } + + onWindowStageDestroy() { + FlutterManager.getInstance().popWindowStage(this); + } +} +``` + +## 2. Making the MyFlutterEntry to Inherit from the FlutterEntry and Registering the Plugin + +```ts +export default class MyFlutterEntry extends FlutterEntry { + configureFlutterEngine(flutterEngine: FlutterEngine): void { + super.configureFlutterEngine(flutterEngine); + GeneratedPluginRegistrant.registerWith(flutterEngine); + this.delegate?.addPlugin(new BatteryPlugin()); + } +} +``` + +## 3. Using the FlutterEntry Together with the FlutterView + +```ts +@Entry +@Component +struct Index { + private flutterEntry: FlutterEntry | null = null; + private flutterView?: FlutterView + + aboutToAppear() { + Log.d("Flutter", "Index aboutToAppear==="); + this.flutterEntry = new MyFlutterEntry(getContext(this)) + this.flutterEntry.aboutToAppear() + this.flutterView = this.flutterEntry.getFlutterView() + } + + aboutToDisappear() { + Log.d("Flutter", "Index aboutToDisappear==="); + this.flutterEntry?.aboutToDisappear() + } + + onPageShow() { + Log.d("Flutter", "Index onPageShow==="); + this.flutterEntry?.onPageShow() + } + + onPageHide() { + Log.d("Flutter", "Index onPageHide==="); + this.flutterEntry?.onPageHide() + } + + build() { + Stack() { + FlutterPage({ viewId: this.flutterView?.getId() }) + Button ('Go to page 2') + .onClick(() => { + try { + router.pushUrl({ url: 'pages/Index2', params: { route: '/second' } }) + } catch (err) { + Log.d("Flutter", "Go to page 2 error ===" + JSON.stringify(err)). + } + }) + } + } +} +``` + +For details about the complete demo, see [flutter_page_sample2](https://gitee.com/openharmony-sig/flutter_samples/tree/master/ohos/flutter_page_sample2). diff --git a/ohos/docs/05_performance/README_EN.md b/ohos/docs/05_performance/README_EN.md index 8fc9cafc..fff57ee7 100644 --- a/ohos/docs/05_performance/README_EN.md +++ b/ohos/docs/05_performance/README_EN.md @@ -1,14 +1,14 @@ -# Performance Tuning +# Performance Optimization -For a OpenHarmony Flutter project, you can use DevTools to debug the Dart code. For details, see [Flutter and Dart DevTools](https://docs.flutter.dev/tools/devtools). +For a HarmonyOS Flutter project, you can use DevTools to debug the Dart code. For details, see [Flutter and Dart DevTools](https://docs.flutter.dev/tools/devtools). -[Performance Analysis Demarcation Guide](./performance-delimitation.md) +[Performance Analysis and Issue Demarcation](./performance-delimitation.md) -[The First Step in Performance Analysis – Sorting Out Thread Order](./performance-threads-sequence.md) +[Performance Analysis: Sorting the Thread Sequence](./performance-threads-sequence.md) -[Performance Analysis - Frame Rendering Trace](./performance-frame-rendering-tracking.md) +[Performance Analysis: Frame Rendering Tracing](./performance-frame-rendering-tracking.md) -[Performance Analysis - Scroll Response Latency](./performance-sliding-response-time.md) +[Performance Analysis: Swipe Response Latency](./performance-sliding-response-time.md) ## Environment Configurations diff --git a/ohos/docs/05_performance/performance-delimitation.md b/ohos/docs/05_performance/performance-delimitation.md index ebd21380..b70caec9 100644 --- a/ohos/docs/05_performance/performance-delimitation.md +++ b/ohos/docs/05_performance/performance-delimitation.md @@ -1,53 +1,51 @@ -# Performance Analysis Demarcation Guide +# Performance Analysis and Issue Demarcation -## Prerequisites -- OpenHarmony Next system -- A Flutter page running in the foreground -- Analysis tools - [DevEco Studio Profiler](https://developer.huawei.com/consumer/cn/download/) - [SmartPerf](https://gitee.com/openharmony-sig/smartperf) +## Preparations +- HarmonyOS NEXT +- Flutter page running in the foreground +- Analysis Tools + [DevEco Studio Profiler](https://developer.huawei.com/consumer/cn/download/) + [Smartperf](https://gitee.com/openharmony/developtools_smartperf_host) ## Introduction to Flutter Threads +Flutter uses multiple threads to complete its work. Only two of them are displayed in the overlay. All the Dart code you write runs on the UI thread. Although there is no direct access to other threads, your operations on the UI thread may affect the performance of other threads. -Flutter uses multiple threads to complete its necessary work, and the diagram only shows two of them. All the Dart code you write runs on the UI thread. Although you do not have direct access to other threads, your operations on the UI thread can affect the performance of other threads. +- Platform thread +Main thread of the platform, where the plugin code runs. -- Platform Thread - The main thread of the platform, where the plugin code runs. +- UI thread +A thread that executes Dart code in the Dart VM. This thread runs your own code and code generated by the Flutter framework based on application behavior. When an application creates and displays a scenario, the UI thread first creates a layer tree, which is a lightweight object containing device-agnostic rendering commands, and sends the layer tree to the raster thread to be rendered on the device. Do not block this thread. It is displayed at the bottom row of the performance overlay. -- UI Thread - The UI thread executes Dart code in the Dart VM. This includes code written by developers and code generated by the Flutter framework based on application behavior. When the app creates and displays a scene, the UI thread first builds a layer tree, a lightweight object containing device-independent rendering commands, and sends the layer tree to the GPU thread for rendering on the device. **Do not block this thread!** It is displayed in the bottom bar of the performance overlay. +- Raster thread +Also referred to as a GPU thread. This thread obtains the layer tree and delivers it to the GPU. You cannot directly access the raster thread or its data, but if the thread slows down, it must be caused by somewhere in the Dart code. The graphics library Skia runs on this thread, which is displayed on the top of the performance layer. Note that the raster thread rasterizes the GPU, but the thread itself runs on the CPU. -- Raster Thread - The raster thread, also known as the GPU thread. The raster thread takes the layer tree and hands it off to the GPU (Graphics Processing Unit). You cannot directly interact with the GPU thread or its data, but if this thread slows down, it is definitely caused by some part of the developer’s Dart code. The Skia graphics library runs on this thread, which is displayed in the top bar of the performance overlay. Note that the raster thread performs rasterization for the GPU but itself runs on the CPU. +- I/O thread +A thread that executes high-load operations (commonly I/O operations) to avoid blocking UI or raster threads. This thread is not displayed on the performance overlay. -- I/O Thread - Executes high-load operations (commonly I/O) to avoid blocking the UI or raster threads. This thread will not be shown in the performance overlay. +- RenderService thread +Main thread of the RS process. After Flutter renders frames, the RenderService thread combines the frames and sends them for display. In texture mode, the buffer rendered by Flutter and the application main thread are combined and sent for display together. In surface mode, the frames rendered by Flutter are separately sent for display, without being affected by the application main thread. -- RenderService Thread - The main thread of the RS process. After Flutter completes frame rendering, the RS thread performs composition and sends the result to the display. In Texture mode, after the Flutter-rendered buffer is composed with the application’s main thread, it is then sent to display together, and is influenced by the application’s main thread. In Surface mode, the Flutter-rendered frame is sent to display independently and is not affected by the application’s main thread. - -## Problem Demarcation - -In DevEco Studio, click the Profiler tab at the bottom to open the performance tuning tool. After capturing the application’s trace, bookmark the application processes `.ui`, `.raster`, and the main thread of RenderService. +## Issue Demarcation +On the **Profiler** tab page at the bottom of DevEco Studio, use this the Profiler to capture application traces, and mark the UI thread, raster thread, and RenderService thread. ![](../media/05/image-1-301.png) -In the figure above, the missing frames in RenderService occur because the time taken by the UI thread for a single frame is too long, exceeding the duration of one frame (at a 120 fps rate, one frame is 8.33 ms). -![](../media/05/image-1-302.png) -If, in a single frame rendering process, the total duration of `.ui` and `.raster` exceeds the duration of one frame, the performance issue can be identified as a Flutter problem. Further performance analysis is needed for issue localization. +In the preceding figure, the RenderService loses frames because the UI thread consumes too much time for a single frame, which is expected to last approximately 8.33 ms (at the frame rate of 120 fps). +![](../media/05/image-1-302.png) -## Appendix -### Introduction to DevEco Studio Profiler Tool +For single-frame rendering, if the total duration of UI and raster threads exceeds 8.33 ms, the performance issue is caused by Flutter. Further performance analysis is required to demarcate the issue. -[DevEco Studio Profiler](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/profiler-introduce-0000001501850508-V2) -### Fluter Performance Tuning Introduction +## Appendix +### Introduction to DevEco Studio Profiler +[DevEco Studio Profiler](https://developer.huawei.com/consumer/en/doc/harmonyos-guides-V2/profiler-introduce-0000001501850508-V2) -[Flutter Performance Tuning](https://docs.flutter.cn/perf) \ No newline at end of file +### Flutter Optimization +[Performance](https://docs.flutter.dev/perf) diff --git a/ohos/docs/05_performance/performance-frame-rendering-tracking.md b/ohos/docs/05_performance/performance-frame-rendering-tracking.md index 75701120..a5e82e11 100644 --- a/ohos/docs/05_performance/performance-frame-rendering-tracking.md +++ b/ohos/docs/05_performance/performance-frame-rendering-tracking.md @@ -1,44 +1,40 @@ -# Performance Analysis - Frame Rendering Trace +# Performance Analysis: Frame Rendering Tracing -When performing performance analysis on Flutter applications, it is necessary to capture the application’s trace data using analysis tools and then analyze it. In some cases, it may be necessary to trace the rendering of a single frame, for example when dealing with frame rate stutters or dropped frames. This document introduces a method for tracing individual frame rendering. +When analyzing the performance of a Flutter application, use analysis tools to capture and analyze trace data of the application. Considering that you might need to isolate and track a particular frame, for instance, when dealing with frame freezing or loss, this topic describes how to track individual frames. - ## Analysis Tools +## Analysis Tools +Common analysis tools include [DevEco Studio Profiler](https://developer.huawei.com/consumer/cn/download/) (recommended) and [Smartperf](https://gitee.com/openharmony/developtools_smartperf_host). For details about how to use the Profiler, see [In-depth Capture for Problem Locating](https://developer.huawei.com/consumer/en/doc/harmonyos-guides-V5/deep-recording-V5). - Commonly used analysis tools include [DevEco Studio Profiler](https://developer.huawei.com/consumer/cn/download/) and [SmartPerf](https://gitee.com/openharmony-sig/smartperf). It is recommended to use the DevEco Studio Profiler for performance tuning. For more information on using the DevEco Studio Profiler, please refer to the [DevEco Profiler Tool Introduction](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/deep-recording-V5). +## Frame Identifier +The rendering process of a frame is as follows. - ## Frame Identifiers +![](../media/05/image-3-201_EN.png) - A single frame’s rendering process is roughly as follows: - ![](../media/05/image-3-201_EN.png) +It is important to understand the frame rendering process and assign an appropriate frame identifier to each unit to match the rendering process. - It is very important to understand the frame rendering process, and it is equally important to be able to match each unit in the frame rendering process. Finding suitable identifiers for each unit helps correctly match the rendering flow. +### First Identifier: frame_number +**frame_number** is the identifier for matching UI and raster threads. +Mark these two threads, and find the identifier on the traced swimlanes. +- If **frame_number** does not appear in the UI and raster threads, the current frame is not self-rendered by Flutter. In this case, you need to demarcate the performance issue again. - ### First Identifier: frame_number +![](../media/05/image-3-202.png) - The linkage between 1.ui and 1.raster threads is identified by `frame_number`. - By bookmarking these two threads and correlating them for observation, you will find this identifier in the trace. This is the first identifier for Flutter application frame rendering. +### Second Identifier: ReuseBuffer or acquire buffer - - If the `frame_number` identifier does not appear in either 1.ui or 1.raster, it indicates that the current frame is not rendered by Flutter. In that case, you need to re-demarcate the performance problem. +**ReuseBuffer** is the identifier for matching raster and RenderService threads. +During the trace of **flutter::SkCanvas::Flush** in the raster thread, a buffer is applied for from the RS process to store the rendered frame content. Click the trace of **binder transaction** to jump to another thread and view the ID of the corresponding **ReuseBuffer**. - ![](../media/05/image-3-202.png) +![](../media/05/image-3-203.png) - ### Second Identifier: ReuseBuffer/acquire buffer +During the trace of **RSMainThread::DoComposition** in the RenderService thread, the frame memory in the buffer is obtained. The trace of **acquire buffer sequence** shows that the **ReuseBuffer** ID is the same as that applied by the raster thread. - The linkage between 1.raster and render_service threads is identified by `ReuseBuffer`. +![](../media/05/image-3-204.png) - In the `1.raster` thread trace, during the `"flutter::SkCanvas::Flush"` process, the raster thread requests a buffer from the RS process to store the rendered frame content. By clicking on the `"binder transaction"` in the trace, you can jump to another thread and view the corresponding `ReuseBuffer` ID. - ![](../media/05/image-3-203.png) - - In the render_service thread, during the `"RSMainThread::DoComposition"` trace process, the frame buffer memory is acquired. In the `"acquire buffer sequence"` trace, you can see that the `ReuseBuffer` number matches the one requested by the `1.raster` thread. - - ![](../media/05/image-3-204.png) - - - - With the two identifiers shown above, you can identify the frame rendering flow from the Flutter application to the RS process. As for how to recognize subsequent units on the RS process side, there is currently no intuitive trace available. By default, continuous thread traces are considered part of the same frame (i.e., from `render_service` to `RSUniRenderThread`, and then to `RSHardwareThread` are considered continuous). +- Based on the preceding two identifiers, you can identify the frame rendering of a Flutter application on the RS process. However, no trace is provided to identify the subsequent units in the RS process. By default, consecutive thread traces are from the same frame (for example, the traces of **render_service**, **RSUniRenderThread**, and **RSHardwareThread**). diff --git a/ohos/docs/05_performance/performance-sliding-response-time.md b/ohos/docs/05_performance/performance-sliding-response-time.md index bd504e31..7af47bac 100644 --- a/ohos/docs/05_performance/performance-sliding-response-time.md +++ b/ohos/docs/05_performance/performance-sliding-response-time.md @@ -1,60 +1,61 @@ -# Performance Analysis - Scroll Response Latency +# Performance Analysis: Swipe Response Latency -This article focuses on trace analysis of response latency in scrolling scenarios for Flutter applications. Be sure to read [Performance Analysis Step 1 - Sorting Out Thread Order](./performance-threads-sequence.md) before continuing. +This topic describes how to conduct a trace analysis on the swipe response latency for Flutter applications. You are advised to read [Performance Analysis: Sorting the Thread Sequence](./performance-threads-sequence.md) beforehand. -## Prerequisites +## Preparations -- Understand and be able to use the performance analysis tool [DevEco Studio Profiler](https://developer.huawei.com/consumer/cn/download/) -- Understand thread rendering order ([Performance Analysis Step 1 - Sorting Out Thread Order](./performance-threads-sequence.md)) +- You have learned how to use [DevEco Studio Profiler](https://developer.huawei.com/consumer/cn/download/). +- You have a clear understanding of the thread rendering sequence. For details, see [Performance Analysis: Sorting the Thread Sequence](./performance-threads-sequence.md). -## 1. Finger Down +## 1. Finger Press +Pressing is a prerequisite for all touch or swipe events. The system can receive important information such as the initial position of the finger and the components touched from the events. -A finger-down event is the prerequisite for all tap or scroll events, providing critical information such as the initial coordinates of the finger and which widget is being touched. -The `mmi_service` thread is responsible for triggering multi-modal interaction events, which the Flutter application listens to and responds to. +The mmi_service thread triggers multimodal interaction events, and the Flutter application listens for and responds to touch events. -The finger-down touch event is immediately forwarded to the Flutter application. -In the `mmi_service` thread, after the "package touchEvent" trace, you can see a "service report touchId:xxx, type: down" trace, where `type` is `down`, indicating a finger-down touch event. Meanwhile, on the application’s main thread, there is a "DispatchTouchEvent" trace that shows detailed coordinates and the event type. When `type` has a value of `0`, it means a finger-down touch event. These traces on the two threads correspond to each other. +The touch event of finger press is immediately forwarded to the Flutter application. -![](../media/05/image-4-201.png) +In the mmi_service thread, following the trace of **package touchEvent**, the trace shows the details "service report touchId: number, type: down," where the type **down** indicates the touch event of finger press. In the application main thread, the trace of **DispatchTouchEvent** contains coordinates and the touch event type **0**, indicating the touch event of finger press. The traces on the two threads match. -## 2. Finger Move +![](../media/05/image-4-201.png) -Unlike a finger-down event, a finger-move touch event is not immediately forwarded to the Flutter application. Instead, it is controlled by the vsync-app signal before being sent. -Similar to the finger-down trace, both the `mmi_service` thread and the application’s main thread have corresponding traces, but with a different type. `type = move` corresponds to a value of `2`. +## 2. Finger Swipe +The touch event of finger swipe is not immediately forwarded to Flutter applications. Instead, its sending is controlled by the VSync-app signal. -The finger-move touch event requires a vsync-app signal named `flutterSyncName` to be triggered before it is passed on to the Flutter application’s main thread. Thus, the chronological order is: `mmi_service` → `VSyncGennerator` → `DVSync-app` → Application main thread. The trace order is shown below: -![](../media/05/image-4-301.png) +This touch event has similar traces in the mmi_service thread and the application main thread like that of finger press, yet the type is **move**, corresponding to value **2**. -- Note: The coordinates of the very first finger-move touch event are the same as those of the finger-down event. -## 3. TouchSlop Threshold +The touch event of finger swipe can be passed to the main thread only after being triggered by the VSync-app signal of flutterSyncName. Therefore, the response sequence is as follows: mmi_service > VSyncGennerator > DVSync-app > application main thread. Trace sequence is as follows. + +![](../media/05/image-4-301.png) -TouchSlop is the minimum recognizable scroll distance, essentially a threshold. Users can customize the widget’s scrolling threshold, with a default system value of 18. +- Note: Coordinates of the touch event of the first finger swipe are the same as that of the touch event of finger press. -By checking the touch event coordinates in the application’s main thread traces, you can manually calculate the coordinate offset to see if it meets the scrolling threshold. +## 3. TouchSlop +TouchSlop is the minimum swipe distance that can be identified by the system. This distance is customizable, and the default value is **18**. -## 4. The First Scrolling Frame +With the coordinates of the touch event trace in the application main thread, the system can automatically calculate whether the coordinate offset reaches the . -When the scrolling distance of the finger-move touch event exceeds the set TouchSlop threshold, the Flutter application triggers an `update` operation. However, actual drawing operations must wait for the arrival of the next frame. Therefore, the rendering of the first frame when scrolling begins involves an additional one-frame delay after the touch event conditions are met. -The trace is shown below: +## 4. First Frame of the Swipe Gesture +When the swipe distance of a touch event exceeds the specified distance, the Flutter application triggers an update. However, the rendering action can be executed only after the next frame arrives. Therefore, even though the swipe gesture triggers the touch event, the first frame rendering still waits for one-frame latency. -![](../media/05/image-4-401.png) +Trace sequence is as follows. -## 5. First Frame Rendering +![](../media/05/image-4-401_EN.png) -For a general overview of rendering, see [Performance Analysis - Frame Rendering Tracking](./performance-frame-rendering-tracking.md) to accurately locate corresponding traces. +## 5. First-Frame Rendering +You need to find out the corresponding trace. For details about the rendering process, see [Performance Analysis: Frame Rendering Tracing](./performance-frame-rendering-tracking.md). -The frame rendering ends on the `RSHardwareThread` thread in the RS process. However, in automated testing, the end of frame rendering is identified by the `dpu_gfx_primary` thread. (The `dpu_gfx_primary` thread is just a hardware signal and will not be explained in detail.) +Frame rendering ends on RSHardwareThread of the RS process. However, during the automatic test, the end identifier of frame rendering is the dpu_gfx_primary thread (which is a hardware signal). -The trace is shown below: +Trace sequence is as follows. ![](../media/05/image-4-501.png) -Therefore, the time from the `mmi_service` thread’s finger-down trace to the end of the first scrolling frame rendering is the scroll response latency. +Therefore, the swipe response latency is the duration from the time the trace of finger press is recorded in the mmi_service thread to the time the first frame of the swipe gesture finishes rendering. diff --git a/ohos/docs/05_performance/performance-threads-sequence.md b/ohos/docs/05_performance/performance-threads-sequence.md index 704817aa..49465548 100644 --- a/ohos/docs/05_performance/performance-threads-sequence.md +++ b/ohos/docs/05_performance/performance-threads-sequence.md @@ -1,74 +1,63 @@ -# The First Step in Performance Analysis – Sorting Out Thread Order +# Performance Analysis: Sorting the Thread Sequence + +When analyzing the performance of a Flutter application, use analysis tools to capture and analyze the application's traces. The rendering process of the Flutter application is closely related to several threads. This topic describes these threads and their sequence in the rendering process. -When performing performance analysis on a Flutter application, it is necessary to use analysis tools to capture the application’s trace and then analyze it. The rendering process of a Flutter application is closely intertwined with several threads. This guide introduces these threads and their order in the rendering process. ## Analysis Tools +Common analysis tools include [DevEco Studio Profiler](https://developer.huawei.com/consumer/cn/download/) (recommended) and [Smartperf](https://gitee.com/openharmony/developtools_smartperf_host). For details about how to use the Profiler, see [In-depth Capture for Problem Locating](https://developer.huawei.com/consumer/en/doc/harmonyos-guides-V5/deep-recording-V5). -Common analysis tools include [DevEco Studio Profiler](https://developer.huawei.com/consumer/cn/download/) and [SmartPerf](https://gitee.com/openharmony-sig/smartperf). It is recommended to use the DevEco Studio Profiler for performance tuning. For instructions on how to use the DevEco Studio Profiler, please refer to the [DevEco Profiler Tool Introduction](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/deep-recording-V5). - -## Thread Order - -- Once you understand how to use the analysis tools, you can capture the Flutter application’s trace. The trace contains all threads that ran during the application’s execution. To better analyze Flutter’s performance, you need to first bookmark the threads shown in the figure below and then arrange them in the order indicated by the numbers above them. -- When bookmarking threads in the trace, note that threads added later appear at the top of the favorites list. Therefore, it’s more convenient to bookmark the threads in reverse order as shown in the figure. -- The order of threads is: - 1) VSyncGennerator - 2) DVSync-app - 3) mmi_service - 4) Main application thread - 5) flutter’PointerEvent’ - 6) 1.ui - 7) 1.raster - 8) DVSync-rs - 9) render_service - 10) RSUniRenderThread - 11) RSHardwareThread - 12) dpu_gfx_primary -![](../media/05/image-2-201_EN.png) +## Thread Sequence +- Learning how to use analysis tools can help you capture traces of Flutter applications. The traces contain all threads at the application runtime. Mark and sort the threads in the sequence shown in the figure below to better analyze the Flutter application performance. The thread sequence is shown by the number. +- Because the latest marked thread is displayed on the top of list, it is recommended that you mark threads in reverse order. +- Thread sequence: (1) VSyncGennerator (2) DVSync-app (3) mmi_service (4) Application main thread (5) flutter'PointerEvent' (6) 1.ui (7) 1. raster (8) DVSync-rs (9) render_service (10) RSUniRenderThread (11) RSHardwareThread (12) dpu_gfx_primary -After bookmarking the threads in order, the thread favorites list should look like this: +![](../media/05/image-2-201_EN.png) +After the threads are marked and sorted, the thread list is as follows. ![](../media/05/image-2-202.png) + ![](../media/05/image-2-203.png) + ![](../media/05/image-2-204.png) -## Introduction to the Bookmarked Threads -- **VSyncGennerator** - A software Vsync signal generator that provides the capability to perceive VSync frames. +## Thread List +- VSyncGennerator +VSync signal generator, providing the capability of sensing VSync frames. -- **DVSync-app** - Provides a software Vsync signal to the app application. +- DVSync-app +VSync signal provided for the application. -- **mmi_service** - Handles multi-modal events triggered when the user touches the screen. +- mmi_service +Multimodal event triggered when a finger touches the screen. -- **Main Application Thread** - The thread whose ID matches the application’s process ID and whose name matches the process name. - This is the platform’s main thread, where plugin code runs. +- Application main thread +A main thread whose thread ID is the same as the application process ID and thread name is the same as the process name. +It is the main thread of the platform, where the plugin code runs. -- **flutter'PointerEvent'** - This thread (if it exists) handles the process of sending touch events from the main application thread to the 1.ui thread for processing. +- flutter'PointerEvent' +Procedure from the time the main thread of the Flutter application sends a touch event to the time the UI thread handles the touch event. This thread may not exist. -- **1.ui** - The UI thread, named `.ui`. - The UI thread executes Dart code in the Dart VM. This includes both developer-written code and code generated by the Flutter framework based on application behavior. When the app creates and displays a scene, the UI thread first builds a layer tree—a lightweight object containing device-independent rendering commands—and sends it to the GPU thread for rendering. **Do not block this thread!** In the performance overlay, this thread is displayed at the bottom bar. +- 1.ui +UI thread named **< number >.ui**. +It executes Dart code in the Dart VM. This thread includes your own code and code generated by the Flutter framework based on application behavior. When an application creates and displays a scenario, the UI thread first creates a layer tree, which is a lightweight object containing device-agnostic rendering commands, and sends the layer tree to the raster thread to be rendered on the device. Do not block this thread. It is displayed at the bottom row of the performance overlay. -- **1.raster** - The Raster thread, named `.raster`. - The raster thread receives the layer tree and hands it off to the GPU (Graphics Processing Unit). You cannot directly interact with the GPU thread or its data, but if this thread is slow, it is definitely caused by some part of your Dart code. The Skia graphics library runs on this thread, which is displayed at the top bar of the performance overlay. Note that while the raster thread performs rasterization for the GPU, the thread itself runs on the CPU. +- 1.raster +Raster thread named **< number >.raster**. +This thread obtains the layer tree and delivers it to the GPU. You cannot directly access the raster thread or its data, but if the thread slows down, it must be caused by somewhere in the Dart code. The graphics library Skia runs on this thread, which is displayed on the top of the performance layer. Note that the raster thread rasterizes the GPU, but the thread itself runs on the CPU. -- **DVSync-rs** - Provides a software Vsync signal to the RS process. +- DVSync-rs +VSync signal provided for the RS process. -- **render_service** - The main thread of the RS process, and the first step in RS composition. +- render_service +Main thread of the RS process, which is the first step for sending the frames to RS for display. -- **RSUniRenderThread** - A thread in the RS process, responsible for the second step in RS composition. +- RSUniRenderThread +Thread of the RS process, which is the second step for sending the frames to RS for display. -- **RSHardwareThread** - A thread in the RS process, responsible for the third step in RS composition. +- RSHardwareThread +Thread of the RS process, which is the third step for sending the frames to RS for display. -- **dpu_gfx_primary** - A hardware DPU signal. +- dpu_gfx_primary +Hardware DPU signal. diff --git a/ohos/docs/08_FAQ/README_EN.md b/ohos/docs/08_FAQ/README_EN.md index 2757a7d4..f1d25dd0 100644 --- a/ohos/docs/08_FAQ/README_EN.md +++ b/ohos/docs/08_FAQ/README_EN.md @@ -1,24 +1,24 @@ # FAQs -You can refer to FAQs related to the following aspects during OpenHarmony Flutter development. +You can refer to FAQs related to the following aspects during HarmonyOS Flutter development. 1. [Environment](./environment.md) -2. [ohos Engine Product Compilation](./ohos-engine-product-compilation.md) -3. [ohos Application Compilation](./ohos-application-compilation.md) -4. [ohos Code Development](./ohos-code.md) -5. [ohos Program Running](./ohos-run.md) -6. [ohos Development](../04_development/README.md) -7. [Parsing Flutter-Related CppCrash Stacks](./flutter-cppcrash-guideline.md) +2. [ohos Engine Product Compilation](./ohos_engine.md) +3. [ohos Application Compilation](./ohos_hap.md) +4. [ohos Code Development](./ohos_code.md) +5. [ohos Running](./ohos_run.md) +6. [Feature Development](../04_development/README_EN.md) +7. [Analyzing the Cpp Crash Stack Related to Flutter](./flutter_cppcrash_guideline.md) -## Key Information Template for Feedback on Questions Related to OpenHarmony Flutter Application +## Key Information Template for Feedback on Questions Related to HarmonyOS Flutter Application 1. IDE version number. Example: 1. DevEco Studio 5.0.3.300 -2. Device name and system version number of the OpenHarmony device or emulator. You can check them in **Settings** > **About phone**. Example: +2. Device name and system version number of the HarmonyOS device or the Emulator. You can check them in **Settings** > **About phone**. Example: 1. HUAWEI Mate 60 Pro, 3.0.0.22(SP81xxxxxx) 2. Emulator, 3.0.0.22(SP39xxxxxx) 3. Information about the Flutter runtime environment. Example: - 1. `flutter docotr -v` + 1. `flutter doctor -v` 4. Flutter building or running instructions. Example: 1. `flutter build hap --debug` 2. `flutter run -d $DEVICE --debug` @@ -26,9 +26,9 @@ You can refer to FAQs related to the following aspects during OpenHarmony Flutte 1. Building or running logs. Example: 1. `flutter build hap --debug > build.log 2>&1` 2. `flutter run -d $DEVICE --debug > run.log 2>&1` - 2. **hilog** file. + 2. **hilog** file 1. Export the `hdc hilog > hilog.log 2>&1` file by using instructions. - 2. The `hdc` tool is stored in the **toolchains** directory of the HamonyOS SDK. + 2. The `hdc` tool is stored in the **toolchains** directory of the HarmonyOS SDK. 3. Log files recording crashes. 1. You can obtain the log file from DevEco Studio. Steps: **DevEco Studio** > **Log** > **FaultLog** > **app bundle name** > **cppcrash/jscrash** > **Time** > **Right-click to export the log files**. diff --git a/ohos/docs/08_FAQ/environment.md b/ohos/docs/08_FAQ/environment.md index 7ad8dfb3..c725c665 100644 --- a/ohos/docs/08_FAQ/environment.md +++ b/ohos/docs/08_FAQ/environment.md @@ -16,20 +16,17 @@ For details about how to set up the Flutter development environment, see https:/ ## Failure in Running flutter pub get in an Offline Environment Solution: - Add the **--offline** parameter. Complete instruction: `flutter pub get --offline`. ## Failure in Building an Application of the Release Version in the macOS Environment Error log: ```log -ProcessPackageException: ProcessException: Found candidates, but lacked sufficient permissions to execute "/Users/xxx/ohos/src/out/ohos_release_arm64/clang_arm4/dart". +ProcessPackageException: ProcessException: Found candidates, but lacked sufficient permissions to excute "/Users/xxx/ohos/src/out/ohos_release_arm64/clang_arm4/dart". Command: /Users/xxx/ohos/src/out/ohos_release_arm64/clang_arm4/dart ``` -Solution: - -Add the execution permission. +Solution:
Add the execution permission. ```sh chmod -R +x /Users/xxx/ohos/src/out/ohos_release_arm64/* @@ -46,9 +43,7 @@ xxx/flutter_flutter/bin/internal/update_dart_sdk.sh: line 156: return: can only curl: (3) Illegal characters found in URL ``` -Problem analysis: - -The newline character on Windows is inconsistent with that on Linux or macOS. +Problem analysis:
The newline character on Windows is inconsistent with that on Linux or macOS. Solution: @@ -88,21 +83,30 @@ strict_ssl=false Problem analysis: -- **FloatingActionButton** is not supported by the emulator. You need to comment out **FloatingActionButton** in **lib/main.dart** before running the application on the emulator. -- Reference: [Differences Between the Emulator and Real Device](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-emulator-specification-0000001839876358-V5). +- **FloatingActionButton** is not supported by the Emulator. You need to comment out **FloatingActionButton** in **lib/main.dart** before running the application on the Emulator. +- Reference:
[Differences Between the Emulator and Real Device](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-emulator-specification-0000001839876358-V5). ## [ios][release] GeneratedPluginRegistrant.m Module Not Found -Problem analysis: +Problem analysis:
A Flutter plugin is added to the **pubspec.yaml** file, but the **pod** reference related to the plugin does not exist in the **Podfile**. -A Flutter plugin is added to the **pubspec.yaml** file, but the **pod** reference related to the plugin does not exist in the **Podfile**. +Solution:
Run the instruction `rm ios/podfile && flutter clean && flutter run -d `. -Solution: +Reference:
[GeneratedPluginRegistrant.m Module not found](https://github.com/flutter/flutter/issues/43986) -Run the instruction `rm ios/podfile && flutter clean && flutter run -d `. +## [Windows] The flutter doctor -v Command Does Not Respond -Reference: +Symptom:
After the environment variables are configured, the system does not respond when the **flutter doctor -v** command is executed. -[GeneratedPluginRegistrant.m Module not found](https://github.com/flutter/flutter/issues/43986) +Cause:
The proxy may not be properly configured. - \ No newline at end of file +Solution: +- Configure **http_proxy**, **https_proxy**, and **no_proxy** in the system environment variables. +- To configure **http_proxy** and **https_proxy**, follow the procedure of the proxy configuration in DevEco Studio. +- To configure **no_proxy**, in addition to following the procedure of the proxy configuration in DevEco Studio, you need to add the following information to the environment variables on the local host: + - localhost + - ::1 + - 127.0.0.1 + +If the execution result contains Flutter and HarmonyOS, it indicates that the basic environment is correctly configured and both platforms are supported on Windows. +![](../media/08/error.png) \ No newline at end of file diff --git a/ohos/docs/08_FAQ/flutter-cppcrash-guideline.md b/ohos/docs/08_FAQ/flutter-cppcrash-guideline.md index a6f6a25e..ab1ff518 100644 --- a/ohos/docs/08_FAQ/flutter-cppcrash-guideline.md +++ b/ohos/docs/08_FAQ/flutter-cppcrash-guideline.md @@ -1,61 +1,53 @@ -# Parsing Flutter-Related CppCrash Stacks +# Analyzing the Cpp Crash Stack Related to Flutter -This document introduces how to parse crash stacks related to the `libflutter.so` library in the Flutter-for-OpenHarmony environment. +This section describes how to analyze the cpp crash stack related to `libflutter.so` of HarmonyOS Flutter. ## 1. Introduction -The `llvm-addr2line` tool can convert instruction addresses and executable images into file names, function names, and corresponding source code line numbers. It is typically used on `.so` libraries that contain symbol information. +llvm-addr2line is a tool that converts the address of a command and an executable image into a file name, a function name, and a specific line in the source code. It is generally applicable to the SO library with the **symbol** information. -## 2. Tool Location +## 2. Location -The `llvm-addr2line` tool is included in the SDK directory of both **DevEco Studio** and **Command Line Tools for OpenHarmony**. The paths are as follows: +llvm-addr2line is stored in the **sdk** directory of DevEco Studio and Command Line Tools for HarmonyOS. The corresponding paths are as follows: -- Windows: `sdk/default/openharmony/native/llvm/bin/llvm-addr2line.exe` -- Linux/Mac: `sdk/default/openharmony/native/llvm/bin/llvm-addr2line` +- Windows: sdk/default/openharmony/native/llvm/bin/llvm-addr2line.exe +- Linux/Mac: sdk/default/openharmony/native/llvm/bin/llvm-addr2line -You can add the `llvm-addr2line` directory to your `PATH` environment variable, for example: +You can configure the directory where llvm-addr2line is located to the environment variable **PATH**. For example: ```sh export PATH=/Applications/DevEco-Studio.app/Contents/sdk/default/openharmony/native/llvm/bin:$PATH ``` -## 3. Usage Command +## 3. Executing Commands ```sh llvm-addr2line -f -e so.unstripped/libflutter.so [addr1] [addr2] ``` -## 4. Obtaining a libflutter.so with Symbols +## 4. Obtaining the libflutter.so File Containing Symbol -### 4.1 Using Locally Compiled Engine Artifacts +### 4.1 Using the Locally Built Engine Products -- Debug version: - `src/out/ohos_debug_unopt_arm64/so.unstripped/libflutter.so` +- Debug version + - src/out/ohos_debug_unopt_arm64/so.unstripped/libflutter.so +- Release version + - src/out/ohos_release_arm64/so.unstripped/libflutter.so +- Profile version + - src/out/ohos_profile_arm64/so.unstripped/libflutter.so -- Release version: - `src/out/ohos_release_arm64/so.unstripped/libflutter.so` +### 4.2 Downloading from Cloud Products -- Profile version: - `src/out/ohos_profile_arm64/so.unstripped/libflutter.so` +- Find the commit ID of the `flutter_engine` version in the `flutter_flutter` version. + - Location: `flutter_flutter/bin/internal/engine.ohos.version` +- Download the zip file of **libflutter.so** of the corresponding version based on the commit ID 8ef94277f0029e61ff6a96f630d0f10b60330cd8. + - For debug version: https://flutter-ohos.obs.cn-south-1.myhuaweicloud.com/flutter_infra_release/flutter/8ef94277f0029e61ff6a96f630d0f10b60330cd8/ohos-arm64/symbols.zip + - For release version: https://flutter-ohos.obs.cn-south-1.myhuaweicloud.com/flutter_infra_release/flutter/8ef94277f0029e61ff6a96f630d0f10b60330cd8/ohos-arm64-release/symbols.zip + - For profile version: https://flutter-ohos.obs.cn-south-1.myhuaweicloud.com/flutter_infra_release/flutter/8ef94277f0029e61ff6a96f630d0f10b60330cd8/ohos-arm64-profile/symbols.zip -### 4.2 Downloading from Cloud Artifacts +## 5. Use Cases -- Find the `flutter_engine` commit ID used by the current `flutter_flutter` version. This can be found in the `flutter_flutter/bin/internal/engine.ohos.version` file. - -- For the commit ID `8ef94277f0029e61ff6a96f630d0f10b60330cd8`, you can download the corresponding version of `libflutter.so` as a zip file from: - - - Debug version: - [https://flutter-ohos.obs.cn-south-1.myhuaweicloud.com/flutter_infra_release/flutter/8ef94277f0029e61ff6a96f630d0f10b60330cd8/ohos-arm64/symbols.zip](https://flutter-ohos.obs.cn-south-1.myhuaweicloud.com/flutter_infra_release/flutter/8ef94277f0029e61ff6a96f630d0f10b60330cd8/ohos-arm64/symbols.zip) - - - Release version: - [https://flutter-ohos.obs.cn-south-1.myhuaweicloud.com/flutter_infra_release/flutter/8ef94277f0029e61ff6a96f630d0f10b60330cd8/ohos-arm64-release/symbols.zip](https://flutter-ohos.obs.cn-south-1.myhuaweicloud.com/flutter_infra_release/flutter/8ef94277f0029e61ff6a96f630d0f10b60330cd8/ohos-arm64-release/symbols.zip) - - - Profile version: - [https://flutter-ohos.obs.cn-south-1.myhuaweicloud.com/flutter_infra_release/flutter/8ef94277f0029e61ff6a96f630d0f10b60330cd8/ohos-arm64-profile/symbols.zip](https://flutter-ohos.obs.cn-south-1.myhuaweicloud.com/flutter_infra_release/flutter/8ef94277f0029e61ff6a96f630d0f10b60330cd8/ohos-arm64-profile/symbols.zip) - -## 5. Example Usage - -Below is an example of a partial crash log related to `libflutter.so`: +Some crash logs related to **libflutter.so**: ```log #00 pc 00000000001b5a34 /system/lib/ld-musl-aarch64.so.1(__timedwait_cp+188)(ef860a9c8bd64e964a4dd4ef838876e1) @@ -64,15 +56,15 @@ Below is an example of a partial crash log related to `libflutter.so`: #03 pc 00000000001f21f4 /data/storage/el1/bundle/libs/arm64/libflutter.so(85c51e03a4f191b946582701e79e1be4a0c83959) ``` -After obtaining the symbolized file `so.unstripped/libflutter.so`, you can convert the addresses in the crash stack to specific code lines. +Obtain the `so.unstripped/libflutter.so` file with the symbol to convert the address in the error stack to the specific line in the error code. -Run the command: +Run the following command: ```sh llvm-addr2line -f -e so.unstripped/libflutter.so 00000000001b5a34 00000000001b7a3c 000000000021d450 00000000001f21f4 ``` -The parsed result might look like this: +Result: ```log _ZNSt21_LIBCPP_ABI_NAMESPACE21__libcpp_condvar_waitB6v15004EP14pthread_cond_tP15pthread_mutex_t @@ -81,8 +73,8 @@ _ZN7flutter16PlatformViewOHOS13NotifyChangedERK7SkISize /home/hazy/work/engine_build/engine_daily/src/out/ohos_release_arm64/../../flutter/shell/platform/ohos/platform_view_ohos.cpp:192 ``` -## Additional Resources +## Others -- [Analyzing CppCrash](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/cppcrash-guidelines-V5) +- [Analyzing Cpp Crash](https://developer.huawei.com/consumer/en/doc/harmonyos-guides-V5/cppcrash-guidelines-V5) - [flutter_flutter](https://gitee.com/openharmony-sig/flutter_flutter) - [flutter_engine](https://gitee.com/openharmony-sig/flutter_engine) diff --git a/ohos/docs/08_FAQ/ohos-code.md b/ohos/docs/08_FAQ/ohos-code.md index 74155f36..6f729c73 100644 --- a/ohos/docs/08_FAQ/ohos-code.md +++ b/ohos/docs/08_FAQ/ohos-code.md @@ -9,3 +9,73 @@ bool isOhos() { return defaultTargetPlatform == TargetPlatform.ohos; } ``` + + +## Execution of flutter run, flutter build har and flutter attach Fail if Platform.isOhos Exists in the Code +Symptom: +**Platform.isOhos** exists in the Flutter code, as shown in the following: +``` +if (Platform.isAndroid || Platform.isOhos) { + print("test"); +} +``` +When the engine product of the server is depended without specifying the local engine product, the **flutter run**, **flutter build har** and **flutter attach** commands fail to be executed. +Error log: +![](../media/08/code1.png) + +Solution: +Change **Platform.isOhos** to **defaultTargetPlatform == TargetPlatform.ohos**. + + +## Native HarmonyOS Applications Fail to Obtain the Image Resources from Flutter +Question:
When a plugin is used, the object **binding: FlutterPluginBinding** is returned. A native HarmonyOS application cannot use **binding.getFlutterAssets().getAssetFilePathByName('xxxx')** of this object to obtain the image resources from the Flutter library while it can directly use **Image(this.img)** to obtain on the HarmonyOS platform. Is there any other way to obtain the resource? + +Answer:
**binding.getFlutterAssets().getAssetFilePathByName('xxxx')** is used to obtain the resource path. To obtain native image resources, see the code as follows: +![](../media/08/code2_EN.png) +``` +import { image } from '@kit.ImageKit'; +@Component +export struct DemoComponent { + @Prop params: Params + viewManager: DemoView = this.params.platformView as DemoView + image?: string + @State imageSource:image.ImageSource|null=null + + async aboutToAppear() { + let args: HashMap = this.viewManager.args as HashMap + this.image = args.get('src') as string + let rmg = DemoPluginAssetPlugin.binding.getApplicationContext(). resourceManager; + let rawfile = await rmg.getRawFileContent("flutter_assets/${this.image}"); + let buffer = rawfile.buffer.slice(0); + this.imageSource = image.createImageSource(buffer); + } + + build() { + Column(){ + if(this.imageSource){ + Image(this.imageSource.createPixelMapSync()) + } + } + } + + // aboutToAppear(): void { + // let args: HashMap = this.viewManager.args as HashMap + // this.image = args.get('src') as string + // } + + // build() { + // // Todo: critical point + // // Image(this.image) + // Image(DemoPluginAssetPlugin.binding.getFlutterAssets().getAssetFilePathByName (this.image)) + // // Image(DemoPluginAssetPlugin.binding.getFlutterAssets(). getAssetFilePathBySubpath(this.image)) + // } +} +``` +Question:
Why the **build** method is directly triggered when I add a breakpoint to **let rawfile = await rmg.getRawFileContent("flutter_assets/"+this.image );** and continue to execute the breakpoint? + +Answer:
**let rawfile = await rmg.getRawFileContent("flutter_assets/"+this.image );** is a time-consuming operation. During debugging, the remaining code of the current method is not executed until the time-consuming operation returns a result. The **build** method is for rendering only. + +Reference: +[demo](https://onebox.huawei.com/p/b3e5806b9ce3683c8c13b237ec319294) + +Execute files in **demo_plugin_asset\example\ohos** to display pages. Images are displayed in the Flutter image display page while no image is displayed in the native image display page. Related code is stored in **demo_plugin_asset\example\lib\main.dart** and **demo_plugin_asset\ohos\src\main\ets\components\plugin\DemoPluginAssetPlugin.ets**. diff --git a/ohos/docs/08_FAQ/ohos-hap.md b/ohos/docs/08_FAQ/ohos-hap.md new file mode 100644 index 00000000..38094bb4 --- /dev/null +++ b/ohos/docs/08_FAQ/ohos-hap.md @@ -0,0 +1,142 @@ +# ohos Application Compilation + +## Configure aliases to simplify compilation instructions during routine development. + +Configure aliases in the configuration file of the environment variables to simplify the instructions used for HarmonyOS Flutter. + +- For Windows, use `Git Bash` to execute common Linux instructions. (How to use: Right-click the blank area in the file manager and choose **Git Bash Here** from the shortcut menu.) +- For Linux, modify `~/.bash_profile`. +- For macOS, modify `~/.bash_profile` and add `source ~/.bash_profile` to `~/.zshrc`. + +```sh +# --The --local-engine parameter is optional and points to the self-compiled engine product. You are advised to use this parameter in the Linux or macOS environment. +export ENGINE_DIR=~/ohos/engine +export ENGINE_DEBUG=$ENGINE_DIR/src/out/ohos_debug_unopt_arm64 +export ENGINE_PROFILE=$ENGINE_DIR/src/out/ohos_profile_arm64 +export ENGINE_RELEASE=$ENGINE_DIR/src/out/ohos_release_arm64 + +alias fbuildD="flutter build hap --local-engine=$ENGINE_DEBUG --debug" +alias fbuildP="flutter build hap --local-engine=$ENGINE_PROFILE --profile" +alias fbuildR="flutter build hap --local-engine=$ENGINE_RELEASE --release" +alias frunD="flutter run -d $(hdc list targets) --local-engine=$ENGINE_DEBUG --debug" +alias frunP="flutter run -d $(hdc list targets) --local-engine=$ENGINE_PROFILE --profile" +alias frunR="flutter run -d $(hdc list targets) --local-engine=$ENGINE_RELEASE --release" +``` + +How to use: + +After the configuration, reopen the terminal window. Now you can use the aliases when compiling or running the project. + +```sh +flutter create hello --platforms ohos +cd hello +# Compile the debug version. +fbuildD +# Run the debug version. +frunD +``` + +## A Flutter application crashes in the release mode, but performs properly in the dev mode. + +Problem analysis: + +The **flutter.har** file of the debug version is used. + +Solution: + +Repackage the **flutter.har** file of the release version. + +## White screen occurs after the application is compiled and installed. + +Error log: + +```log +Reason:Signal:SIGSEGV(SEGV_MAPERR)@0x00000086e3272bf8 +LastFatalMessage:Thread:547846269584[FATAL:flutter/runtime/dart_vm_initializer.cc] Error while initializing the Dart VM: Wrong full snapshot version, expected '8af474944053df1f0a3be6e6165fa7cf' found 'adb4292f3ec25074ca70abcd2d5c7251' +``` + +Problem analysis: + +Engine products mismatch the running mode, causing a white screen. + +Solution: + +In the running or compilation instructions, make sure the engine products match the running mode. Reference: + +```sh +flutter run -d --debug +flutter run -d --release +flutter run -d --profile +``` + +## A Flutter plugin before reconstruction uses the reconstructed plugin library, causing an error in compiling applications. + +Error log: + +```log +Oops; flutter has exited unexpectedly: "type 'Null' is not a subtype of type 'List' in type cast". +``` + +Solution: +Update **flutter_flutter** to the latest version of master or dev.(45bd5e627e1f1e5f4d335f205781565f576acc60, 2024-05-10) + +## Dependency conflicts are reported during the running of flutter pub get. + +Error log: + +```log +Resolving dependencies... +Because flutter_cache_manager >=3.0.0-nullsafety.0 <3.3.2 depends on path_provider from hosted and flutter_cache_manager depends on path_provider from git, flutter_cache_manager >=3.0.0-nullsafety.0 <3.3.2 forbidden. +So bedause xxx depends on flutter_cache_manager 3.3.1, version solving failed. +pub get failed +... +exit code: 1 +``` + +Solution: + +Use `dependency_overrides` to eliminate dependency conflicts. + +```yaml +dependencies: + flutter: + sdk: flutter +dependency_overrides: + path_provider: + git: + url: https://gitee.com/openharmony-sig/flutter_packages.git + path: packages/path_provider/path_provider + path_provider_ohos: + git: + url: https://gitee.com/openharmony-sig/flutter_packages.git + path: packages/path_provider/path_provider_ohos +``` + +## The SDK license agreement is not accepted. + +Error log: + +```log +hvigor install success. +> hvigor ERROR: Cause: The SDK license agreement is not accepted. +``` + +Problem analysis:
The structure of the ohos project is in API version 11, but the SDK used is in API version 12. + +Solution:
Upgrade the ohos project structure to API version 12. + +Steps: +1. DevEco Studio -> Migrate Assistant -> 5.0.0 -> Migrate +2. DevEco Studio -> File -> Project Structure -> Compatible SDK -> 5.0.0(12) + +## The versionName field in the app.json file is reset when the flutter build hap -release command is used to compile the version. +Background: +Check the **versionName** field in the **app.json** file and execute the **flutter build hap -release** command to generate a package. + +Symptom:
The secondary field is reset to **1.0.0** again. + +Cause:
This version number is used by default in build. + +Solution:
Specify **versionName** and **versionCode** in build. + +Reference:
flutter build hap --build-name=4.0.3 --build-number=10000 diff --git a/ohos/docs/08_FAQ/ohos-run.md b/ohos/docs/08_FAQ/ohos-run.md index 892d61e6..72a4d662 100644 --- a/ohos/docs/08_FAQ/ohos-run.md +++ b/ohos/docs/08_FAQ/ohos-run.md @@ -1,12 +1,10 @@ -# ohos Program Running +# ohos Running -## Runtime Error Occurring at /data/storage/el1/bundle/entry/ets/modules.abc After Compiling OpenHarmony - -Phenomenon: A runtime error occurs after compiling Flutter on OpenHarmony. - -Error message: +## Runtime Error Occurs After a HarmonyOS Flutter Application Is Compiled +Symptom:
A runtime error occurs after an HarmonyOS Flutter application is compiled. +Error: ``` com.wit.appzoo_flutter_v2 is about to exit due to RuntimeError Error type:ReferenceError @@ -18,7 +16,6 @@ SourceMap is not initialized yet #01 pc 00000000005fd128 /system/lib64/platformsdk/libark_jsruntime.so(5144aa99644b9dba57555adfb9e0ede6) #02 pc 00000000002ac540 /system/lib64/platformsdk/libark_jsruntime.so(5144aa99644b9dba57555adfb9e0ede6) ``` - -Possible causes: -The file /data/storage/el1/bundle/entry/ets/modules.abc may fail to run properly due to an SDK and image mismatch. The root cause is that the SDK tools and the image version are not aligned. It is recommended to use a matching SDK and mobile image version. Please provide the current mobile version and IDE version screenshots. -If the versions match, please provide the complete logs. +Possible causes: +**/data/storage/el1/bundle/entry/ets/modules.abc** may not run properly due to SDK and image version mismatch. In this case, you are advised to use the SDK that matches the mobile phone image version. Provide the current mobile phone version and DevEco Studio version to us so that we can help you fix this issue. +If the versions are matched, provide the complete logs. diff --git a/ohos/docs/media/05/image-4-401_EN.png b/ohos/docs/media/05/image-4-401_EN.png new file mode 100644 index 0000000000000000000000000000000000000000..28ea5999dd41d0c762a4737b955896461b57b77e GIT binary patch literal 181773 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 UajexV=7n@n9o@557emXGbMOxB2bb7`m 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

yQ{ZX9l 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 Date: Tue, 21 Jan 2025 16:54:34 +0800 Subject: [PATCH 2/3] =?UTF-8?q?HarmonyOS=E6=94=B9=E4=B8=BAOpenHarmony?= =?UTF-8?q?=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: SimpleLove520 <1960997571@qq.com> --- ... openharmony-flutter-environment-setup.md} | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) rename ohos/docs/03_environment/{harmonyos-flutter-environment-setup.md => openharmony-flutter-environment-setup.md} (88%) diff --git a/ohos/docs/03_environment/harmonyos-flutter-environment-setup.md b/ohos/docs/03_environment/openharmony-flutter-environment-setup.md similarity index 88% rename from ohos/docs/03_environment/harmonyos-flutter-environment-setup.md rename to ohos/docs/03_environment/openharmony-flutter-environment-setup.md index aec0ae68..16de9ecb 100644 --- a/ohos/docs/03_environment/harmonyos-flutter-environment-setup.md +++ b/ohos/docs/03_environment/openharmony-flutter-environment-setup.md @@ -1,11 +1,11 @@ -# HarmonyOS Flutter Environment Setup +# OpenHarmony Flutter Environment Setup ## Environment Preparation ### 1. Downloading and Installing the Latest DevEco Studio Development Suite and Its Dependencies #### 1.1 Official Download URL -Official download address of the HarmonyOS development suite: https://developer.huawei.com/consumer/cn/download/ +Official download address of the OpenHarmony development suite: https://developer.huawei.com/consumer/cn/download/ ``` Note: (1) The development suite is supported in Linux, macOS, and Windows systems. @@ -21,10 +21,10 @@ Official download address of the HarmonyOS development suite: https://developer. ![](../media/03_1/img_17_EN.png) -##### (2) Download an Emulator in DevEco Studio if no real HarmonyOS device is available. +##### (2) Download an Emulator in DevEco Studio if no real OpenHarmony device is available. For details about how to download and install the Emulator, see section 2.2 "Install an Emulator." -##### (3) Download HarmonyOS Flutter. +##### (3) Download OpenHarmony Flutter. Project URL: https://gitee.com/openharmony-sig/flutter_flutter Use a code editor to download the repository to your local PC and specify the dev or master branch. The dev branch is continuously updated and has more features than the master branch. @@ -41,7 +41,7 @@ For details about how to download and install the Emulator, see section 2.2 "Ins ![](../media/03_1/img_4_EN.png) #### 1.3 Preinstalled Environment Dependencies -* The HarmonyOS SDK requires the Java environment. You can download JDK 17 from the [Oracle website](https://www.oracle.com/java/technologies/downloads/#java17) or OpenJDK website and set the environment. +* The OpenHarmony SDK requires the Java environment. You can download JDK 17 from the [Oracle website](https://www.oracle.com/java/technologies/downloads/#java17) or OpenJDK website and set the environment. * Execute the following instruction to check the JDK installation result: ```sh java -version @@ -51,7 +51,7 @@ java -version #### 2.1 Decompress the component suite package and install the DevEco Studio. -![](../media/03_1/img_01_EN.png) +![](../media/03_1/img_01.png) #### 2.2 Install an Emulator. ![](../media/03_1/img_18.png) @@ -84,13 +84,13 @@ export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn # flutter_flutter/bin directory pulled from Flutter pub export PATH=/Users/admin/ohos/flutter_flutter/bin:$PATH -# HamonyOS SDK +# OpenHarmony SDK export TOOL_HOME=/Applications/DevEco-Studio.app/Contents # macOS environment export DEVECO_SDK_HOME=$TOOL_HOME/sdk # command-line-tools/sdk export PATH=$TOOL_HOME/tools/ohpm/bin:$PATH # command-line-tools/ohpm/bin export PATH=$TOOL_HOME/tools/hvigor/bin:$PATH # command-line-tools/hvigor/bin export PATH=$TOOL_HOME/tools/node/bin:$PATH # command-line-tools/tool/node/bin -export HDC_HOME=$TOOL_HOME/sdk/HarmonyOS-NEXT-DB1/openharmony/toolchains # (Optional) hdc instruction +export HDC_HOME=$TOOL_HOME/sdk/default/openharmony/toolchains # (Optional) hdc instruction # Optional configuration items (required when using the Android Studio or Visual Studio Code to debug. The JDK version is 17.0.12) JAVA_HOME=/Users/admin/Documents/JDK/jdk-17.0.12.jdk/Contents/Home @@ -98,7 +98,7 @@ PATH=$JAVA_HOME/bin:$PATH:. export JAVA_HOME export PATH -# Optional configuration item (to prevent the creation of subsequent Flutter projects from being affected by the mismatched environment variable of the Gitee download URL for HarmonyOS Flutter) +# Optional configuration item (to prevent the creation of subsequent Flutter projects from being affected by the mismatched environment variable of the Gitee download URL for OpenHarmony Flutter) export FLUTTER_GIT_URL=https://gitee.com/openharmony-sig/flutter_flutter.git # Optional configuration item (required only when there is no node environment in the tool file under the command-line-tools directory) @@ -127,7 +127,7 @@ Emulator running effect ![](../media/03_1/m3_EN.png) -## HarmonyOS Flutter Integration and Debugging +## OpenHarmony Flutter Integration and Debugging ### 1. Checking the Environment Run `flutter doctor -v` to check whether the environment variable configuration is correct. The check results for both Flutter and OpenHarmony should be **ok**. If there are any prompts indicating missing environment variable configuration, follow the prompts to configure the environment. @@ -149,7 +149,7 @@ flutter create flutter build hap --debug ``` -### 3. Running the Flutter Project on a Real HarmonyOS Device +### 3. Running the Flutter Project on a Real OpenHarmony Device #### 3.1 Sign the project. Before running the project on a real device, you need to sign the project. Steps are as follows. ![](../media/03_1/sign01.png) @@ -158,12 +158,12 @@ Before running the project on a real device, you need to sign the project. Steps #### 3.2 Run the project on a real device. * Execute the `flutter devices` instruction to discover a real device and obtain the device ID. -Method 1: Go to the project directory, compile the HAP in the specified build mode, and install it on the HarmonyOS device. +Method 1: Go to the project directory, compile the HAP in the specified build mode, and install it on the OpenHarmony device. ```sh flutter run --debug -d ``` -Method 2: Go to the project root directory, compile the HAP, and install it on the HarmonyOS device. +Method 2: Go to the project root directory, compile the HAP, and install it on the OpenHarmony device. ```sh flutter build hap --debug hdc -t install @@ -178,7 +178,7 @@ Method 3: Use DevEco Studio to set your phone as the real device and start runni ![](../media/03_1/open_ohos.png) -#### 4.2 Start the HarmonyOS Emulator in DevEco Studio. +#### 4.2 Start the OpenHarmony Emulator in DevEco Studio. ![](../media/03_1/m1_EN.png) @@ -186,7 +186,7 @@ Method 3: Use DevEco Studio to set your phone as the real device and start runni ![](../media/03_1/m3_EN.png) -Switch to the HarmonyOS Emulator. +Switch to the OpenHarmony Emulator. ![](../media/03_1/img00_EN.png) @@ -194,7 +194,7 @@ Switch to the HarmonyOS Emulator. ![](../media/03_1/img9_EN.png) -![](../media/03_1/img10_EN.png) +![](../media/03_1/img10.png) ### 5. FAQs on Emulator Running -- Gitee From c1c44893158ce7357d60a41d80ae41c5169edaac Mon Sep 17 00:00:00 2001 From: SimpleLove520 <1960997571@qq.com> Date: Tue, 21 Jan 2025 17:47:27 +0800 Subject: [PATCH 3/3] =?UTF-8?q?HarmonyOS=E6=94=B9=E4=B8=BAOpenHarmony?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: SimpleLove520 <1960997571@qq.com> --- ohos/docs/04_development/README_EN.md | 6 +++--- ...el-for-communication-between-flutter-and-openharmony.md} | 4 ++-- .../04_development/using-a-module-in-hybrid-development.md | 4 ++-- ohos/docs/05_performance/README_EN.md | 2 +- ohos/docs/05_performance/performance-delimitation.md | 2 +- ohos/docs/08_FAQ/README_EN.md | 6 +++--- ohos/docs/08_FAQ/environment.md | 2 +- ohos/docs/08_FAQ/flutter-cppcrash-guideline.md | 4 ++-- ohos/docs/08_FAQ/ohos-code.md | 4 ++-- ohos/docs/08_FAQ/ohos-hap.md | 2 +- ohos/docs/08_FAQ/ohos-run.md | 4 ++-- 11 files changed, 20 insertions(+), 20 deletions(-) rename ohos/docs/04_development/{using-a-flutter-channel-for-communication-between-flutter-and-harmonyos.md => using-a-flutter-channel-for-communication-between-flutter-and-openharmony.md} (97%) diff --git a/ohos/docs/04_development/README_EN.md b/ohos/docs/04_development/README_EN.md index 5e2a4b11..38554453 100644 --- a/ohos/docs/04_development/README_EN.md +++ b/ohos/docs/04_development/README_EN.md @@ -1,13 +1,13 @@ # Feature Development -## Adding a Flutter Page to Your HarmonyOS Application +## Adding a Flutter Page to Your OpenHarmony Application 1. [Using FlutterPage](./using-flutterpage.md) 2. [Using FlutterEntry in Hybrid Development](./using-flutterEntry-in-hybrid-development.md) -## Using a Flutter Channel in Your HarmonyOS Application +## Using a Flutter Channel in Your OpenHarmony Application -1. [Using a Flutter Channel for Communication Between Flutter and HarmonyOS](./using-a-flutter-channel-for-communication-between-flutter-and-harmonyos.md) +1. [Using a Flutter Channel for Communication Between Flutter and OpenHarmony](./using-a-flutter-channel-for-communication-between-flutter-and-openharmony.md) ## Hybrid Rendering with Native Code diff --git a/ohos/docs/04_development/using-a-flutter-channel-for-communication-between-flutter-and-harmonyos.md b/ohos/docs/04_development/using-a-flutter-channel-for-communication-between-flutter-and-openharmony.md similarity index 97% rename from ohos/docs/04_development/using-a-flutter-channel-for-communication-between-flutter-and-harmonyos.md rename to ohos/docs/04_development/using-a-flutter-channel-for-communication-between-flutter-and-openharmony.md index 562c81d1..c9e2f527 100644 --- a/ohos/docs/04_development/using-a-flutter-channel-for-communication-between-flutter-and-harmonyos.md +++ b/ohos/docs/04_development/using-a-flutter-channel-for-communication-between-flutter-and-openharmony.md @@ -1,6 +1,6 @@ -# Using a Flutter Channel for Communication Between Flutter and HarmonyOS +# Using a Flutter Channel for Communication Between Flutter and OpenHarmony -This topic describes how to use a Flutter channel in the HarmonyOS Flutter project. +This topic describes how to use a Flutter channel in the OpenHarmony Flutter project. The following are the key implementation codes. For details about the complete demo, see [channel_demo](https://gitee.com/openharmony-sig/flutter_samples/tree/master/ohos/channel_demo). diff --git a/ohos/docs/04_development/using-a-module-in-hybrid-development.md b/ohos/docs/04_development/using-a-module-in-hybrid-development.md index 3006501c..c74d6bbc 100644 --- a/ohos/docs/04_development/using-a-module-in-hybrid-development.md +++ b/ohos/docs/04_development/using-a-module-in-hybrid-development.md @@ -2,7 +2,7 @@ This topic describes how to reference a flutter_module project in an ohos project. -- ohos project: a native HarmonyOS project that can be created by DevEco Studio. +- ohos project: a native OpenHarmony project that can be created by DevEco Studio. - flutter_module project: a Flutter submodule project that can be created by executing Flutter instructions. ## Environment Setup @@ -10,7 +10,7 @@ This topic describes how to reference a flutter_module project in an ohos projec - Use [flutter_flutter](https://gitee.com/openharmony-sig/flutter_flutter) to configure environment variables. - Use the engine products generated by [flutter_engine](https://gitee.com/openharmony-sig/flutter_engine). -Use DevEco Studio to create a native HarmonyOS project named **MyApplication**. +Use DevEco Studio to create a native OpenHarmony project named **MyApplication**. ## flutter_module Project Operations diff --git a/ohos/docs/05_performance/README_EN.md b/ohos/docs/05_performance/README_EN.md index fff57ee7..6a66e156 100644 --- a/ohos/docs/05_performance/README_EN.md +++ b/ohos/docs/05_performance/README_EN.md @@ -1,6 +1,6 @@ # Performance Optimization -For a HarmonyOS Flutter project, you can use DevTools to debug the Dart code. For details, see [Flutter and Dart DevTools](https://docs.flutter.dev/tools/devtools). +For a OpenHarmony Flutter project, you can use DevTools to debug the Dart code. For details, see [Flutter and Dart DevTools](https://docs.flutter.dev/tools/devtools). [Performance Analysis and Issue Demarcation](./performance-delimitation.md) diff --git a/ohos/docs/05_performance/performance-delimitation.md b/ohos/docs/05_performance/performance-delimitation.md index b70caec9..bcab39c2 100644 --- a/ohos/docs/05_performance/performance-delimitation.md +++ b/ohos/docs/05_performance/performance-delimitation.md @@ -2,7 +2,7 @@ ## Preparations -- HarmonyOS NEXT +- OpenHarmony NEXT - Flutter page running in the foreground - Analysis Tools [DevEco Studio Profiler](https://developer.huawei.com/consumer/cn/download/) diff --git a/ohos/docs/08_FAQ/README_EN.md b/ohos/docs/08_FAQ/README_EN.md index f1d25dd0..51e8680d 100644 --- a/ohos/docs/08_FAQ/README_EN.md +++ b/ohos/docs/08_FAQ/README_EN.md @@ -1,6 +1,6 @@ # FAQs -You can refer to FAQs related to the following aspects during HarmonyOS Flutter development. +You can refer to FAQs related to the following aspects during OpenHarmony Flutter development. 1. [Environment](./environment.md) 2. [ohos Engine Product Compilation](./ohos_engine.md) @@ -10,11 +10,11 @@ You can refer to FAQs related to the following aspects during HarmonyOS Flutter 6. [Feature Development](../04_development/README_EN.md) 7. [Analyzing the Cpp Crash Stack Related to Flutter](./flutter_cppcrash_guideline.md) -## Key Information Template for Feedback on Questions Related to HarmonyOS Flutter Application +## Key Information Template for Feedback on Questions Related to OpenHarmony Flutter Application 1. IDE version number. Example: 1. DevEco Studio 5.0.3.300 -2. Device name and system version number of the HarmonyOS device or the Emulator. You can check them in **Settings** > **About phone**. Example: +2. Device name and system version number of the OpenHarmony device or the Emulator. You can check them in **Settings** > **About phone**. Example: 1. HUAWEI Mate 60 Pro, 3.0.0.22(SP81xxxxxx) 2. Emulator, 3.0.0.22(SP39xxxxxx) 3. Information about the Flutter runtime environment. Example: diff --git a/ohos/docs/08_FAQ/environment.md b/ohos/docs/08_FAQ/environment.md index c725c665..94b6ecd5 100644 --- a/ohos/docs/08_FAQ/environment.md +++ b/ohos/docs/08_FAQ/environment.md @@ -108,5 +108,5 @@ Solution: - ::1 - 127.0.0.1 -If the execution result contains Flutter and HarmonyOS, it indicates that the basic environment is correctly configured and both platforms are supported on Windows. +If the execution result contains Flutter and OpenHarmony, it indicates that the basic environment is correctly configured and both platforms are supported on Windows. ![](../media/08/error.png) \ No newline at end of file diff --git a/ohos/docs/08_FAQ/flutter-cppcrash-guideline.md b/ohos/docs/08_FAQ/flutter-cppcrash-guideline.md index ab1ff518..92ec0ee1 100644 --- a/ohos/docs/08_FAQ/flutter-cppcrash-guideline.md +++ b/ohos/docs/08_FAQ/flutter-cppcrash-guideline.md @@ -1,6 +1,6 @@ # Analyzing the Cpp Crash Stack Related to Flutter -This section describes how to analyze the cpp crash stack related to `libflutter.so` of HarmonyOS Flutter. +This section describes how to analyze the cpp crash stack related to `libflutter.so` of OpenHarmony Flutter. ## 1. Introduction @@ -8,7 +8,7 @@ llvm-addr2line is a tool that converts the address of a command and an executabl ## 2. Location -llvm-addr2line is stored in the **sdk** directory of DevEco Studio and Command Line Tools for HarmonyOS. The corresponding paths are as follows: +llvm-addr2line is stored in the **sdk** directory of DevEco Studio and Command Line Tools for OpenHarmony. The corresponding paths are as follows: - Windows: sdk/default/openharmony/native/llvm/bin/llvm-addr2line.exe - Linux/Mac: sdk/default/openharmony/native/llvm/bin/llvm-addr2line diff --git a/ohos/docs/08_FAQ/ohos-code.md b/ohos/docs/08_FAQ/ohos-code.md index 6f729c73..629ab1f8 100644 --- a/ohos/docs/08_FAQ/ohos-code.md +++ b/ohos/docs/08_FAQ/ohos-code.md @@ -27,8 +27,8 @@ Solution: Change **Platform.isOhos** to **defaultTargetPlatform == TargetPlatform.ohos**. -## Native HarmonyOS Applications Fail to Obtain the Image Resources from Flutter -Question:
When a plugin is used, the object **binding: FlutterPluginBinding** is returned. A native HarmonyOS application cannot use **binding.getFlutterAssets().getAssetFilePathByName('xxxx')** of this object to obtain the image resources from the Flutter library while it can directly use **Image(this.img)** to obtain on the HarmonyOS platform. Is there any other way to obtain the resource? +## Native OpenHarmony Applications Fail to Obtain the Image Resources from Flutter +Question:
When a plugin is used, the object **binding: FlutterPluginBinding** is returned. A native OpenHarmony application cannot use **binding.getFlutterAssets().getAssetFilePathByName('xxxx')** of this object to obtain the image resources from the Flutter library while it can directly use **Image(this.img)** to obtain on the OpenHarmony platform. Is there any other way to obtain the resource? Answer:
**binding.getFlutterAssets().getAssetFilePathByName('xxxx')** is used to obtain the resource path. To obtain native image resources, see the code as follows: ![](../media/08/code2_EN.png) diff --git a/ohos/docs/08_FAQ/ohos-hap.md b/ohos/docs/08_FAQ/ohos-hap.md index 38094bb4..678d1e06 100644 --- a/ohos/docs/08_FAQ/ohos-hap.md +++ b/ohos/docs/08_FAQ/ohos-hap.md @@ -2,7 +2,7 @@ ## Configure aliases to simplify compilation instructions during routine development. -Configure aliases in the configuration file of the environment variables to simplify the instructions used for HarmonyOS Flutter. +Configure aliases in the configuration file of the environment variables to simplify the instructions used for OpenHarmony Flutter. - For Windows, use `Git Bash` to execute common Linux instructions. (How to use: Right-click the blank area in the file manager and choose **Git Bash Here** from the shortcut menu.) - For Linux, modify `~/.bash_profile`. diff --git a/ohos/docs/08_FAQ/ohos-run.md b/ohos/docs/08_FAQ/ohos-run.md index 72a4d662..f031d04c 100644 --- a/ohos/docs/08_FAQ/ohos-run.md +++ b/ohos/docs/08_FAQ/ohos-run.md @@ -1,8 +1,8 @@ # ohos Running -## Runtime Error Occurs After a HarmonyOS Flutter Application Is Compiled -Symptom:
A runtime error occurs after an HarmonyOS Flutter application is compiled. +## Runtime Error Occurs After a OpenHarmony Flutter Application Is Compiled +Symptom:
A runtime error occurs after an OpenHarmony Flutter application is compiled. Error: ``` -- Gitee