Skip to content

Feature: Android mobile wallet — build a signed APK from the existing QML / contrib/android pipeline #3

Description

@melvincarvalho

Summary

Produce a signed Bitmark Android APK. Almost all the work is already in this repo (inherited from upstream Electrum 4.x): the QML mobile GUI and the complete Android build pipeline. This is mostly build-system wrangling + Bitmark-specific tweaks, not new wallet code.

What's already here

  • electrum/gui/qml/ — the QML mobile GUI (Electrum 4.x's mobile UI; ~35 components, android_res, java_classes). Already Bitmark-aware, already speaks to ElectrumX.
  • contrib/android/ — the full Android build pipeline: buildozer_qml.spec, make_apk.sh, build.sh, a Dockerfile (reproducible), p4a_recipes, NDK fetch scripts, barcode scanner. This is the same machinery upstream uses to ship official APKs.

So the wallet logic, the mobile UI, and the build system are done — the task is operational.

Scope / tasks

  1. Get the APK build green via contrib/android/ (Docker-based). The fiddly part: buildozer / python-for-android / NDK, plus native builds (secp256k1, cryptography). Solved problem upstream, but expect toolchain wrangling the first time.
  2. Bitmark tweaks:
    • app id + name + BTMK branding/icon
    • default server(s): electrum.bitmark.rocks:50002 (SSL), or a server list
    • disable SegWit / force legacy-only — mobile would otherwise generate unsafe btm1... addresses (Bitmark is pre-SegWit). Same fix the desktop needs.
  3. Sign + distribute: direct APK download or F-Droid (Google Play is hostile to crypto wallets).

Out of scope (for now)

  • iOS — no scaffolding here; Electrum doesn't officially support iOS (QML-on-iOS is painful). Separate, large effort.

Notes

  • The Android build is Dockerized -> reproducible, matching the project's reproducible-build approach (cf. daemon build).
  • Depends on the legacy-only / disable-SegWit fix — that change benefits desktop and mobile at once, so worth doing first.

Effort

A few days for a first signed APK, almost entirely build-toolchain work. The code is free.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions