Introduces a platform abstraction so the React app runs on both
Electron (desktop) and Android (WebView via Capacitor) without any
Python backend:
- frontend/src/services/crypto-service.js: pure-JS reimplementation of
all address types (P2PKH, P2WPKH, P2TR, P2PK, P2SH multisig) and HD
wallet generation (BIP-32/39/44/49/84/86) using @noble/curves,
@noble/hashes, @scure/bip32, @scure/bip39, bech32, bs58.
AES-256-CBC encryption via Web Crypto API, Electrum-compatible key
derivation (SHA256(SHA256(password))).
- frontend/src/services/api.js: detects Electron (window.electronAPI)
vs Android (Capacitor Filesystem) at runtime; components are
unchanged in behaviour.
- frontend/src/components/{HDWallet,SingleAddress,WalletViewer}.jsx:
import api instead of window.electronAPI directly.
- frontend/package.json: @noble/*, @scure/*, bech32, bs58,
@capacitor/core, @capacitor/filesystem, @capacitor/cli,
@capacitor/android; cap:sync script.
- frontend/capacitor.config.json: appId com.walletgen.app, webDir dist.
- contrib/android/Dockerfile + build.sh: JDK 17, Android SDK 34,
cap add/sync, ./gradlew assembleDebug; outputs wallet-gen-debug.apk
27 lines
768 B
Bash
Executable File
27 lines
768 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# Build a debug Android APK using Docker.
|
|
# Usage: ./contrib/android/build.sh
|
|
#
|
|
# Output: release/wallet-gen-debug.apk
|
|
#
|
|
# To build a release APK instead, export ANDROID_KEYSTORE, ANDROID_KEY_ALIAS,
|
|
# ANDROID_STORE_PASSWORD, ANDROID_KEY_PASSWORD and change assembleDebug to
|
|
# assembleRelease in contrib/android/Dockerfile, then run zipalign + apksigner.
|
|
set -euo pipefail
|
|
|
|
REPO_ROOT=$(cd "$(dirname "$0")/../.." && pwd)
|
|
OUT_DIR="$REPO_ROOT/release"
|
|
|
|
mkdir -p "$OUT_DIR"
|
|
|
|
docker build -t wallet-gen-android-builder \
|
|
-f "$REPO_ROOT/contrib/android/Dockerfile" \
|
|
"$REPO_ROOT"
|
|
|
|
docker run --rm \
|
|
-v "$OUT_DIR:/out" \
|
|
wallet-gen-android-builder
|
|
|
|
echo "APK saved to: $OUT_DIR/wallet-gen-debug.apk"
|
|
ls -lh "$OUT_DIR/wallet-gen-debug.apk"
|