@hxa-rn/react-native-encrypted-storage
v4.0.3-beta.1
Published
A React Native wrapper over SharedPreferences and Keychain to provide a secure alternative to Async Storage (HarmonyOS adaptation)
Downloads
122
Readme
本项目基于 react-native-encrypted-storage开发。如果在使用过程中有任何问题,欢迎在AtomGit提交Issue,会及时跟进。
项目介绍
@hxa-rn/react-native-encrypted-storage 是 react-native-encrypted-storage 的鸿蒙(OpenHarmony)适配版本,当前规范版本号为 4.0.3-beta.1。
本库通过 TurboModule 提供加密本地存储,鸿蒙端使用 preferences + cryptoFramework AES-256-GCM + Asset Store Kit 主密钥。
| 鸿蒙适配包版本 | 原始库版本 | 支持 RN 版本 | Autolink | | ------------ | ---------- | ------------ | -------- | | 4.0.3-beta.1 | 4.0.3 | 0.72+ | 是 |
集成指南
npm install @hxa-rn/react-native-encrypted-storagepeerDependencies:react-native >= 0.72。
本模块支持 Autolink。harmony.alias 为 react-native-encrypted-storage,业务代码从该原库名导入,而不是 @hxa-rn/react-native-encrypted-storage。
HAR 路径:harmony/encrypted_storage.har。
使用说明
import EncryptedStorage from 'react-native-encrypted-storage';
export async function saveAndReadSession() {
await EncryptedStorage.setItem(
'user_session',
JSON.stringify({ token: 'ACCESS_TOKEN' })
);
const session = await EncryptedStorage.getItem('user_session');
if (session !== null) {
// 使用读取到的值
}
await EncryptedStorage.removeItem('user_session');
await EncryptedStorage.clear();
}getItem在 key 不存在时返回null,与 Android/iOS 一致。- 每个写操作内部
await preferences.flush()保证落盘。
接口文档
| API | 描述 | 参数 | 返回值 | HarmonyOS 支持 |
|-----|------|------|--------|----------------|
| setItem | 加密写入键值对 | key: string, value: string | Promise<void> | ✅ 完全支持 |
| getItem | 加密读取;key 不存在返回 null | key: string | Promise<string \| null> | ✅ 完全支持 |
| removeItem | 删除指定 key(幂等) | key: string | Promise<void> | ✅ 完全支持 |
| clear | 清空本模块命名空间 | 无 | Promise<void> | ✅ 完全支持 |
鸿蒙端存储后端为 preferences + AES-256-GCM + Asset Store Kit 主密钥,等效 Android EncryptedSharedPreferences / iOS Keychain。
快速验证(运行 Example)
前置条件
| 依赖 | 版本要求 | |------|----------| | Node.js | >= 18 | | DevEco Studio | 5.0+ | | HarmonyOS SDK | API 12+ |
运行步骤
1. 克隆仓库
git clone https://gitcode.com/hxa-rn/react-native-encrypted-storage.git
cd react-native-encrypted-storage
git checkout br_rnoh0.722. 安装仓库开发依赖
npm install --legacy-peer-depsExample 已改为从 npm 公仓安装 @hxa-rn/[email protected],不再使用本地 file:../xxx.tgz,运行 Example 不必再执行 npm pack。
3. 进入 example 目录,安装依赖
cd example # 或 example_auto
npm install --legacy-peer-deps4. 生成 JS Bundle
npm run dev产物:harmony/entry/src/main/resources/rawfile/bundle.harmony.js
5. 用 DevEco Studio 打开鸿蒙工程
- 打开 DevEco Studio
- 选择
example/harmony(或example_auto/harmony)目录 - 等待 Sync 完成
6. 编译并运行 HAP
在 DevEco Studio 中点击运行按钮,将 HAP 安装到设备/模拟器。
注意:Example 中已预置插件依赖和 Package 注册,无需手动配置 Link。
约束与限制
兼容性
- 鸿蒙 SDK:API 12+
- 上游 RN SDK:0.72+
- React Native / RNOH:0.72+
- DevEco Studio:5.0+
权限
- 无额外系统权限
使用限制
- 存储数据随应用沙箱生命周期,卸载即清除。
- 主密钥存于 Asset Store Kit;资产被清理后历史密文无法解密。
开源license
本项目基于 MIT 协议,详见 LICENSE 文件。
问题反馈渠道
使用问题请在 AtomGit 提交 Issue。也可在 GitCode 仓库反馈:
https://gitcode.com/hxa-rn/react-native-encrypted-storage
https://gitcode.com/hxa-rn/react-native-encrypted-storage/issues
