{"id":19885888,"url":"https://github.com/konjoinfinity/btc-dev-kit-ios","last_synced_at":"2026-05-13T06:39:07.489Z","repository":{"id":91144461,"uuid":"424790966","full_name":"konjoinfinity/btc-dev-kit-ios","owner":"konjoinfinity","description":null,"archived":false,"fork":false,"pushed_at":"2021-11-05T01:39:44.000Z","size":126,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-28T15:21:12.836Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/konjoinfinity.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-05T01:20:51.000Z","updated_at":"2023-11-30T02:07:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"c35e43b3-bfd0-4a69-aa18-fa286680d5a9","html_url":"https://github.com/konjoinfinity/btc-dev-kit-ios","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konjoinfinity%2Fbtc-dev-kit-ios","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konjoinfinity%2Fbtc-dev-kit-ios/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konjoinfinity%2Fbtc-dev-kit-ios/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konjoinfinity%2Fbtc-dev-kit-ios/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/konjoinfinity","download_url":"https://codeload.github.com/konjoinfinity/btc-dev-kit-ios/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241313182,"owners_count":19942417,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-12T17:35:44.409Z","updated_at":"2026-05-13T06:39:07.463Z","avatar_url":"https://github.com/konjoinfinity.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Foreign language bindings for BDK (bdk-ffi)\n\nThis repository contains source code for generating foreign language bindings\nfor the rust library bdk for the Bitcoin Dev Kit (BDK) project.\n\n## Supported target languages and platforms\n\n| Language | Platform | Status |\n| --- | --- | --- |\n| Kotlin | JVM | WIP |\n| Kotlin | Android | WIP |\n| Swift | iOS | WIP |\n\n## Getting Started\n\nThis project uses rust. A basic knowledge of the rust ecosystem is helpful.\n\n### General\n1. Install `uniffi-bindgen`\n    ```sh\n    cargo install uniffi_bindgen\n    ```\n1. See the [UniFFI User Guide](https://mozilla.github.io/uniffi-rs/) for more info\n\n### Kotlin Bindings for JVM (OSX / Linux)\n\n1. Install required targets\n    ```sh\n      rustup target add x86_64-apple-darwin x86_64-unknown-linux-gnu\n    ```\n1. Build kotlin (JVM) bindings\n    ```sh\n      ./build.sh -k\n    ```\n1. Generated kotlin bindings are available at `/bindings/bdk-kotlin/`\n1. A demo app is available at `/bindings/bdk-kotlin/demo/`. It uses stdin for\ninputs and can be run from gradle.\n    ```sh\n    cd bindings/bdk-kotlin\n    ./gradlew :demo:run\n    ```\n\n### Kotlin bindings for Android\n\n1. Install required targets\n    ```sh\n    rustup target add x86_64-linux-android aarch64-linux-android\n    armv7-linux-androideabi i686-linux-android\n    ```\n1. Install Android SDK and Build-Tools for API level 30+\n1. Setup `$ANDROID_NDK_HOME` and `$ANDROID_SDK_ROOT` path variables (which are\nrequired by the build scripts)\n1. Build kotlin (Android) bindings\n    ```sh\n    ./build.sh -a\n    ```\n2. A demo android app is available at [notmandatory/bdk-sample-app](https://github.com/notmandatory/bitcoindevkit-android-sample-app/tree/upgrade-to-bdk-ffi/)\n\n### Swift bindings for iOS\n\n1. Install the latest version of xcode, download and install the advanced tools.\n1. Ensure Swift is installed\n1. Install required targets\n    ```sh\n    rustup target add aarch64-apple-ios x86_64-apple-ios\n    ```\n1. Build swift (iOS) bindings\n    ```sh\n    ./build.sh -s\n    ```\n1. Example iOS app can be found in `/examples/iOS` which can be run by xcode.\n\n## Notes\n\n### Adding new structs and functions\n\nSee the [UniFFI User Guide](https://mozilla.github.io/uniffi-rs/)\n\n#### For pass by value objects\n\n1. create new rust struct with only fields that are supported UniFFI types\n1. update mapping `bdk.udl` file with new `dictionary`\n\n#### For pass by reference values \n\n1. create wrapper rust struct/impl with only fields that are `Sync + Send`\n1. update mapping `bdk.udl` file with new `interface`\n\n## Goals\n\n1. Language bindings should feel idiomatic in target languages/platforms\n1. Adding new targets should be easy\n1. Getting up and running should be easy\n1. Contributing should be easy\n1. Get it right, then automate\n\n## Thanks\n\nThis project is made possible thanks to the wonderful work on [mozilla/uniffi-rs](https://github.com/mozilla/uniffi-rs)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkonjoinfinity%2Fbtc-dev-kit-ios","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkonjoinfinity%2Fbtc-dev-kit-ios","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkonjoinfinity%2Fbtc-dev-kit-ios/lists"}