+#include "native_type.h"
#ifdef __cplusplus
extern "C" {
#endif
@@ -61,9 +61,9 @@ typedef enum {
ARKUI_UIINPUTEVENT_TYPE_AXIS = 2,
/** Mouse event. */
ARKUI_UIINPUTEVENT_TYPE_MOUSE = 3,
- /**
+ /**
* @brief key event.
- *
+ *
* @since 20
*/
ARKUI_UIINPUTEVENT_TYPE_KEY = 4,
@@ -429,7 +429,7 @@ float OH_ArkUI_PointerEvent_GetXByIndex(const ArkUI_UIInputEvent* event, uint32_
*
* @param event Indicates the pointer to the UI input event.
* @return Returns the Y coordinate relative to the upper left corner of the current component;
- * returns 0 if any parameter error occurs.
+ * returns 0.0f if any parameter error occurs.
* @since 12
*/
float OH_ArkUI_PointerEvent_GetY(const ArkUI_UIInputEvent* event);
@@ -453,7 +453,7 @@ float OH_ArkUI_PointerEvent_GetYByIndex(const ArkUI_UIInputEvent* event, uint32_
*
* @param event Indicates the pointer to the UI input event.
* @return Returns the X coordinate relative to the upper left corner of the current application window;
- * returns 0 if any parameter error occurs.
+ * returns 0.0f if any parameter error occurs.
* @since 12
*/
float OH_ArkUI_PointerEvent_GetWindowX(const ArkUI_UIInputEvent* event);
@@ -477,7 +477,7 @@ float OH_ArkUI_PointerEvent_GetWindowXByIndex(const ArkUI_UIInputEvent* event, u
*
* @param event Indicates the pointer to the UI input event.
* @return Returns the Y coordinate relative to the upper left corner of the current application window;
- * returns 0 if any parameter error occurs.
+ * returns 0.0f if any parameter error occurs.
* @since 12
*/
float OH_ArkUI_PointerEvent_GetWindowY(const ArkUI_UIInputEvent* event);
@@ -501,7 +501,7 @@ float OH_ArkUI_PointerEvent_GetWindowYByIndex(const ArkUI_UIInputEvent* event, u
*
* @param event Indicates the pointer to the UI input event.
* @return Returns the X coordinate relative to the upper left corner of the current screen;
- * returns 0 if any parameter error occurs.
+ * returns 0.0f if any parameter error occurs.
* @since 12
*/
float OH_ArkUI_PointerEvent_GetDisplayX(const ArkUI_UIInputEvent* event);
@@ -525,7 +525,7 @@ float OH_ArkUI_PointerEvent_GetDisplayXByIndex(const ArkUI_UIInputEvent* event,
*
* @param event Indicates the pointer to the UI input event.
* @return Returns the Y coordinate relative to the upper left corner of the current screen;
- * returns 0 if any parameter error occurs.
+ * returns 0.0f if any parameter error occurs.
* @since 12
*/
float OH_ArkUI_PointerEvent_GetDisplayY(const ArkUI_UIInputEvent* event);
@@ -666,8 +666,9 @@ float OH_ArkUI_PointerEvent_GetTouchAreaHeight(const ArkUI_UIInputEvent* event,
* @brief Checks whether an event is triggered by the user's left or right hand.
* This API is only effective on some touch devices.
*
- * @note The value is not available immediately upon press. Until the system infers the result, this API will return
- * NONE. Do not rely on the return value for critical functionality.
+ * @note This value cannot be obtained in real time when pressed. Before the
+ * system completes result inference, it will return NONE by default. Therefore,
+ * please do not over-rely on the results returned by this interface.
*
* @param event Pointer to the current UI input event.
* @param hand Whether the touch point is from the left or right hand.
@@ -682,8 +683,9 @@ int32_t OH_ArkUI_PointerEvent_GetInteractionHand(const ArkUI_UIInputEvent *event
* @brief Checks whether an event is triggered by the user's left or right hand.
* This API is only effective on some touch devices.
*
- * @note The value is not available immediately upon press. Until the system infers the result,
- * this API will return NONE. Do not rely on the return value for critical functionality.
+ * @note This value cannot be obtained in real time when pressed. Before the
+ * system completes result inference, it will return NONE by default. Therefore,
+ * please do not over-rely on the results returned by this interface.
*
* @param event Pointer to the current UI input event.
* @param pointerIndex Index of the target touch point in the multi-touch data list.
@@ -1273,7 +1275,7 @@ int32_t OH_ArkUI_PointerEvent_CreateClonedEvent(const ArkUI_UIInputEvent* event,
* @return Returns the result code.
* Returns {@link ARKUI_ERROR_CODE_NO_ERROR} if the operation is successful.
* Returns {@link ARKUI_ERROR_CODE_PARAM_INVALID} if a parameter error occurs.
- * Returns {@link ARKUI_ERROR_CODE_NON_CLONED_POINTER_EVENT} if the input event pointer is not a
+ * Returns {@link ARKUI_ERROR_CODE_NOT_CLONED_POINTER_EVENT} if the input event pointer is not a
* cloned event pointer.
* @since 15
*/
@@ -1288,7 +1290,7 @@ int32_t OH_ArkUI_PointerEvent_DestroyClonedEvent(const ArkUI_UIInputEvent* event
* @return Returns the result code.
* Returns {@link ARKUI_ERROR_CODE_NO_ERROR} if the operation is successful.
* Returns {@link ARKUI_ERROR_CODE_PARAM_INVALID} if a parameter error occurs.
- * Returns {@link ARKUI_ERROR_CODE_NON_CLONED_POINTER_EVENT} if the input event pointer is not a
+ * Returns {@link ARKUI_ERROR_CODE_NOT_CLONED_POINTER_EVENT} if the input event pointer is not a
* cloned event pointer.
* @since 15
*/
@@ -1305,7 +1307,7 @@ int32_t OH_ArkUI_PointerEvent_SetClonedEventLocalPosition(const ArkUI_UIInputEve
* @return Returns the result code.
* Returns {@link ARKUI_ERROR_CODE_NO_ERROR} if the operation is successful.
* Returns {@link ARKUI_ERROR_CODE_PARAM_INVALID} if a parameter error occurs.
- * Returns {@link ARKUI_ERROR_CODE_NON_CLONED_POINTER_EVENT} if the input event pointer is not a
+ * Returns {@link ARKUI_ERROR_CODE_NOT_CLONED_POINTER_EVENT} if the input event pointer is not a
* cloned event pointer.
* @since 15
*/
@@ -1320,7 +1322,7 @@ int32_t OH_ArkUI_PointerEvent_SetClonedEventLocalPositionByIndex(
* @return Returns the result code.
* Returns {@link ARKUI_ERROR_CODE_NO_ERROR} if the operation is successful.
* Returns {@link ARKUI_ERROR_CODE_PARAM_INVALID} if a parameter error occurs.
- * Returns {@link ARKUI_ERROR_CODE_NON_CLONED_POINTER_EVENT} if the input event pointer is not a
+ * Returns {@link ARKUI_ERROR_CODE_NOT_CLONED_POINTER_EVENT} if the input event pointer is not a
* cloned event pointer.
* @since 15
*/
@@ -1334,7 +1336,7 @@ int32_t OH_ArkUI_PointerEvent_SetClonedEventActionType(const ArkUI_UIInputEvent*
* @return Returns the result code.
* Returns {@link ARKUI_ERROR_CODE_NO_ERROR} if the operation is successful.
* Returns {@link ARKUI_ERROR_CODE_PARAM_INVALID} if a parameter error occurs.
- * Returns {@link ARKUI_ERROR_CODE_NON_CLONED_POINTER_EVENT} if the input event pointer is not a
+ * Returns {@link ARKUI_ERROR_CODE_NOT_CLONED_POINTER_EVENT} if the input event pointer is not a
* cloned event pointer.
* @since 15
*/
@@ -1349,7 +1351,7 @@ int32_t OH_ArkUI_PointerEvent_SetClonedEventChangedFingerId(const ArkUI_UIInputE
* @return Returns the result code.
* Returns {@link ARKUI_ERROR_CODE_NO_ERROR} if the operation is successful.
* Returns {@link ARKUI_ERROR_CODE_PARAM_INVALID} if a parameter error occurs.
- * Returns {@link ARKUI_ERROR_CODE_NON_CLONED_POINTER_EVENT} if the input event pointer is not a
+ * Returns {@link ARKUI_ERROR_CODE_NOT_CLONED_POINTER_EVENT} if the input event pointer is not a
* cloned event pointer.
* @since 15
*/
@@ -1364,7 +1366,7 @@ int32_t OH_ArkUI_PointerEvent_SetClonedEventFingerIdByIndex(
* @return Returns the result code.
* Returns {@link ARKUI_ERROR_CODE_NO_ERROR} if the operation is successful.
* Returns {@link ARKUI_ERROR_CODE_PARAM_INVALID} if a parameter error occurs.
- * Returns {@link ARKUI_ERROR_CODE_NON_CLONED_POINTER_EVENT} if the input event pointer is not a
+ * Returns {@link ARKUI_ERROR_CODE_NOT_CLONED_POINTER_EVENT} if the input event pointer is not a
* cloned event pointer.
* Returns {@link ARKUI_ERROR_CODE_POST_CLONED_COMPONENT_STATUS_ABNORMAL}
* if the component status abnormal.
diff --git a/build-tools/clean_ndk_ani.py b/build-tools/clean_ndk_ani.py
new file mode 100755
index 0000000000000000000000000000000000000000..f28647ffbda489e351be6ad74889f9b08668d9a9
--- /dev/null
+++ b/build-tools/clean_ndk_ani.py
@@ -0,0 +1,128 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# Copyright (c) 2025 Huawei Device Co., Ltd.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import os
+import re
+import argparse
+import shutil
+import json
+import stat
+from typing import List
+
+# ani header file list
+_ANI_HEADER_LISTS = [
+]
+
+# Precompiled regular expression
+_HEADER_PATTERN = re.compile(
+ r'^\s*#\s*include\s+["<](.*/)?({})[">]'.format(
+ '|'.join(map(re.escape, _ANI_HEADER_LISTS))
+ )
+)
+
+
+def process_header_file(file_path):
+ """processing single header file"""
+ modified = False
+ try:
+ with open(file_path, 'r+', encoding='utf-8') as f:
+ content = f.read()
+ # Use a regular expression to process all rows at once
+ new_content = []
+ for line in content.splitlines():
+ if not _HEADER_PATTERN.match(line):
+ new_content.append(line)
+ else:
+ modified = True
+
+ if modified:
+ f.seek(0)
+ f.write('\n'.join(new_content))
+ f.truncate()
+ except Exception as e:
+ print(f"process file {file_path} failed: {str(e)}")
+ return modified
+
+
+def clean_ndk_ani_headers(ndk_header_path):
+ if not _ANI_HEADER_LISTS:
+ print("Warning: ani header file list")
+ return
+
+ # all files to be processed
+ file_paths = []
+ for root, _, files in os.walk(ndk_header_path):
+ for file in files:
+ if not file.endswith('.h'):
+ continue
+
+ file_path = os.path.join(root, file)
+ if file in _ANI_HEADER_LISTS:
+ try:
+ os.remove(file_path)
+ print(f"Deleted ani header file: {file_path}")
+ except OSError as e:
+ print(f"Error deleting {file_path}: {str(e)}")
+ else:
+ file_paths.append(file_path)
+
+ # Bulk processing file include
+ for file_path in file_paths:
+ process_header_file(file_path)
+
+
+# Clear the ani header file in the systemCapability configuration json file
+def clean_json_systemCapability_headers(capability_header_path):
+ try:
+ with open(capability_header_path, 'r') as f:
+ systemCapabilitys = json.load(f)
+ except Exception as e:
+ print(f"Error reading JSON file: {str(e)}")
+ return
+
+ # Traverse all levels of items
+ for _systemCapability in systemCapabilitys:
+ # filtering ani header file
+ systemCapabilitys[_systemCapability] = [item for item in systemCapabilitys[_systemCapability]
+ if os.path.basename(item) not in _ANI_HEADER_LISTS]
+
+ # Saving the modified JSON
+ try:
+ fd = os.open(capability_header_path, os.O_WRONLY | os.O_TRUNC | os.O_CREAT,
+ stat.S_IRUSR | stat.S_IWUSR)
+ with os.fdopen(fd, 'w') as f:
+ json.dump(systemCapabilitys, f, indent=2)
+ print("JSON file updated successfully")
+ except Exception as e:
+ print(f"Error saving JSON file: {str(e)}")
+
+
+def main():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--ndk-header-path', help='ndk header path', required=True)
+ parser.add_argument('--system-capability-header-config', required=True)
+ args = parser.parse_args()
+
+ if not os.path.isdir(args.ndk_header_path):
+ print(f"Error:path {args.ndk_header_path} is not exist!")
+ return
+
+ clean_ndk_ani_headers(args.ndk_header_path)
+ clean_json_systemCapability_headers(args.system_capability_header_config)
+ print("Ani Header file cleanup complete!")
+
+
+if __name__ == '__main__':
+ main()
diff --git a/build-tools/clean_ndk_ani.pydeps b/build-tools/clean_ndk_ani.pydeps
new file mode 100644
index 0000000000000000000000000000000000000000..9ec5fde3fccfab67dd5391b753fb08513622e8a3
--- /dev/null
+++ b/build-tools/clean_ndk_ani.pydeps
@@ -0,0 +1,10 @@
+# Generated by running:
+# build/print_python_deps.py --root build/ohos/ndk --output interface/sdk_c/build-tools/clean_ndk_ani.pydeps interface/sdk_c/build-tools/clean_ndk_ani.py
+../../../build/gn_helpers.py
+../../../build/scripts/__init__.py
+../../../build/scripts/interface_mgr.py
+../../../build/scripts/util/__init__.py
+../../../build/scripts/util/build_utils.py
+../../../build/scripts/util/md5_check.py
+../../../build/scripts/util/pycache.py
+clean_ndk_ani.py
diff --git a/distributeddatamgr/relational_store/include/data_asset.h b/distributeddatamgr/relational_store/include/data_asset.h
index f791cbc9e815b1358fd4bb3b4054f1576b808521..85c4fbdf6ba1a0195c34f30f2a15c36c5465c1fc 100644
--- a/distributeddatamgr/relational_store/include/data_asset.h
+++ b/distributeddatamgr/relational_store/include/data_asset.h
@@ -326,7 +326,9 @@ Data_Asset *OH_Data_Asset_CreateOne(void);
*
* @param asset Represents a pointer to an {@link Data_Asset} instance.
* @return Returns the status code of the execution. Successful execution returns RDB_OK,
- * while failure returns a specific error code. Specific error codes can be referenced {@link OH_Rdb_ErrCode}.
+ * while failure returns a specific error code.
+ * {@link RDB_OK} - success.
+ * Specific error codes can be referenced {@link OH_Rdb_ErrCode}.
* @see Data_Asset, OH_Rdb_ErrCode.
* @since 11
*/
@@ -349,7 +351,9 @@ Data_Asset **OH_Data_Asset_CreateMultiple(uint32_t count);
* @param assets Represents a pointer to an {@link Data_Asset} instance.
* @param count Represents the count of {@link Data_Asset} to destroy.
* @return Returns the status code of the execution. Successful execution returns RDB_OK,
- * while failure returns a specific error code. Specific error codes can be referenced {@link OH_Rdb_ErrCode}.
+ * while failure returns a specific error code.
+ * {@link RDB_OK} - success.
+ * Specific error codes can be referenced {@link OH_Rdb_ErrCode}.
* @see Data_Asset, OH_Rdb_ErrCode.
* @since 11
*/
diff --git a/hiviewdfx/hiappevent/include/hiappevent/hiappevent_event.h b/hiviewdfx/hiappevent/include/hiappevent/hiappevent_event.h
index 83c319e6c04d7a37f80d14c221cc12c789b8ce80..06f186ed5ad34d88e25247429d918dc164c83242 100644
--- a/hiviewdfx/hiappevent/include/hiappevent/hiappevent_event.h
+++ b/hiviewdfx/hiappevent/include/hiappevent/hiappevent_event.h
@@ -168,14 +168,6 @@ extern "C" {
*/
#define EVENT_APP_KILLED "APP_KILLED"
-/**
- * @brief audio jank frame event.
- *
- * @since 21
- * @version 1.0
- */
-#define EVENT_AUDIO_JANK_FRAME "AUDIO_JANK_FRAME"
-
/**
* @brief OS domain.
*
diff --git a/multimedia/av_codec/native_avcapability.h b/multimedia/av_codec/native_avcapability.h
index 1d0af06b2b47a70e57f70e5f8440b67e56dd7d56..3c8649510a60c693bee868cff1098b08c40814e9 100644
--- a/multimedia/av_codec/native_avcapability.h
+++ b/multimedia/av_codec/native_avcapability.h
@@ -84,7 +84,7 @@ typedef enum OH_AVCapabilityFeature {
VIDEO_ENCODER_TEMPORAL_SCALABILITY = 0,
/** Feature for codec supports long-term reference. It is only used in video encoder. */
VIDEO_ENCODER_LONG_TERM_REFERENCE = 1,
- /** Feature for codec supports low latency. It is used in video encoder and video decoder. */
+ /** Feature for codec supports low latency. It is only used in video decoder. */
VIDEO_LOW_LATENCY = 2,
/** Feature for codec supports B-frame encoding. It is only used in video encoder.
* @since 20
diff --git a/multimedia/av_codec/native_avcodec_base.h b/multimedia/av_codec/native_avcodec_base.h
index 7745ac2101f9066330942d3bd141a608a2ec70e2..0042b76b4a2da27c3f8f01b44f2254bfe09f2a95 100644
--- a/multimedia/av_codec/native_avcodec_base.h
+++ b/multimedia/av_codec/native_avcodec_base.h
@@ -944,8 +944,8 @@ extern const char *OH_MD_KEY_VIDEO_PIC_WIDTH;
extern const char *OH_MD_KEY_VIDEO_PIC_HEIGHT;
/**
* @brief Key to enable the low latency mode, value type is int32_t (0 or 1):1 is enabled, 0 otherwise.
- * If enabled, the video encoder or video decoder doesn't hold input and output data more than required by
- * the codec standards. This is an optional key that applies only to video encoder or video decoder.
+ * If enabled, the video decoder doesn't hold input and output data more than required by
+ * the codec standards. This is an optional key that applies only to video decoder.
* It is used in configure.
*
* @syscap SystemCapability.Multimedia.Media.CodecBase
diff --git a/multimedia/player_framework/lowpower_audio_sink.h b/multimedia/player_framework/lowpower_audio_sink.h
index 07f24a2999867ed323462567a676035cdcf3d874..226f1f17a292d73a00748310e0e39cfe76eb7c09 100644
--- a/multimedia/player_framework/lowpower_audio_sink.h
+++ b/multimedia/player_framework/lowpower_audio_sink.h
@@ -258,20 +258,6 @@ OH_AVErrCode OH_LowPowerAudioSink_SetPlaybackSpeed(OH_LowPowerAudioSink* sink, c
*/
OH_AVErrCode OH_LowPowerAudioSink_ReturnSamples(OH_LowPowerAudioSink* sink, OH_AVSamplesBuffer* samples);
-/**
- * @brief Set the loudness gain for lowpower audio sink.
- *
- * @param {OH_LowPowerAudioSink*} sink Pointer to an OH_LowPowerAudioSink instance.
- * @param {float} loudnessGain Loudness gain to set which changes from -90.0 to 24.0, expressing in dB.
- * The default loudness gain is 0.0dB.
- * @return Returns AV_ERR_OK if the gain is set successfully;
- * otherwise, returns a specific error code as defined in {@link OH_AVErrCode}
- * {@link AV_ERR_INVALID_VAL} the sink is nullptr or loudnessGain is out of valid range.
- * {@link AV_ERR_SERVICE_DIED} media service is died.
- * @since 20
- */
-OH_AVErrCode OH_LowPowerAudioSink_SetLoudnessGain(OH_LowPowerAudioSink* sink, float loudnessGain);
-
/**
* @brief Regsister callback instance for lowpower audio sink.
*
diff --git a/multimedia/player_framework/lowpower_avsink/liblowpower_avsink.ndk.json b/multimedia/player_framework/lowpower_avsink/liblowpower_avsink.ndk.json
index 7e53713e491574d739dd5d83c218d7ebb6cf50de..079f642c5fbba140774dd4334ba23d0c1600210b 100644
--- a/multimedia/player_framework/lowpower_avsink/liblowpower_avsink.ndk.json
+++ b/multimedia/player_framework/lowpower_avsink/liblowpower_avsink.ndk.json
@@ -67,10 +67,6 @@
"first_introduced": "20",
"name": "OH_LowPowerAudioSink_ReturnSamples"
},
- {
- "first_introduced": "20",
- "name": "OH_LowPowerAudioSink_SetLoudnessGain"
- },
{
"first_introduced": "20",
"name": "OH_LowPowerAudioSink_RegisterCallback"
diff --git a/web/webview/interfaces/native/libohweb.ndk.json b/web/webview/interfaces/native/libohweb.ndk.json
index c86a02925aa59078751e1186c6315c1a960ed980..1cdb08fd6a841b158b8b48b1388fde3371b32d21 100644
--- a/web/webview/interfaces/native/libohweb.ndk.json
+++ b/web/webview/interfaces/native/libohweb.ndk.json
@@ -366,5 +366,13 @@
{
"first_introduced": "20",
"name": "OH_ArkWebResourceHandler_DidFailWithErrorV2"
+ },
+ {
+ "first_introduced": "20",
+ "name": "OH_NativeArkWeb_SetActiveWebEngineVersion"
+ },
+ {
+ "first_introduced": "20",
+ "name": "OH_NativeArkWeb_GetActiveWebEngineVersion"
}
]
diff --git a/web/webview/interfaces/native/native_interface_arkweb.h b/web/webview/interfaces/native/native_interface_arkweb.h
index 10332371c25cfc6edba29c677bbef88757d8712b..122d0c50bb4363bbcec2ba7b86b7f04fb4b1a7d3 100644
--- a/web/webview/interfaces/native/native_interface_arkweb.h
+++ b/web/webview/interfaces/native/native_interface_arkweb.h
@@ -93,6 +93,34 @@ typedef struct {
int32_t loadingTime;
} ArkWeb_BlanklessInfo;
+/**
+ * @brief ArkWeb Engine Version.
+ *
+ * ArkWeb Dual Web Engine Versioning Convention:
+ * See [ArkWeb Dual Web Engine Versioning Convention] for switching between Legacy and Evergreen Web Engine.
+ *
+ * @since 20
+ */
+typedef enum {
+ /**
+ * the system default ArkWeb engine.
+ * @since 20
+ */
+ SYSTEM_DEFAULT = 0,
+
+ /**
+ * ArkWeb M114 version.
+ * @since 20
+ */
+ ARKWEB_M114 = 1,
+
+ /**
+ * ArkWeb M132 version.
+ * @since 20
+ */
+ ARKWEB_M132 = 2,
+} ArkWebEngineVersion;
+
/**
* @brief Loads a piece of code and execute JS code in the context of the currently displayed page.
*
@@ -315,6 +343,30 @@ ArkWeb_ErrorCode OH_ArkWebCookieManager_SaveCookieSync();
*/
void OH_ArkWebCookieManager_SaveCookieAsync(OH_ArkWeb_OnCookieSaveCallback callback);
+/**
+ * Set active ArkWeb engine version.
+ * If the system does not support the specified version, it will not take effect.
+ *
+ * This is a global static API that must be called before initializeWebEngine, and it will have no effect if any
+ * Web components are loaded.
+ *
+ * Legacy Web Engine Compatibility Note:
+ *
When using legacy ArkWeb Engine, some ArkWeb newly created API will not take effect,
+ * see [Compatible with Legacy Web Engine in release note] for compatibility guidelines.
+ *
+ *
+ * @param { ArkWebEngineVersion } webEngineVersion - the ArkWebEngineVersion
+ * @since 20
+ */
+void OH_NativeArkWeb_SetActiveWebEngineVersion(ArkWebEngineVersion webEngineVersion);
+
+/**
+ * Get currently active ArkWeb engine version.
+ * @return { ArkWebEngineVersion } Active ArkWeb Engine version as defined by ArkWebEngineVersion
+ * @since 20
+ */
+ArkWebEngineVersion OH_NativeArkWeb_GetActiveWebEngineVersion();
+
#ifdef __cplusplus
};
#endif