bdk-android
This project builds an .aar package for the android
platform that provide [Kotlin] language bindings for the [bdk
] library. The Kotlin language bindings are created by the [bdk-ffi
] project which is included in the root of this repository.
How to Use
To use the Kotlin language bindings for [bdk
] in your android
project add the following to your gradle dependencies:
repositories {
mavenCentral()
}
dependencies {
implementation("org.bitcoindevkit:bdk-android:<version>")
}
You may then import and use the org.bitcoindevkit
library in your Kotlin code. For example:
import org.bitcoindevkit.*
// ...
val externalDescriptor = "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)"
val internalDescriptor = "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/1/*)"
val databaseConfig = DatabaseConfig.Memory
val blockchainConfig =
BlockchainConfig.Electrum(
ElectrumConfig("ssl://electrum.blockstream.info:60002", null, 5u, null, 10u)
)
val wallet = Wallet(externalDescriptor, internalDescriptor, Network.TESTNET, databaseConfig, blockchainConfig)
val newAddress = wallet.getNewAddress()
Example Projects
How to build
Note that Kotlin version 1.6.10
or later is required to build the library.
- Clone this repository.
git clone https://github.com/bitcoindevkit/bdk-ffi
- Follow the "General" bdk-ffi ["Getting Started (Developer)"] instructions.
- If building on macOS install required intel and m1 jvm targets
- Install required targets
rustup target add x86_64-linux-android aarch64-linux-android armv7-linux-androideabi
- Install Android SDK and Build-Tools for API level 30+
- Setup
$ANDROID_SDK_ROOT
and$ANDROID_NDK_ROOT
path variables (which are required by the build tool), for example (NDK major version 21 is required):
export ANDROID_SDK_ROOT=~/Android/Sdk
export ANDROID_NDK_ROOT=$ANDROID_SDK_ROOT/ndk/21.<NDK_VERSION>
- Build kotlin bindings
# build Android library
cd bdk-android
./gradlew buildAndroidLib
- Start android emulator (must be x86_64) and run tests
./gradlew connectedAndroidTest
How to publish
Publish to your local maven repo
# bdk-android
cd bdk-android
./gradlew publishToMavenLocal --exclude-task signMavenPublication
Note that the commands assume you don't need the local libraries to be signed. If you do wish to sign them, simply set your ~/.gradle/gradle.properties
signing key values like so:
signing.gnupg.keyName=<YOUR_GNUPG_ID>
signing.gnupg.passphrase=<YOUR_GNUPG_PASSPHRASE>
and use the publishToMavenLocal
task without excluding the signing task:
./gradlew publishToMavenLocal