Android: build experiment and how QtPass could use GnuPG there
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- android, cpp, git
- Domain
- desktop-dev, mobile-dev, security
Research direction
The issue reports an Android build probe on the android-probe branch and points to main.pro for the static library name fix. First inspect that project file and reproduce the Qt 6.8.3 Android build; then run the probe APK in an emulator to assess the UI. The broader GnuPG work is exploratory: the suggested first milestone is bundling gpg and decrypting one test store entry with a loopback passphrase dialog.
Written by the indexing model from the issue text.
Description
An experiment: can QtPass run on Android, and how would it talk to GnuPG there?
Building: works
A probe on a fork (annejan/qtpass android-probe, run) builds src and main with Qt 6.8.3 for android_arm64_v8a (NDK r26b, API 35) and packages a debug APK (18.5 MB) with androiddeployqt. The only change needed:
- Android's qmake adds the ABI to the static library's name (
libqtpass_arm64-v8a.a), whilemain.prolinkslibqtpass.a. The probe copies it; a real fix belongs inmain.pro.
Notes for the install step: Qt 6.7 and later list their Android packages under host all_os (not linux), and autodesktop: true brings the host tools along.
Not tried yet: running the APK. The Widgets UI is the desktop one, so on a phone it will be small and mouse-shaped; a usable phone UI is a separate (big) question.
GnuPG: the real problem
QtPass runs gpg, git and pass as processes through Executor. On Android:
- An app cannot run binaries from its own writable storage (since Android 10). Binaries shipped as
lib*.soin the APK's native library directory can still be run (extractNativeLibs), which is how Termux works. passis a Bash script, so Android would use the ImitatePass mode (gpg and git directly) anyway.- There is no pinentry: gpg-agent has nothing to ask the passphrase with. QtPass would need its own passphrase prompt and
--pinentry-mode loopback. - Smartcards and YubiKeys over USB or NFC would not reach a bundled scdaemon.
- The store would live in the app's own storage (cloned with Git); gpg cannot read Android
content://URIs.
Options:
- Bundle GnuPG built for Android (Termux packages
gnupg2.5.24 and its libraries), plusgit, as executable "libraries" in the APK. Keeps QtPass's process model and real GnuPG keyrings. Needs: the loopback passphrase prompt, GNUPGHOME in app storage, packaging a dozen libraries. Fastest way to something that decrypts. - OpenKeychain through its OpenPGP API (what Android Password Store first used). It has had no commits since May 2024, so not something to build on.
- An in-process OpenPGP library as a third backend next to RealPass and ImitatePass, for example RNP (C++, used by Thunderbird, reads GnuPG keyrings). No processes, no agent, no pinentry problem, and it would also fit iOS. The most work: key listing, generation, import and signing all move to the library.
Suggested next steps, if this goes anywhere: run the probe APK in an emulator to see the UI, then try option 1 with only gpg and a loopback passphrase dialog to decrypt one entry from a test store.
Not planned for 2.0; this is exploration.
- Dominant language
- C++
- Stars
- 1.1k
- Forks
- 172
- Avg merge
- 4h 26m
- Merged PRs (30d)
- 122
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from IJHack/QtPass
-
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
Maintainers usually reply within 1 day
-
discussion
Difficulty 5/5 Over a week Newbie friendliness 20/100
IJHack/QtPass#2000 · 1 reaction ·
Maintainers usually reply within 1 day
-
discussion help wanted
Difficulty 5/5 Over a week Newbie friendliness 8/100
IJHack/QtPass#1990 · 2 comments ·
Maintainers usually reply within 1 day
-
documentation enhancement
Difficulty 4/5 3-5 days Newbie friendliness 22/100
IJHack/QtPass#1989 · 1 comment ·
Maintainers usually reply within 1 day
-
refactoring
Difficulty 5/5 Over a week Newbie friendliness 15/100
IJHack/QtPass#1812 · 2 comments ·
Maintainers usually reply within 1 day
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
charmplusplus/charm#4210 ·
Maintainers usually reply within 1 day
-
[BUG] VPN auth dialog spawned by the secret agent fails with "TLS support is not available" on NixOSOpenbug nixos umbriel
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
noctalia-dev/noctalia#5310 ·
Maintainers usually reply within 1 day
-
area/docdb kind/bug priority/medium status/awaiting-triage
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
yugabyte/yugabyte-db#37426 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 63/100