diff options
| author | Adam Soltys <[email protected]> | 2026-09-04 20:48:27 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-09-04 20:48:27 -0700 |
| commit | 8d27a5d2c59e0f1824753d59a7326b6b76887bf7 (patch) | |
| tree | 5894488403d2f72b994255ba8ff6859121ead1d4 /android/build.gradle | |
| parent | 175600238fb3e9cf60bd65b0164ced476d18f445 (diff) | |
| download | coinosv3-8d27a5d2c59e0f1824753d59a7326b6b76887bf7.tar.gz coinosv3-8d27a5d2c59e0f1824753d59a7326b6b76887bf7.zip | |
Android wrapper app (android/): a minimal TWA around v3.coinos.io whose whole reason to exist is intent registration — lightning:/bitcoin:/nostr:/lnurl:/lnurlw:/lnurlp: VIEW intents and the same schemes via NFC NDEF dispatch (bolt cards, address stickers; NFC declared required=false), plus verified https links to the site. LauncherActivity forwards a scheme URI into the web app as ?u=<encoded>; the web app reads it BEFORE features construct — a nostr npub/nprofile rewrites itself onto the existing /npub profile deep link, payment URIs stash and dispatch through handleScanned (the QR path) once a wallet is open, and the param is stripped from the URL either way. assetlinks.json (static/.well-known/, copied by build.js) vouches for the signing cert so the TWA runs URL-bar-less; the built APK is served at /coinos.apk for sideloading. Signing keystore lives in android/ GITIGNORED (keystore.properties beside it) — the assetlinks fingerprint pins it, so losing it means re-shipping assetlinks too. Verified: headless ?u= routing (lightning → Send with invoice filled + URL cleaned; nostr → profile page), APK installed on a real phone via adb, schemes registered (chooser appears where other wallets also claim lightning:)
Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MGzU12QrAA4G6BYGzGVdXz
Diffstat (limited to 'android/build.gradle')
| -rw-r--r-- | android/build.gradle | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 0000000..18d1979 --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,9 @@ +// Android TWA wrapper for v3.coinos.io — exists so the app can register OS +// intent filters for lightning:/bitcoin:/nostr:/lnurl: URIs, which a plain +// PWA cannot (Chrome's protocol_handlers safelist has no nostr). The web +// app itself stays the live site; this shell just forwards intents into it. +buildscript { + repositories { google(); mavenCentral() } + dependencies { classpath 'com.android.tools.build:gradle:8.7.3' } +} +allprojects { repositories { google(); mavenCentral() } } |
