打造自己的白标加密钱包:AlphaWallet Fork定制与CustomViewSettings实战指南
【免费下载链接】alpha-wallet-androidAn advanced Ethereum mobile wallet项目地址: https://gitcode.com/gh_mirrors/al/alpha-wallet-android
AlphaWallet 是一个开源的高级以太坊移动钱包(Advanced Ethereum Mobile Wallet),原生支持多链资产、dApp 浏览器与 TokenScript 可编程代币框架,非常适合 Fork 后打造成白标加密钱包:改几行配置,就能把品牌、代币、链和界面全部变成你自己的。本文带你通过 CustomViewSettings 这个核心定制入口,快速完成一款专属钱包。
为什么 AlphaWallet 适合做白标钱包
- 🌐多链开箱即用:原生支持 30+ 条以太坊系网络(Ethereum、Polygon、Arbitrum、Optimism、Base 等),无需从零对接链
- 🔐安全体系成熟:安全区(Secure Enclave)密钥存储、种子词备份、指纹解锁等安全功能已内置
- 🧩官方预留白标入口:项目团队专为 Fork 场景设计了
CustomViewSettings类,一处修改即可控制代币锁定、链过滤、界面开关 - 📜TokenScript 可编程:支持为代币附加签名业务逻辑,实现"SmartToken"(FIFA 区块链门票即基于此)
第一步:克隆仓库并完成首次构建
白标定制的前提是能跑通项目。完整步骤在 README.md 的 Getting Started 章节,构建细节见 BUILD.md:
- 克隆仓库(要求JDK 17):
git clone https://gitcode.com/gh_mirrors/al/alpha-wallet-android - 申请一个免费的 Infura API Key,替换 app 模块 build.gradle 中的默认值
- 用 Android Studio 打开项目,或命令行执行
./gradlew build完成构建
⚠️ 注意:Java 16 及以下版本会因 Realm 的编译问题报错,务必使用 JDK 17。
核心定制入口:CustomViewSettings 全解析
整个白标定制的"总开关"就是这一个文件:app/src/main/java/com/alphawallet/app/entity/CustomViewSettings.java
它被钱包主界面、代币服务、dApp 浏览器等 20+ 处模块引用,常用的定制项如下:
| 定制项 | 作用 | 白标场景 |
|---|---|---|
lockedTokens | 锁定展示的代币列表(地址/名称/符号/精度/链ID) | 让品牌代币零余额也常驻展示 |
lockedChains | 锁定可见链,非空时禁用用户选网弹窗 | 单链钱包必配 |
hideDappBrowser() | 隐藏底部 dApp 浏览器 Tab | 做成纯资产钱包 |
minimiseBrowserURLBar() | 去掉浏览器地址栏,只保留内嵌导航 | 打造"自家 dApp 专属容器" |
canChangeWallets() | 是否允许多钱包切换 | 单账户产品设为false |
canAddTokens()/showManageTokens() | 是否允许添加/管理代币 | 锁定代币生态 |
hideTabBar() | 隐藏 ALL/CURRENCY/COLLECTIBLES 筛选栏 | 界面更聚焦 |
showZeroBalance() | 是否展示零余额代币 | 控制列表噪音 |
inputAmountFiatDefault() | 转账输入框默认法币还是币 | 面向普通用户设法币 |
实战一:锁定品牌代币 + 单链钱包
参考 README.md 的 "How to customise the appearance of your wallet fork" 章节,假设你只想要以太坊主网、并固定展示 USDC:
private static final List<TokenInfo> lockedTokens = Arrays.asList( new TokenInfo("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "USD Coin", "USDC", 6, true, EthereumNetworkBase.MAINNET_ID) ); private static final List<Long> lockedChains = Arrays.asList( EthereumNetworkBase.MAINNET_ID );TokenInfo的参数依次是:合约地址、代币名、符号、小数位、是否启用、链ID。锁定后即使余额为零,代币也会常驻在资产列表中。
实战二:把 dApp 浏览器变成自家应用的"壳"
如果你的钱包本质是自家 dApp 的入口(例如 NFT 商城、票务系统),推荐组合拳:
- 将 CustomViewSettings 中
minimiseBrowserURLBar()返回true——用户无法手动输入 URL,只能在你的站点内导航 - 修改
app/src/main/java/com/alphawallet/app/util/DappBrowserUtils.java第 38 行的DEFAULT_HOMEPAGE,把它指向你的网站(如https://my-nfts.com/) - 需要更彻底时,把
hideDappBrowser()设为true,连浏览器 Tab 一起移除
三步之后,用户打开钱包直接就是你的产品,体验非常"白标"。
实战三:调整链的展示顺序
链在钱包中的排列顺序由app/src/main/java/com/alphawallet/app/repository/EthereumNetworkBase.java第 171 行的hasValue列表决定。如果你的钱包主打某条链(比如 xDai),把对应 ChainID 移到列表首位即可,它会成为资产列表的头条。
品牌化的最后一步:替换视觉资产
代码改完,记得替换app/src/main/res/下的启动图标与配色(mipmap-*各分辨率目录、res/values/下的主题色),商店素材可参考 fastlane/metadata/android/en-US/images/ 目录中的截图与特性图规格。项目采用MIT 许可证(见 LICENSE),商用白标前建议阅读许可证条款。
常见问题
- 改了配置不生效?确认你改的是
app模块下的CustomViewSettings,并重新 Clean Build,避免增量编译缓存 - 锁定代币后链上资产看不到了?
lockedChains非空会禁用网络选择弹窗,请确保锁定链覆盖了所有代币所在链 - 主网和测试网混排有风险,源码注释也提醒尽量避免,防止用户误转资产
总结
用 AlphaWallet 打造白标加密钱包的路径非常清晰:克隆 → JDK 17 构建 → 改CustomViewSettings三处关键配置 → 替换品牌视觉。得益于官方预留的定制接口与成熟的多链、安全底层,你通常只需要几十行改动,就能得到一个体验完整的专属钱包。🚀
【免费下载链接】alpha-wallet-androidAn advanced Ethereum mobile wallet项目地址: https://gitcode.com/gh_mirrors/al/alpha-wallet-android
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考