Pull Request已成功合入, 合并人@openharmony_ci
(感谢 haozhihang 的贡献)start build


感谢提交 Pull Requests!
Thanks for submitting a pull request.


首次触发
门禁构建开始,包含静态检查、代码编译【ohos_react_native_master编译】,预计在60分钟内完成,门禁结果会同步发送到注册邮箱。您可以通过如下链接跟踪门禁进展:http://dcp.openharmony.cn/workbench/cicd/detail/696934ca64650f998b1eb006/runlist


提交次数已达到或超过3次,为了保证上库效率和减少构建资源浪费,请点击链接观看学习视频,谢谢!https://dcp.openharmony.cn/workbench/video/videoDisplay


【AI-Review】【致命】【基础代码问题】【返回值缺失】
● 问题: Lambda 函数在多个分支中缺少返回值。当 count <= 0 或 args[0] 不是字符串时,函数直接退出而没有返回 jsi::Value;当 dlsym 返回 nullptr 时,仅打印日志但也未返回值。函数签名明确要求返回 jsi::Value,缺少返回值会导致未定义行为。
● 影响: 可能导致应用崩溃或不可预期的行为。根据 C++ 标准,非 void 函数退出时未返回值属于未定义行为。
● 建议: 在所有分支中添加明确的返回值,例如:
if (OH_GetSdkApiVersion() < API_LEVEL_23) { return jsi::Value::undefined(); }
if (count == 0 || !args[0].isString()) { return jsi::Value::undefined(); }
// dlsym 失败时
if (notifyPageChanged != nullptr) { ... } else { LOG(ERROR) << "..."; return jsi::Value::undefined(); }


【AI-Review】【严重】【基础代码问题】【多线程问题】
● 问题: 静态成员变量 s_windowId 和 s_bundleCodeDir 缺少线程安全保护。RegisterPageNameMessageHandler::handleArkTSMessage 可能在 ArkTS 线程中写入这些变量,而 RegisterPageName::sendPageName lambda 可能在 JS 线程中读取它们。两个线程并发访问同一静态变量,没有任何同步机制(如 mutex、atomic 或锁),存在数据竞争风险。
● 影响: 数据竞争会导致读取到不一致的值,可能传递错误的 windowId 或 bundleCodeDir 给系统 API,甚至导致应用崩溃。
● 建议: 使用以下方案之一:
- 使用 std::mutex 保护静态变量:
static std::mutex s_dataMutex;
static double s_windowId = 0;
static std::string s_bundleCodeDir;
// 写入时加锁
void RegisterPageNameMessageHandler::handleArkTSMessage(...) {
std::lock_guardstd::mutex lock(s_dataMutex);
// 写入操作
}
// 读取时加锁
auto windowId = & {
std::lock_guardstd::mutex lock(s_dataMutex);
return s_windowId;
}(); - 或使用 std::atomic
和线程安全的容器。


Description
Add a page level DPI control interface to control page DPI changes based on page routing paths.
Changes
Add page level DPI control interface.
Test Plan
Checklist