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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions