diff --git a/AbilityKit/ability_runtime/application_context.h b/AbilityKit/ability_runtime/application_context.h
index 1ba53503d9f1b6ace7fece3f3d6e004221835186..4ac78aa5a4406453e0b7bcf9de16219814d2b047 100644
--- a/AbilityKit/ability_runtime/application_context.h
+++ b/AbilityKit/ability_runtime/application_context.h
@@ -92,6 +92,125 @@ AbilityRuntime_ErrorCode OH_AbilityRuntime_ApplicationContextGetAreaMode(Ability
AbilityRuntime_ErrorCode OH_AbilityRuntime_ApplicationContextGetBundleName(
char* buffer, int32_t bufferSize, int32_t* writeLength);
+/**
+ * @brief Obtain the temp directory of the application.
+ *
+ * @param buffer A pointer to a buffer that receives the temp directory of the application.
+ * @param bufferSize The length of the buffer.
+ * @param writeLength The string length actually written to the buffer,
+ * when returning {@link ABILITY_RUNTIME_ERROR_CODE_NO_ERROR}.
+ * @return The error code.
+ * {@link ABILITY_RUNTIME_ERROR_CODE_NO_ERROR} if the operation is successful.
+ * {@link ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID} if the buffer or writeLength is null,
+ * or the buffer size is less than the minimum buffer size.
+ * {@link ABILITY_RUNTIME_ERROR_CODE_CONTEXT_NOT_EXIST} if the application context does not exist.
+ * @since 16
+ */
+AbilityRuntime_ErrorCode OH_AbilityRuntime_ApplicationContextGetTempDir(
+ char* buffer, const int32_t bufferSize, int32_t* writeLength);
+
+/**
+ * @brief Obtain the files directory of the application.
+ *
+ * @param buffer A pointer to a buffer that receives the files directory of the application.
+ * @param bufferSize The length of the buffer.
+ * @param writeLength The string length actually written to the buffer,
+ * when returning {@link ABILITY_RUNTIME_ERROR_CODE_NO_ERROR}.
+ * @return The error code.
+ * {@link ABILITY_RUNTIME_ERROR_CODE_NO_ERROR} if the operation is successful.
+ * {@link ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID} if the buffer or writeLength is null,
+ * or the buffer size is less than the minimum buffer size.
+ * {@link ABILITY_RUNTIME_ERROR_CODE_CONTEXT_NOT_EXIST} if the application context does not exist.
+ * @since 16
+ */
+AbilityRuntime_ErrorCode OH_AbilityRuntime_ApplicationContextGetFilesDir(
+ char* buffer, const int32_t bufferSize, int32_t* writeLength);
+
+/**
+ * @brief Obtain the database directory of the application.
+ *
+ * @param buffer A pointer to a buffer that receives the database directory of the application.
+ * @param bufferSize The length of the buffer.
+ * @param writeLength The string length actually written to the buffer,
+ * when returning {@link ABILITY_RUNTIME_ERROR_CODE_NO_ERROR}.
+ * @return The error code.
+ * {@link ABILITY_RUNTIME_ERROR_CODE_NO_ERROR} if the operation is successful.
+ * {@link ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID} if the buffer or writeLength is null,
+ * or the buffer size is less than the minimum buffer size.
+ * {@link ABILITY_RUNTIME_ERROR_CODE_CONTEXT_NOT_EXIST} if the application context does not exist.
+ * @since 16
+ */
+AbilityRuntime_ErrorCode OH_AbilityRuntime_ApplicationContextGetDatabaseDir(
+ char* buffer, const int32_t bufferSize, int32_t* writeLength);
+
+/**
+ * @brief Obtain the preferences directory of the application.
+ *
+ * @param buffer A pointer to a buffer that receives the preferences directory of the application.
+ * @param bufferSize The length of the buffer.
+ * @param writeLength The string length actually written to the buffer,
+ * when returning {@link ABILITY_RUNTIME_ERROR_CODE_NO_ERROR}.
+ * @return The error code.
+ * {@link ABILITY_RUNTIME_ERROR_CODE_NO_ERROR} if the operation is successful.
+ * {@link ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID} if the buffer or writeLength is null,
+ * or the buffer size is less than the minimum buffer size.
+ * {@link ABILITY_RUNTIME_ERROR_CODE_CONTEXT_NOT_EXIST} if the application context does not exist.
+ * @since 16
+ */
+AbilityRuntime_ErrorCode OH_AbilityRuntime_ApplicationContextGetPreferencesDir(
+ char* buffer, const int32_t bufferSize, int32_t* writeLength);
+
+/**
+ * @brief Obtain the bundle code directory of the application.
+ *
+ * @param buffer A pointer to a buffer that receives the bundle code directory of the application.
+ * @param bufferSize The length of the buffer.
+ * @param writeLength The string length actually written to the buffer,
+ * when returning {@link ABILITY_RUNTIME_ERROR_CODE_NO_ERROR}.
+ * @return The error code.
+ * {@link ABILITY_RUNTIME_ERROR_CODE_NO_ERROR} if the operation is successful.
+ * {@link ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID} if the buffer or writeLength is null,
+ * or the buffer size is less than the minimum buffer size.
+ * {@link ABILITY_RUNTIME_ERROR_CODE_CONTEXT_NOT_EXIST} if the application context does not exist.
+ * @since 16
+ */
+AbilityRuntime_ErrorCode OH_AbilityRuntime_ApplicationContextGetBundleCodeDir(
+ char* buffer, const int32_t bufferSize, int32_t* writeLength);
+
+/**
+ * @brief Obtain the distributed files directory of the application.
+ *
+ * @param buffer A pointer to a buffer that receives the distributed files directory of the application.
+ * @param bufferSize The length of the buffer.
+ * @param writeLength The string length actually written to the buffer,
+ * when returning {@link ABILITY_RUNTIME_ERROR_CODE_NO_ERROR}.
+ * @return The error code.
+ * {@link ABILITY_RUNTIME_ERROR_CODE_NO_ERROR} if the operation is successful.
+ * {@link ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID} if the buffer or writeLength is null,
+ * or the buffer size is less than the minimum buffer size.
+ * {@link ABILITY_RUNTIME_ERROR_CODE_CONTEXT_NOT_EXIST} if the application context does not exist.
+ * @since 16
+ */
+AbilityRuntime_ErrorCode OH_AbilityRuntime_ApplicationContextGetDistributedFilesDir(
+ char* buffer, const int32_t bufferSize, int32_t* writeLength);
+
+/**
+ * @brief Obtain the cloud file directory of the application.
+ *
+ * @param buffer A pointer to a buffer that receives the cloud file directory of the application.
+ * @param bufferSize The length of the buffer.
+ * @param writeLength The string length actually written to the buffer,
+ * when returning {@link ABILITY_RUNTIME_ERROR_CODE_NO_ERROR}.
+ * @return The error code.
+ * {@link ABILITY_RUNTIME_ERROR_CODE_NO_ERROR} if the operation is successful.
+ * {@link ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID} if the buffer or writeLength is null,
+ * or the buffer size is less than the minimum buffer size.
+ * {@link ABILITY_RUNTIME_ERROR_CODE_CONTEXT_NOT_EXIST} if the application context does not exist.
+ * @since 16
+ */
+AbilityRuntime_ErrorCode OH_AbilityRuntime_ApplicationContextGetCloudFileDir(
+ char* buffer, const int32_t bufferSize, int32_t* writeLength);
+
#ifdef __cplusplus
} // extern "C"
#endif
diff --git a/AbilityKit/ability_runtime/libability_runtime.ndk.json b/AbilityKit/ability_runtime/libability_runtime.ndk.json
index 239f84f6151aab58f4d1fd3177870b80af428f59..fcde96f6cbfed4f407a3adadbf2afffd700dc4ca 100644
--- a/AbilityKit/ability_runtime/libability_runtime.ndk.json
+++ b/AbilityKit/ability_runtime/libability_runtime.ndk.json
@@ -10,5 +10,33 @@
{
"first_introduced": "13",
"name": "OH_AbilityRuntime_ApplicationContextGetBundleName"
+ },
+ {
+ "first_introduced": "16",
+ "name": "OH_AbilityRuntime_ApplicationContextGetTempDir"
+ },
+ {
+ "first_introduced": "16",
+ "name": "OH_AbilityRuntime_ApplicationContextGetFilesDir"
+ },
+ {
+ "first_introduced": "16",
+ "name": "OH_AbilityRuntime_ApplicationContextGetDatabaseDir"
+ },
+ {
+ "first_introduced": "16",
+ "name": "OH_AbilityRuntime_ApplicationContextGetPreferencesDir"
+ },
+ {
+ "first_introduced": "16",
+ "name": "OH_AbilityRuntime_ApplicationContextGetBundleCodeDir"
+ },
+ {
+ "first_introduced": "16",
+ "name": "OH_AbilityRuntime_ApplicationContextGetDistributedFilesDir"
+ },
+ {
+ "first_introduced": "16",
+ "name": "OH_AbilityRuntime_ApplicationContextGetCloudFileDir"
}
]
\ No newline at end of file
diff --git a/arkui/ace_engine/native/native_node.h b/arkui/ace_engine/native/native_node.h
index 957b003fdc55dff9fcd7953cf845637ce200dd85..009a2207013a4821e29ab5a0f404c0ed1ffd4f6b 100644
--- a/arkui/ace_engine/native/native_node.h
+++ b/arkui/ace_engine/native/native_node.h
@@ -3444,6 +3444,37 @@ typedef enum {
*
*/
NODE_XCOMPONENT_SURFACE_SIZE,
+ /**
+ * @brief Defines the rectangle information of surface created by the component.
+ * This attribute can be set and obtained as required through APIs.
+ *
+ * Format of the {@link ArkUI_AttributeItem} parameter for setting the attribute:\n
+ * .value[0].i32: The horizontal offset of the surface relative to XComponent, in pixels. \n
+ * .value[1].i32: The vertical offset of the surface relative to XComponent, in pixels. \n
+ * .value[2].i32: The width of the surface created by XComponent, in pixels. \n
+ * .value[3].i32: The height of the surface created by XComponent, in pixels. \n
+ * \n
+ * Format of the return value {@link ArkUI_AttributeItem}:\n
+ * Format of the {@link ArkUI_AttributeItem} parameter for setting the attribute:\n
+ * .value[0].i32: The horizontal offset of the surface relative to XComponent, in pixels. \n
+ * .value[1].i32: The vertical offset of the surface relative to XComponent, in pixels. \n
+ * .value[2].i32: The width of the surface created by XComponent, in pixels. \n
+ * .value[3].i32: The height of the surface created by XComponent, in pixels. \n
+ * @since 16
+ */
+ NODE_XCOMPONENT_SURFACE_RECT,
+ /**
+ * @brief Defines whether to enable the AI analyzer for the component.
+ * This attribute can be set and obtained as required through APIs.
+ *
+ * Format of the {@link ArkUI_AttributeItem} parameter for setting the attribute:\n
+ * value[0].i32: The parameter type is 1 or 0.
+ * \n
+ * Format of the return value {@link ArkUI_AttributeItem}:\n
+ * value[0].i32: The parameter type is 1 or 0.
+ * @since 16
+ */
+ NODE_XCOMPONENT_ENABLE_ANALYZER,
/**
* @brief Defines whether to display the lunar calendar in the date picker.
@@ -4351,6 +4382,29 @@ typedef enum {
* itself. Optional. The value 1 means to enable the scroll effect, and 0 means the opposite. \n
*
*/
+ /**
+ * @brief Defines the effect used at the edges of the component when the boundary of the scrollable content is
+ * reached. This attribute can be set, reset, and obtained as required through APIs.
+ *
+ * Format of the {@link ArkUI_AttributeItem} parameter for setting the attribute:\n
+ * .value[0].i32: effect used at the edges of the component when the boundary of the scrollable content is reached.
+ * The parameter type is {@link ArkUI_EdgeEffect}. The default value is ARKUI_EDGE_EFFECT_NONE.\n
+ * .value[1]?.i32: whether to enable the scroll effect when the component content size is smaller than the component
+ * itself. Optional. The value 1 means to enable the scroll effect, and 0 means the opposite.
+ * The default value is 1.\n
+ * .value[2]?.i32: direction in which the effect takes effect. The parameter type is {@link ArkUI_EffectEdge}.
+ * The default value is ARKUI_EFFECT_EDGE_START | ARKUI_EFFECT_EDGE_END. \n
+ * \n
+ * Format of the return value {@link ArkUI_AttributeItem}:\n
+ * .value[0].i32: edge for which the effect takes effect when the boundary of the scrollable content is reached.
+ * The parameter type is {@link ArkUI_EffectEdge}. \n
+ * .value[1].i32: whether to enable the scroll effect when the component content size is smaller than the component
+ * itself. The value 1 means to enable the scroll effect, and 0 means the opposite.\n
+ * .value[2].i32: edge for which the effect takes effect when the boundary of the scrollable content is reached.
+ * The parameter type is {@link ArkUI_EffectEdge}. \n
+ *
+ * @since 16
+ */
NODE_SCROLL_EDGE_EFFECT,
/**
* @brief Defines whether to support scroll gestures. When this attribute is set to false, scrolling by
diff --git a/arkui/ace_engine/native/native_type.h b/arkui/ace_engine/native/native_type.h
index ca825e62b3ed462bf02dd2886573ec9a3f8bd720..fd11e1ef346610561067e21eabe55d2624711afe 100644
--- a/arkui/ace_engine/native/native_type.h
+++ b/arkui/ace_engine/native/native_type.h
@@ -586,6 +586,18 @@ typedef enum {
ARKUI_EDGE_EFFECT_NONE,
} ArkUI_EdgeEffect;
+/**
+ * @brief Enumerates the edges for which the effect takes effect when the boundary of the scrollable content is reached.
+ *
+ * @since 16
+ */
+typedef enum {
+ /** Start edge. */
+ ARKUI_EFFECT_EDGE_START = 1,
+ /** End edge. */
+ ARKUI_EFFECT_EDGE_END = 2,
+} ArkUI_EffectEdge;
+
/**
* @brief Enumerates the scroll directions for the component.
*
diff --git a/third_party/musl/ndk_script/BUILD.gn b/third_party/musl/ndk_script/BUILD.gn
index a71e33565ab354dd49bfb34bdfa2de31e336bbe8..c62a9b6325a0f86f30afdcd618fb080a2d3bd589 100644
--- a/third_party/musl/ndk_script/BUILD.gn
+++ b/third_party/musl/ndk_script/BUILD.gn
@@ -106,6 +106,7 @@ if (host_os == "mac") {
"${windows_x86_64_toolchain_dir}/llvm/include",
"${windows_x86_64_toolchain_dir}/llvm/lib",
"${windows_x86_64_toolchain_dir}/llvm/libexec",
+ "${windows_x86_64_toolchain_dir}/llvm/python3",
"${windows_x86_64_toolchain_dir}/llvm/script",
"${windows_x86_64_toolchain_dir}/llvm/share",
]