Files
easy-wallet/contrib/android/build.sh
Davide Grilli e785179ee4 feat(android): add Capacitor APK build with pure-JS crypto layer
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
2026-03-10 14:09:58 +01:00

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"