BDK UniFFI Language Bindings
Setup Android build environment
- Add Android rust targets
rustup target add x86_64-apple-darwin x86_64-unknown-linux-gnu x86_64-linux-android aarch64-linux-android armv7-linux-androideabi i686-linux-android
- Set ANDROID_NDK_HOME
export ANDROID_NDK_HOME=/home/<user>/Android/Sdk/ndk/<NDK version, ie. 21.4.7075529>
Setup Swift build environment
1. install Swift, see ["Download Swift"](https://swift.org/download/) page  
   (or on Mac OSX install the latest Xcode)
Setup UniFFI
1. `cargo install uniffi_bindgen`
Adding new structs and functions
See the UniFFI User Guide
For pass by value objects
- create new rust struct with only fields that are supported UniFFI types
- update mapping bdk.udlfile with newdictionary
For pass by reference values
- create wrapper rust struct/impl with only fields that are Sync + Send
- update mapping bdk.udlfile with newinterface
Build and test
- Use build.shscript (TODO do it all in build.rs instead)
- Create tests in bindings/bdk-kotlinand/orbindings/bdk-swift
- Use test.shto run all bindings tests
					Languages
				
				
								
								
									Rust
								
								64.6%
							
						
							
								
								
									Kotlin
								
								18.1%
							
						
							
								
								
									Swift
								
								9.5%
							
						
							
								
								
									Python
								
								4.6%
							
						
							
								
								
									Shell
								
								2.2%
							
						
							
								
								
									Other
								
								1%