openharmony_ci bd845f4661 !3783 merge fix/security-alert into master
修复并发安全问题

Created-by: luyangyi
Commit-by: luyangyi
Merged-by: openharmony_ci
Description: **IssueNo**:

**Description**:

**稳定性自检:**
| 自检项                                                       | 自检结果  |
| ------------------------------------------------------------ | -------- |
| 涉及跨进程调用的相关操作需要抛至主线程或加锁防止并发              |   pass       |
| 成员变量进行赋值或创建需要排查并发                               |   pass        |
| 谨慎在lambda表达式中使用引用捕获                                |    pass       |
| 谨慎在未经拷贝的情况下使用外部传入的string、C字符串               |    pass       |
| map\vector\list\set等stl模板类使用时需要排查并发                |    pass       |
| 谨慎考虑加锁范围                                               |  pass         |
| 在IPC通信中谨慎使用同步通信方式                                 |   pass       |
| 禁止传递this指针至其他模块或线程(特别是eventhandler任务)        |    pass       |
| 禁止将外部传入的裸指针在内部直接构造智能指针                      |    pass       |
| 禁止多个独立创建的智能指针管理同一地址                           |     pass      |
| 禁止在析构函数中抛异步任务                                      |     pass      |
| 禁止js对象在非js线程(例如在IPC线程)创建、使用或销毁             |   pass        |
| 禁止在对外接口中未经判空直接使用外部传入的指针                    |   pass        |
| 禁止接口返回局部变量引用                                        |   pass        |
| 禁止在信号函数中加锁                                            |    pass       |
| 禁止在关键流程(SA启动、应用启动等主流程)执行耗时的操作           |   pass        |
| 禁止将同一个cpp编译在不同的so中                                 |   pass        |

**安全编码自检:**
| 自检项                                                          | 自检结果 |
| -------------------------------------------------------------- | -------- |
| 裸指针避免通过隐式转换构造为sptr                                 |     pass      |
| json对象在取值之前必须先判断类型,避免类型不匹配                   |    pass       |
| 序列化时必须对传入的数组大小进行校验,避免出现超大数组              | pass         |
| 避免使用未明确位宽的整型,选择使用int8_t、uint8_t等类型            |   pass        |
| 外部传入的路径要做规范化校验,对路径中的.、..、../等特殊字符严格校验 |    pass       |
| 指针变量、表示资源描述符的变量、bool变量必须赋初值                  |      pass    |
| readParcelable获取的对象使用前需要判空                            |   pass        |
| 分配和释放内存的函数需要成对出现                                   |   pass        |
| 申请内存后异常退出前需要及时进行内存释放                            |       pass    |
| 内存申请前必须对内存大小进行合法性校验                              |   pass        |
| 内存分配后必须判断是否成功                                         |   pass        |
| 禁止使用realloc、alloca函数                                       |  pass         |
| 禁止打印文件路径、口令等敏感信息,如有需要,使用private修饰          |    pass       |
| 禁止打印内存地址                                                  |   pass        |
| 整数之间运算时必须严格检查,确保不会出现溢出、反转、除0               |     pass      |
| 禁止对有符号整数进行位操作符运算                                    |  pass         |
| 禁止对指针进行逻辑或位运算                                         |    pass       |
| 循环次数如果收外部数据控制,需要检验其合法性                         |      pass     |
| 禁止使用内存操作类危险函数,需要使用安全函数                         |       pass    |
| 谨慎使用不可重入函数                                               |      pass     |
| 必须检查安全函数的返回值,并进行正确处理                             |     pass      |
| 禁止仅通过TokenType类型判断绕过权限校验                             |      pass     |

**TDD Result**:

**XTS Result**:

### 是否已执行L0用例
- [ ] 已验证
- [X] 不涉及。如不涉及,请写明理由

See merge request: openharmony/ability_form_fwk!3783
2026-08-08 17:48:11 +08:00
2025-11-13 14:54:43 +08:00
2026-07-17 17:19:19 +08:00
2022-06-04 17:32:35 +08:00
2026-08-06 20:32:58 +08:00
2025-10-31 10:34:09 +08:00
2026-08-06 10:04:56 +08:00
2026-05-30 17:09:50 +08:00
2026-05-26 15:17:14 +08:00
2022-07-25 11:11:06 +08:00
2022-11-23 14:53:37 +08:00
2024-04-11 17:43:08 +08:00

卡片管理

简介

卡片是一种界面展示形式,可以将应用的重要信息或操作前置到卡片,以达到服务直达的目的。

卡片常用于嵌入到其他应用(当前只支持系统应用)中作为其界面的一部分显示,并支持拉起页面,发送消息等基础的交互功能。

卡片的基本概念:

  • 卡片提供方 提供卡片显示内容原子化服务,定义卡片的显示内容、控件布局以及控件点击事件。
  • 卡片使用方 显示卡片内容的应用,可自由配置应用中卡片展示的位置。
  • 卡片管理服务 用于管理系统中所添加卡片的常驻代理服务,包括卡片对象的管理与使用,以及卡片周期性刷新等。

开发者仅需作为卡片提供方进行卡片内容的开发,卡片使用方和卡片管理服务由系统自动处理。

icon-note.gif 说明: 卡片使用方和提供方不要求常驻运行,在需要添加/删除/请求更新卡片时,卡片管理服务会拉起卡片提供方获取卡片信息。

部件内子模块职责

子模块名称 职责
卡片JS_Napikit模块 提供外部接口,与卡片管理服务交互,负责事件通知的调度,通过ArkUI更新卡片视图。
卡片管理服务模块 管理系统中所添加卡片的常驻代理服务,管理卡片的生命周期,并维护卡片信息以及卡片事件的调度。

目录

foundation/ability/form_fwk
├── frameworks
│   └── js
│       └── napi                    # form_fwk的napi代码实现
├── interfaces
│   ├── inner_api                   # form_fwk的系统内部件间接口 
│   └── kits
│       └── native                  # form_fwk的对外接口  
├── services                        # form管理服务框架代码
│   ├── config                      # form 管理服务配置文件及解析实现
│   ├── form_render_service         # form_render_service.hap(FRS)实现
│   ├── include                     # form 管理服务依赖头文件
│   └── src                         # form 管理服务业务实现
└── test                            # 测试目录

使用说明

卡片框架模型具有两种形态:

  • 第一种形态为FA模型。API 8及其更早版本的应用程序只能使用FA模型进行开发,卡片使用FormAbility开发。
  • 第二种形态为Stage模型。从API 9开始,Ability框架引入了Stage模型作为第二种应用框架形态,卡片使用FormExtensionAbility开发。

FA卡片开发 基于FA模型的卡片提供方开发,主要涉及如下功能逻辑:

  • 开发卡片生命周期回调函数LifecycleForm。
  • 创建卡片数据FormBindingData对象。
  • 通过FormProvider更新卡片。
  • 开发卡片页面。

开发步骤可参考开发指南

Stage卡片开发 基于Stage模型的卡片提供方开发,主要涉及如下功能逻辑:

  • 卡片生命周期回调函数FormExtension开发。
  • 创建卡片数据FormBindingData对象。
  • 通过FormProvider更新卡片。
  • 卡片页面开发。

开发步骤可参考开发指南

相关仓

ArkTS API 接口

interface_sdk-js

元能力子系统

ability_base

ability_runtime

dmsfwk

form_fwk

idl_tool

ArkUI框架

arkui_ace_engine

S
Description
暂无描述
Readme 59 MiB
Languages
C++ 98.7%
C 1.1%
JavaScript 0.1%