This project builds a .jar package for the JVM platform that provides Kotlin language bindings for the BDK libraries. The Kotlin language bindings are created by the bdk-ffi project which is included in the root of this repository.
To use the Kotlin language bindings for BDK in your JVM project add the following to your gradle dependencies:
repositories {
mavenCentral()
}
dependencies {
implementation("org.bitcoindevkit:bdk-jvm:<version>")
}To use a snapshot release, specify the snapshot repository url in the repositories block and use the snapshot version in the dependencies block:
repositories {
maven("https://s01.oss.sonatype.org/content/repositories/snapshots/")
}
dependencies {
implementation("org.bitcoindevkit:bdk-jvm:<version-SNAPSHOT>")
}Note that Kotlin version 1.9.23 or later is required to build the library.
- Install JDK 17. For example, with SDKMAN!:
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install java 17.0.2-tem- Build kotlin bindings
bash ./scripts/build-<your-local-architecture>.shThe examples module show different samples of how some of the APIs can be used. You can run the examples after building as stated above. The gradle task to run is by convention the file name of the example file.
./gradlew MultisigTransactionYou can also list the application tasks. (All examples grouped under application)
./gradlew tasks --group application./gradlew publishToMavenLocal -P localBuildNote 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 the localBuild flag:
./gradlew publishToMavenLocalDepending on the JVM version you use, you might not have the JNA dependency on your classpath. The exception thrown will be
class file for com.sun.jna.Pointer not foundThe solution is to add JNA as a dependency like so:
dependencies {
// ...
implementation("net.java.dev.jna:jna:5.12.1")
}