跳到正文
DIY Wallet
ZH

编译 App

在电脑上从源码编译 OneKey 桌面版 App。

  • 60 分钟
  • 在电脑上
零件和选项

App 运行在你的电脑上,负责显示余额、准备交易。从源码编译它,和编译固件的理由一样:你知道自己运行的是什么。

这里要用桌面版。它把和钱包通信需要的部分都打包在自己里面;浏览器插件和网页版运行时会从 OneKey 的服务器加载这部分。

唯一的改动

设备连接时,OneKey App 会检查它是不是 OneKey 生产的。你的设备永远通不过,因为它要求的证书只有 OneKey 工厂能发。所以编译前要先打一个一行的改动,跳过这项检查。打之前可以完整查看这个改动:app-skip-genuine-check.patch。

安装工具

需要一台 Mac 或 Linux 电脑,装好 Git 和 Node.js 22 或 24 版。

  1. 安装苹果的命令行工具,里面包含 Git。在终端里运行 xcode-select --install,按提示操作。
  2. 从 nodejs.org 安装 Node.js 22 LTS 或 24 LTS。
  1. 安装 Git 和常用的编译工具,比如在 Debian 或 Ubuntu 上:sudo apt install -y git rsync build-essential python3 pkg-config libudev-dev。
  2. 从 nodejs.org 或你的发行版安装 Node.js 22 LTS 或 24 LTS。

关掉终端再打开一个新的,让它识别刚装好的工具。

下载源码并打上改动

在电脑上
git clone --depth 1 --branch v6.6.3 https://github.com/OneKeyHQ/app-monorepo.git
cd app-monorepo
git log -1 --format=%H

最后一条命令应该显示 d510ab79e622ed042444940b8a848c1b1628ab68,也就是 OneKey 发布 v6.6.3 时的提交。

在电脑上
curl -fLO https://raw.githubusercontent.com/rayston92/firmware-classic1s/diy/diy/app-skip-genuine-check.patch
git apply app-skip-genuine-check.patch

git apply 成功时不会输出任何内容。

编译

下面的命令会下载 App 用到的库并编译。预计 30 分钟到一个小时,编译时请关掉其他占内存的程序。

在电脑上
corepack enable
export ONEKEY_FONTS_FORCE_FALLBACK=1
yarn
cd apps/desktop
yarn build:renderer
yarn build:main
yarn install-app-deps

如果 corepack enable 提示没有权限,改用 sudo corepack enable,然后继续。

ONEKEY_FONTS_FORCE_FALLBACK 让编译使用开源的 Inter 字体,而不是去下载 OneKey 有版权的品牌字体,你没有它的访问权限。

然后打包成可以打开的程序:

在电脑上
npx electron-builder build --mac --dir --config electron-builder.config.js -c.mac.identity=null --publish never

App 在 apps/desktop/build-electron 里一个以 mac 开头的文件夹中,打开里面的 OneKey.app。第一次打开时 macOS 可能提示无法验证开发者:右键点 App,选 打开,再点一次 打开。

在电脑上
npx electron-builder build --linux --dir --config electron-builder.config.js --publish never
sudo cp public/static/udev/99-onekey.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules

App 是 apps/desktop/build-electron/linux-unpacked/onekey-wallet。后两条命令让它不用 root 权限也能打开钱包的 USB 连接。

检查点

App 能打开,显示欢迎界面。下一步要用,先别关。

完成了?进入第 7 步连接并创建钱包

最后一次对照源码核对: