Foreign Function Interfaces
DIDKit has bindings for various languages and environments. Each corresponding directory contains a README with additional info particular to it. The Makefile used to build all the libraries requires GNU Make.
Building and testing each library requires tools for the corresponding environment:
- C: C compiler and linker
- Java: JDK and JRE
- Android: Android NDK, SDK tools, and Rust Android targets
- Flutter: Flutter Build
To build all the libraries, run make
in the /lib/
directory of the DIDKit repo.
To build and test a particular library, see the instructions below.
#
C#
Build#
Test#
+ AndroidTo build the C shared library for Android targets, build the DIDKit Android library.
#
JavaJava bindings for DIDKit, using JNI. The JAR file includes Java class files. To use this in an application, you must also include the shared library (libdidkit.so
) in your application in your Java Library Path.
#
BuildRun:
To build the shared library for your current platform/architecture:
#
Test#
+ AndroidFor Android, build the separate Android library (AAR file) which includes the Java class files and shared libraries for all Android targets.
#
AndroidAndroid Library (AAR file) for DIDKit. The AAR file includes Java class files using JNI, and binary shared libraries for Android's supported architectures (x86, armeabi-v7a, arm64-v8a, x86_64). The AAR can be added to existing Android projects using Android Studio or Gradle.
#
RequiresAndroid SDK and NDK for Linux x86_64. The Android SDK is expected to be installed at ~/Android/Sdk
. If it is somewhere else instead, you can specify it with a Make variable, e.g. make ANDROID_SDK_ROOT=/other/location/android-sdk
.
Rust Android targets are also required. To install those with rustup
, run:
#
Build#
Make variablesANDROID_SDK_ROOT
- path to Android SDK. Default:~/Android/Sdk
ANDROID_TOOLS
- Android tools directory. Default is to pick one matching$(ANDROID_SDK_ROOT)/build-tools/*
.ANDROID_NDK_HOME
- Android NDK directory. Default is$(ANDROID_SDK_ROOT)/ndk-bundle)
if exists, or one matching$(ANDROID_SDK_ROOT)/ndk/*
.
#
FlutterFlutter plugin for the DIDKit library. Includes Dart bindings, and functionality for Android and iOS (WIP).
Flutter Doctor and CLI tools are also required.
#
UsageYou can depend on this plugin as a path dependency.
You will also need to build the DIDKit library for your target platforms. To do that for Android, trigger building the AAR file: