rwadurian/backend/mpc-system/services/service-party-android
hailin 85665fb6d3 feat(android): 完成 100% 异常处理覆盖率 - 转换剩余 14 个函数为 safeLaunch
【异常处理终极优化 - 架构安全加固】

## 背景
在前期已修复核心路径异常处理的基础上,本次完成剩余14个非关键函数的转换,
达到 MainViewModel 100% 异常处理覆盖率,确保任何场景下都不会因未捕获异常而崩溃。

## 转换的函数(14个)

### 会话控制类(4个)
- startKeygenAsInitiator (事件回调中) - 创建钱包时 keygen 启动
- startKeygenAsJoiner - 加入钱包时 keygen 执行
- validateSignInviteCode - 验证签名邀请码
- startSignAsJoiner - 加入签名时 sign 执行

### 数据管理类(4个)
- deleteShare - 删除钱包分片
- loadTransactionRecords - 加载交易记录
- syncTransactionHistory - 同步历史交易
- confirmPendingTransactions - 确认待处理交易

### 测试工具类(3个)
- testMessageRouter - 测试消息路由连接
- testAccountService - 测试账户服务连接
- testKavaApi - 测试 Kava RPC 连接

### 余额查询类(3个)
- fetchBalanceForShare - 查询单个钱包余额
- fetchBalance - 查询指定地址余额
- fetchAllBalances - 查询所有钱包余额

## 技术细节

所有函数统一从 `viewModelScope.launch` 转换为 `safeLaunch`,确保:
1. 网络异常(SocketTimeout, UnknownHost, IOException)→ 友好提示
2. 状态异常(IllegalState, IllegalArgument)→ 错误上下文
3. 未知异常(其他)→ 通用错误信息
4. CancellationException → 正常重抛,不影响协程取消

## 覆盖率统计

转换前:
- 核心路径:100% (14个关键函数使用 safeLaunch) 
- 非关键路径:约 40-60% (14个函数使用裸 viewModelScope.launch) ⚠️

转换后:
- 核心路径:100% 
- 非关键路径:100% 
- **总体覆盖率:100%** 🎉

## 验证

编译通过:
- Build: SUCCESS in 24s
- 仅有3个未使用参数警告(不影响功能)

## 业务影响

零业务逻辑变更 
- safeLaunch 是透明包装器,仅添加异常处理
- 所有函数的执行路径、返回值、副作用完全保持不变
- 用户体验提升:崩溃 → 友好错误提示

## 回滚方法

如需回滚,将 `safeLaunch` 替换回 `viewModelScope.launch` 即可。

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-26 22:20:24 -08:00
..
app feat(android): 完成 100% 异常处理覆盖率 - 转换剩余 14 个函数为 safeLaunch 2026-01-26 22:20:24 -08:00
contracts feat(blockchain): 切换到dUSDT(绿积分)合约 - KAVA主网 2026-01-02 04:31:11 -08:00
gradle/wrapper feat(android): add Android TSS Party app with full API implementation 2025-12-31 23:27:29 -08:00
tsslib feat(tss): add real-time round progress from msg.Type() parsing 2026-01-01 22:41:51 -08:00
.gitignore feat(android): strengthen gRPC connection reliability 2026-01-01 06:44:42 -08:00
IMPLEMENTATION_PLAN.md feat(android): 实现 2-of-3 钱包服务器备份参与签名功能 2026-01-26 17:32:36 -08:00
README.md feat(android): add Android TSS Party app with full API implementation 2025-12-31 23:27:29 -08:00
build-apk.bat fix(android): simplify build-apk.bat with official gomobile setup 2026-01-01 00:53:04 -08:00
build.gradle.kts feat(android): add Android TSS Party app with full API implementation 2025-12-31 23:27:29 -08:00
gradle.properties feat(android): add Android TSS Party app with full API implementation 2025-12-31 23:27:29 -08:00
gradlew feat(android): add Android TSS Party app with full API implementation 2025-12-31 23:27:29 -08:00
gradlew.bat feat(android): add Android TSS Party app with full API implementation 2025-12-31 23:27:29 -08:00
settings.gradle.kts feat(android): add Android TSS Party app with full API implementation 2025-12-31 23:27:29 -08:00

README.md

TSS Party Android

Android 版本的 TSS (Threshold Signature Scheme) Party 应用,用于多方共管钱包的密钥生成和签名。

项目结构

service-party-android/
├── app/                          # Android 应用模块
│   ├── src/main/
│   │   ├── java/com/durian/tssparty/
│   │   │   ├── data/             # 数据层
│   │   │   │   ├── local/        # 本地存储 (Room, TSS Bridge)
│   │   │   │   ├── remote/       # 远程通信 (gRPC)
│   │   │   │   └── repository/   # 数据仓库
│   │   │   ├── domain/model/     # 领域模型
│   │   │   ├── presentation/     # UI 层
│   │   │   │   ├── screens/      # Compose 屏幕
│   │   │   │   └── viewmodel/    # ViewModels
│   │   │   ├── di/               # Hilt 依赖注入
│   │   │   ├── ui/theme/         # Material Theme
│   │   │   └── util/             # 工具类
│   │   ├── proto/                # gRPC Proto 文件
│   │   └── res/                  # Android 资源
│   └── libs/                     # TSS 原生库 (.aar)
├── tsslib/                       # Go TSS 库源码
│   ├── tsslib.go                 # gomobile 绑定
│   ├── go.mod
│   ├── build.sh                  # Linux/macOS 构建脚本
│   └── build.bat                 # Windows 构建脚本
└── gradle/                       # Gradle Wrapper

技术栈

  • UI: Jetpack Compose + Material 3
  • 架构: MVVM + Repository Pattern
  • 依赖注入: Hilt
  • 数据库: Room
  • 网络: gRPC (protobuf-lite)
  • TSS 核心: Go + gomobile (BnB Chain tss-lib v2)

构建步骤

1. 构建 TSS 原生库 (可选,需要 Go 环境)

# 安装 gomobile
go install golang.org/x/mobile/cmd/gomobile@latest
gomobile init

# 构建 Android AAR
cd tsslib
./build.sh  # Linux/macOS
# 或
build.bat   # Windows

这将在 app/libs/ 生成 tsslib.aar

注意: 当前版本使用 Kotlin stub 实现,无需编译 Go 库即可构建 APK。 实际运行需要真正的 tsslib.aar

2. 构建 APK

# Debug 版本
./gradlew assembleDebug

# Release 版本 (需要签名配置)
./gradlew assembleRelease

APK 输出路径: app/build/outputs/apk/debug/app-debug.apk

功能

  1. 加入 Keygen 会话 - 扫描/输入邀请码,参与多方密钥生成
  2. 查看钱包 - 显示已创建的共管钱包列表
  3. 签名交易 - 使用密钥份额参与多方签名
  4. 设置 - 配置 Message Router 服务器地址

配置

默认服务器配置:

  • Message Router: localhost:50051
  • Kava RPC: https://evm.kava.io

与 Electron 版本的对应关系

Electron 版本 Android 版本
electron/main.ts TssNativeBridge.kt + GrpcClient.kt
electron/preload.ts TssRepository.kt
src/pages/*.tsx presentation/screens/*.kt
tss-party/ (Go 子进程) tsslib/ (gomobile .aar)
sql.js Room Database

许可证

MIT