executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
bitcoin-libraries-bdk-jvmbdk-jvm / bdk-android: Kotlin/Java bindings to BDK. Same descriptor- first wallet API. UniFFI-generated. USE WHEN: building JVM / Android wallets with BDK quality.
Independent GitHub snapshot · Automated classification · Original documentation governs
JVM bindings to Rust BDK.
Repos (as of September 2026):
github.com/bitcoindevkit/bdk-jvm (JVM desktop) — split out of bdk-ffi
into its own repo in July 2025.github.com/bitcoindevkit/bdk-ffi, bdk-android/ subdirectory (Android) —
still built from the bdk-ffi monorepo.Both artifacts are at 3.1.0 (September 2026), built on bdk-ffi 3.1.0 / bdk_wallet 3.1.0 / uniffi 0.31.2.
Gradle (Android):
implementation 'org.bitcoindevkit:bdk-android:3.1.0'
Gradle (JVM):
implementation 'org.bitcoindevkit:bdk-jvm:3.1.0'
import org.bitcoindevkit.*
// Since 3.0.0 (June 2026) the Descriptor constructor takes a NetworkKind.
val descriptor = Descriptor("wpkh(xprv.../84h/0h/0h/0/*)", NetworkKind.MAIN)
val change = Descriptor("wpkh(xprv.../84h/0h/0h/1/*)", NetworkKind.MAIN)
// Persistence is a Persister object, not a bare path string.
val persister = Persister.newSqlite("/path/to/db.sqlite")
val wallet = Wallet(descriptor, change, Network.BITCOIN, persister)
// Scans go through a request builder; the client never touches the wallet.
val esplora = EsploraClient("https://mempool.space/api")
val request = wallet.startFullScan().build()
wallet.applyUpdate(esplora.fullScan(request, 10uL, 1uL))
wallet.persist(persister)
val addr = wallet.revealNextAddress(KeychainKind.EXTERNAL)
println(addr.address)
Reopen an existing wallet with Wallet.load(descriptor, change, persister);
Wallet.createSingle(descriptor, network, persister) builds a
single-descriptor wallet.
See bitcoinj/SKILL.md for comparison.
.so files per Android architecture; APK size grows. 3.1.0 ships
arm64-v8a, armeabi-v7a and x86_64 (32-bit x86 is not built).minSdk 24 and targets JVM 17, bdk-jvm 3.1.0 targets JVM 11.