# @ambire/react-native-crypto 中文文档

规范地址：https://npmcn.com/package/%40ambire/react-native-crypto/

版本：1\.0\.1
npm 元数据更新时间：2026-10-06T13:38:15.329Z
中文译文更新时间：2026-11-06T16:53:50.090Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40ambire/react-native-crypto
原文对照：https://npmcn.com/package/%40ambire/react-native-crypto/?lang=original
项目主页：https://www.ambire.com/
源码仓库：https://github.com/AmbireTech/react-native-crypto

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：81.3 MB，35 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：2 个
- peer 依赖：viem 2\.56\.3，react \*，react-native \*
- 首次发布：2026-09-16T17:00:23.738Z
- 最新版本发布：2026-10-06T13:38:14.974Z
- 近 30 天下载量：2681（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：3（近 12 个月 3 个）

## 中文简介

安比雷钱包的粗快克恰克256、六分法和ABI编码

## 安装

```sh
npm install @ambire/react-native-crypto
```

也可以使用：`pnpm add @ambire/react-native-crypto`、`yarn add @ambire/react-native-crypto`、`bun add @ambire/react-native-crypto`

## README

# @ambire/ react-native-crypto (英语)

[![npm](https://img.shields.io/npm/v/@ambire/react-native-crypto)](https://www.npmjs.com/package/@ambire/react-native-crypto)

6个热量的草率执行 [维姆](https://viem.sh/) 函数,与 Hermes 相接 与JSI联系 [unifci- bindgen- react- native (英语)](https://jhugman.github.io/uniffi-bindgen-react-native/) (乌本).

为移动钱包所建和使用 [外接/外接技术](https://github.com/AmbireTech/extension), (中文(简体) ), 这六种功能在赫尔姆斯比整个投资组合中的成本更高 更新。 移动到 Rust 是移动组合负载的原因 合理的速度.

## 安装

```sh
yarn add @ambire/react-native-crypto
cd ios && pod install
```

Npm tarball 为每个Android ABI 和 iOS 携带所编译的 Rust 设备与模拟器,所以安装不需要 Rust工具链. 仅贡献者 改变者 `rust/` 需要一个.

需要与新建筑和赫尔墨斯反应原生. `viem` 是一个对等点 依附,钉在准确的版本 罗斯特写对 - 看 [与viem对等](https://npmcn.com/package/%40ambire/react-native-crypto/#readme-parity-with-viem)。 。 。 .

## API 密码

```ts
import {
  bytesToHex,
  checksumAddress,
  decodeFunctionResult,
  encodeFunctionData,
  hexToBytes,
  keccak256
} from '@ambire/react-native-crypto'

const calldata = encodeFunctionData(
  JSON.stringify(erc20Abi),
  'transfer',
  JSON.stringify([recipient, { $bigint: '1000000000000000000' }])
)
```

| 函数 | 签署 | 掷出 |
| --- | --- | --- |
| `bytesToHex` | `(input: ArrayBuffer) => string` | 没有 |
| `checksumAddress` | `(address: string) => string` | 非地址 |
| `decodeFunctionResult` | `(abiJson, functionName, dataHex) => string` | `AbiError` |
| `encodeFunctionData` | `(abiJson, functionName, argsJson) => string` | `AbiError` |
| `hexToBytes` | `(input: string) => ArrayBuffer` | 关于畸形十六进制 |
| `keccak256` | `(input: ArrayBuffer) => ArrayBuffer` | 没有 |

ABI 函数取回 JSON 字符串而不是对象,因为 穿过JSI一次,用弦击打它 反复通过它 结构化 数值。 整数以JSON数回过来 最多48位和一个 `{"$bigint":"<decimal>"}` 上方标记, 这是最宽的整数 Hermes 完全代表着.

## 与viem对等

这些匹配的viem _行为_包括一些怪事 不仅仅是那些. `checksumAddress` 重算一个校验和, 而不是验证它是什么 和地址解析器 完全接受 viem的 `isAddress` 接受这个建议.

`peerDependencies` 刺穿Viem版本 Rust被书写反对,因为一个 viem bump可以改变“匹配”的含义,这里没有不编译的内容. 将viem升级视为需要对等测试重新读取的变化,而不是 版本凸起.

安比雷的应用不直接导入此软件包. 大都会改变viem自己的方向 因此viem的内部使用原生的 版本也一样。 当本地模块缺失时,每个shim会回到viem,或者 不接受输入,所以没有 Rust 部分的构建会慢一些,但仍然 没错.

## 捐款

### 改变粗鲁

两个不同的步骤,因为在不同的时间需要它们.

**约束** 是应用程序所编译的TypeScript和C++。 他们 cI失败的公关协议 其约束不匹配 `rust/src`数字 :

```sh
yarn bindings:generate
```

它为主机构建了箱子, 并读取了导出函数 生成的库, 写 `src/generated/` 财务报告和审定财务报表 `cpp/generated/`,则 应用 [遗传后补丁](https://npmcn.com/package/%40ambire/react-native-crypto/#readme-the-post-generate-patch)添加、去除或 更改导出函数更改 unifki 校验和; stale 绑定器制作 `initialize()` 扔出应用靴 而不是失败的任何构建,所以这不是 选项。 将结果与您的 Rust 变化.

**二进制** 是编译的 Rust。 他们被蒙蔽了,释放了 工作流程在标签上重建它们,所以你只需要这个来测试一个变化 设备 :

```sh
# Android, needs cargo-ndk and the Android NDK
rustup target add aarch64-linux-android armv7-linux-androideabi \
                  x86_64-linux-android i686-linux-android
cargo install cargo-ndk
yarn binaries:android

# iOS, needs macOS and Xcode
rustup target add aarch64-apple-ios aarch64-apple-ios-sim x86_64-apple-ios
yarn binaries:ios
```

目标列表匹配 `ubrn.config.yaml`,它覆盖每个Android ABI反应 原生为并同时为iOS设备和模拟器架构所建. 丢出一个 在构建时没有失败 。 然后舱内装入这些装置, 像安比雷的应用一样 和消费者一起跑得比较慢 没有别的迹象.

两个脚本都构建 `release` 简介。 在那个 `dev` 剖析出箱子的结局 慢于所替换的JavaScript,在日志中无任何可言.

脚本都没有再生起涡轮模组胶水(`src/index.ts`, (中文(简体) ), `src/NativeAmbireCrypto.ts`, Kotlin 和 Goal-C++ 模块, costspec). 该输出不依赖于导出函数列表, 并重新生成 将覆盖手持的 git URL `AmbireCrypto.podspec`运行 `ubrn build <platform> --config ubrn.config.yaml --release --and-generate` 以 手,如果你需要它回来,并重新应用 URL.

### 遗传后补丁

`scripts/forceNativeStringDecoder.js` 重写一个块 `src/generated/ambire_crypto.ts` 每一个生成后.

ubrn 模板选择全局 `TextDecoder` 当一个人存在 并保持自己的 C++ 帮助器作为倒计时器,假设赫耳墨斯没有. 在安比尔的 应用程序 1 确实存在, 因此检查通过和每个字符串 Rust 返回被解码 jS线上的字节为字节. 分析一个组合重新装入后, 将它放在一个左右 第二,这比本地的呼叫更能省钱 补丁 强制 C++ 解码器,它无条件编译.

脚本具有同位素,如果生成的代码不再存在,则退出非零 看起来像它所期望的, 所以ubrn升级 打破了建筑而不是 默默地带回了缓慢的道路.

`src/generated/ambire_crypto.ts` 由两个平台共享,所以一个iOS生成 跳过这个步骤 也会让Android回归.

`patches/uniffi-bindgen-react-native+0.31.0-3.patch` 与这个无关 剧本. 它又说 `"./package.json"` 给自己人 `exports` 地图, ubrn 需要的 在捆绑的一代中解决自己. `yarn install` 应用到 页:1 `prepare` 剧本.

### 测试

`yarn rust:check` 运行 `cargo fmt --check`中,中和73个测试 `rust/src/tests.rs`这是CI对每个公关的监控 它们覆盖出口 函数,包括易于被错误的viem等同规则:整数 将48个比特或更少的比特解码为平版 JavaScript 数字和任何更宽到 a 的 BigInt标签,以及 `checksum_address` 重计算校验和而不是校验 给它的一个.

JavaScript shims是在消耗性应用中测试的,而不是在这里 `src/mobile/shims/viem/getAddress.test.ts` 财务报告和审定财务报表 `src/mobile/services/nativeAbi/nativeAbiDecode.test.ts` 内 [外接/外接技术](https://github.com/AmbireTech/extension)。 。 。 .

### 释放

弹出 `version` 内 `package.json`,合并,然后推动匹配 `v*` 标签。 这个 发布工作流程构建两个平台,对照版本检查标签和 npm 上的软件包带有出处,在 OIDC 上认证,没有 存储的代号。 与版本不符的标签失败而非任务 准备.

僵硬不是在发表 该版本位于登记册上,无法 在维护者用2FA批准前:

```sh
npm stage list @ambire/react-native-crypto
npm stage view <stage-id>
npm stage approve <stage-id>
```

发布工作流程的运行摘要列出了等待的内容. `npm stage reject <stage-id>` 却把烂建筑扔了 两者都需要npm 11.1.5.0或 等会.

为了在不释放的情况下运行该路径,手动运行工作流程 动作标签和离开 `stage` 关闭。 它建立两个平台,检查 二进制已就位,上传已包装的柏油球作为文物,但停止 {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}不过是中场.

其中一个例外是首次发布新包名. 仅npm 暴露信任的出版格式,只接受一个舞台版,在 已经存在的软件包,所以一个名称必须用手拖住一次 在OIDC接管之前.

## 版式

由 ubrn 生成, 不编辑 :

-   `cpp/` C++ 绑定和 JSI 安装器
-   `src/generated/` 类型脚本绑定
-   `src/index.ts` 软件包条目
-   `src/NativeAmbireCrypto.ts` 涡轮单元光谱
-   `android/CMakeLists.txt`
-   `android/cpp-adapter.cpp`
-   `android/build.gradle` 也从 `ubrn.config.yaml`
-   `android/src/main/` 清单、 Kotlin 模块和软件包
-   `ios/` 目标-C++ 涡轮模块
-   `AmbireCrypto.podspec` 其中的 git URL 和标记为手维护

`yarn ubrn:clean` 在完全再生之前删除其中的大部分. 这个 故意离开 `android/build.gradle`, (中文(简体) ), `AmbireCrypto.podspec` 编辑 Android独处,因为 `bindings:generate` 不重写它们.

手写:

-   `rust/src/lib.rs` 执行情况
-   `rust/src/tests.rs` 测试套件
-   `ubrn.config.yaml` 构建配置
-   `scripts/` 生成后补丁
-   `android/proguard-rules.pro` 查看文件中的注释

由 CI 构建输出、 被忽略并重建 :

-   `android/src/main/jniLibs/` 每个ABI共享一个库
-   `AmbireCryptoFramework.xcframework/`

要修改 ABI 或架构列表,请编辑 `ubrn.config.yaml`没有 `android/build.gradle`。生成的格氏文件取其 `ndk.abiFilters` 从配置中, 下个构件会覆盖编辑 .

反应原生 Codegen 输出没有承诺 。 格拉德再生出来 `android/build/generated/source/codegen`,这也是唯一的方法 光谱 最终在 `com.ambirecrypto` kotlin 模块所期望的软件包。 剧本 用于生产可拆船编码的硬码 `com.facebook.fbreact.specs` 换句话说. `codegenConfig.outputDir` 内 `package.json` 将两个平台都指向右边 地点.

## 许可证

麻省理工学院. 见 [自由主义](https://npmcn.com/package/%40ambire/react-native-crypto/LICENSE)。 。 。 .

## 常见问题

### @ambire/react-native-crypto 是什么？

安比雷钱包的粗快克恰克256、六分法和ABI编码

### 如何安装 @ambire/react-native-crypto？

在项目目录运行 npm install @ambire/react-native-crypto，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：viem（2\.56\.3）、react（\*）、react-native（\*）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @ambire/react-native-crypto 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @ambire/react-native-crypto 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @ambire/react-native-crypto 可以商用吗？

@ambire/react-native-crypto 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @ambire/react-native-crypto 的下载量有多少？

根据 npm 官方下载统计，@ambire/react-native-crypto 在 2026/10/06 – 2026/11/04 这 30 天内被下载 2,681 次，日均约 89 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @ambire/react-native-crypto 还在维护吗？

最新版本 1\.0\.1 发布于 2026/10/06（1 个月前）；至今共发布 3 个版本，其中过去 12 个月发布了 3 个；首次发布于 2026/09/17。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

