@ambire/react-native-crypto

中文文档
1.0.1发布于 2026/10/06MITTypeScriptCommonJS构建来源已验证近 30 天下载 2681

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

中文使用文档
文档目录10 节
  1. 安装
  2. API 密码
  3. 与viem对等
  4. 捐款
  5. 改变粗鲁
  6. 遗传后补丁
  7. 测试
  8. 释放
  9. 版式
  10. 许可证

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

npm

6个热量的草率执行 维姆 函数,与 Hermes 相接 与JSI联系 unifci- bindgen- react- native (英语) (乌本).

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

安装

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

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

需要与新建筑和赫尔墨斯反应原生. viem 是一个对等点 依附,钉在准确的版本 罗斯特写对 - 看 与viem对等。 。 。 .

API 密码

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) => stringAbiError
encodeFunctionData(abiJson, functionName, argsJson) => stringAbiError
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数字 :

yarn bindings:generate

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

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

# 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 内 外接/外接技术。 。 。 .

释放

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

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

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 将两个平台都指向右边 地点.

许可证

麻省理工学院. 见 自由主义。 。 。 .

版本与发布记录

@ambire/react-native-crypto 共发布 3 个版本,首次发布于 2026/09/17;过去 12 个月发布了 3 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.0.1latest2026/10/061 个月前
1.0.02026/09/171 个月前
0.0.02026/09/171 个月前

关于 @ambire/react-native-crypto 的常见问题

@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 和提交记录判断。