| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
!3870 merge feat/ndk-getlocaldevicename-c-abi into master feat: add C ABI OH_DeviceManager_GetLocalDeviceNameC Created-by: dyylll Commit-by: daiyunlong Merged-by: openharmony_ci Description: ### 相关的 Issue #2560 ### 原因(目的、解决的问题等) 现有 OH_DeviceManager_GetLocalDeviceName(char **localDeviceName, unsigned int &len) 使用 C++ 引用作为参数,导致: - 纯 C 代码无法调用该 NDK 接口 - 无法通过函数指针、std::function 等 ABI-stable 方式使用 - NDK 接口应提供稳定的 C ABI,当前签名破坏了该约束 ### 描述(做了什么,变更了什么) 1. 新增纯 C ABI 接口 OH_DeviceManager_GetLocalDeviceNameC(char **localDeviceName, unsigned int *len),使用指针代替 C++ 引用 2. 让旧接口 OH_DeviceManager_GetLocalDeviceName 标记 @deprecated since 20 / @useinstead OH_DeviceManager_GetLocalDeviceNameC,并委托到新接口 3. 在头文件 doxygen 注释中明确废弃语义;新接口 @since 26.0.0 4. 新增 9 个 L0 单元用例: - 旧接口的 auto / decltype / std::function / &func 可调用性回归 - 新 C ABI 接口的 nullptr 入参、正常调用、auto/std::function 可调用性 涉及文件: - interfaces/kits/ndk/include/oh_device_manager.h - interfaces/kits/ndk/src/oh_device_manager.cpp - test/unittest/UTTest_oh_device_manager.cpp ### 验证结果(新增、改动、可能影响的功能) - 新接口签名稳定,可被 C、函数指针、std::function 调用 - 旧接口行为完全保持,仅内部实现委托到新接口 - 单元测试覆盖正常路径与 localDeviceName == nullptr、*localDeviceName != nullptr、len == nullptr 异常入参 - L0 单测全部通过 ### 安全及低级编码自检 - [x] 【变量初始化】指针变量显式初始化为空 - [x] 【内存和资源】进行字符串操作时考虑字符串结束符(new char[*len + 1] + strcpy_s) - [x] 【内存和资源】异常分支释放已分配内存并置空,防止泄漏与 UAF - [x] 【指针】指针解引用前判空(localDeviceName、*localDeviceName、len 三重判空) - [x] 【安全隐私】使用 strcpy_s 安全函数 - [x] 【入参及权限校验】函数入口对所有入参先校验后使用 ### L0 新增用例自检结果 - [x] 是,有新增 L0 用例,且完成自检 ### 是否已执行 mini system 用例 - [ ] 已验证 - [x] 不涉及(仅 NDK 头文件与单元测试变更,无 system 行为影响) See merge request: openharmony/distributedhardware_device_manager!3870 | 16 天前 | |
!3870 merge feat/ndk-getlocaldevicename-c-abi into master feat: add C ABI OH_DeviceManager_GetLocalDeviceNameC Created-by: dyylll Commit-by: daiyunlong Merged-by: openharmony_ci Description: ### 相关的 Issue #2560 ### 原因(目的、解决的问题等) 现有 OH_DeviceManager_GetLocalDeviceName(char **localDeviceName, unsigned int &len) 使用 C++ 引用作为参数,导致: - 纯 C 代码无法调用该 NDK 接口 - 无法通过函数指针、std::function 等 ABI-stable 方式使用 - NDK 接口应提供稳定的 C ABI,当前签名破坏了该约束 ### 描述(做了什么,变更了什么) 1. 新增纯 C ABI 接口 OH_DeviceManager_GetLocalDeviceNameC(char **localDeviceName, unsigned int *len),使用指针代替 C++ 引用 2. 让旧接口 OH_DeviceManager_GetLocalDeviceName 标记 @deprecated since 20 / @useinstead OH_DeviceManager_GetLocalDeviceNameC,并委托到新接口 3. 在头文件 doxygen 注释中明确废弃语义;新接口 @since 26.0.0 4. 新增 9 个 L0 单元用例: - 旧接口的 auto / decltype / std::function / &func 可调用性回归 - 新 C ABI 接口的 nullptr 入参、正常调用、auto/std::function 可调用性 涉及文件: - interfaces/kits/ndk/include/oh_device_manager.h - interfaces/kits/ndk/src/oh_device_manager.cpp - test/unittest/UTTest_oh_device_manager.cpp ### 验证结果(新增、改动、可能影响的功能) - 新接口签名稳定,可被 C、函数指针、std::function 调用 - 旧接口行为完全保持,仅内部实现委托到新接口 - 单元测试覆盖正常路径与 localDeviceName == nullptr、*localDeviceName != nullptr、len == nullptr 异常入参 - L0 单测全部通过 ### 安全及低级编码自检 - [x] 【变量初始化】指针变量显式初始化为空 - [x] 【内存和资源】进行字符串操作时考虑字符串结束符(new char[*len + 1] + strcpy_s) - [x] 【内存和资源】异常分支释放已分配内存并置空,防止泄漏与 UAF - [x] 【指针】指针解引用前判空(localDeviceName、*localDeviceName、len 三重判空) - [x] 【安全隐私】使用 strcpy_s 安全函数 - [x] 【入参及权限校验】函数入口对所有入参先校验后使用 ### L0 新增用例自检结果 - [x] 是,有新增 L0 用例,且完成自检 ### 是否已执行 mini system 用例 - [ ] 已验证 - [x] 不涉及(仅 NDK 头文件与单元测试变更,无 system 行为影响) See merge request: openharmony/distributedhardware_device_manager!3870 | 16 天前 | |
feat: device_manager 在不支持 jsapi 的平台移除 napi 依赖 修改 BUILD.gn 构建配置,在不支持 jsapi 的平台上移除 napi 依赖。 ## 技术细节 在多个 BUILD.gn 组中添加 条件判断: - 当 os_level == "standard" 且 support_jsapi 为 true 时才构建 napi 组件 - 避免 taihe 等不支持 jsapi 的平台尝试编译 napi 相关代码 - 修改了 8 个文件,包括主 BUILD.gn 和各个子模块的构建文件 ## 文件变更 - BUILD.gn: 添加 support_jsapi 条件判断 - 3rd/interfaces/BUILD.gn: 添加条件编译 - 3rd/services/implementation/BUILD.gn: 添加条件编译 - 3rd/utils/BUILD.gn: 添加条件编译 - ext/pin_auth/BUILD.gn: 添加条件编译 - interfaces/kits/ndk/BUILD.gn: 添加条件编译 - services/implementation/BUILD.gn: 添加条件编译 - interfaces/inner_kits/native_cpp/src/device_manager_impl_fail_to_support.cpp: 添加 taihe 条件编译 - 8 个文件变更,30 行修改 ## 测试 - 本地构建测试通过 - 条件编译逻辑正确 - 与其他组件逻辑保持一致 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: handyohos <zhangxiaotian@huawei.com> Change-Id: Iddae5d8bb7d671cf52253c6953fe2f7d85d3e829 | 3 个月前 |