Java and Android

both Java and Android developers access DIDKit through the Java bindings

At a Glance

  • DIDKit exposes a straightforward set of Java bindings, using the Java Native Interface (JNI).
  • The JAR file includes all of DIDKit's Java class files. To use this in an application, you must also include the shared library ( in your application in the Java library path.
  • For a quick function & type reference, you can study the file.
  • All the low-level calls that the Rust library exposes to JNI are documented in the JNI section of the Rust documentation.


Install Rust and DIDKit as usual and then:


# from DIDKit root directory:
make -C lib ../target/didkit.jar
To build the shared library for your current platform/architecture:
# from DIDKit root directory:
make -C lib ../target/release/


# from DIDKit root directory:
make -C lib ../target/tests/java.stamp

+ Android

For Android, build the separate Android library (AAR file) which includes the Java class files and shared libraries for all Android targets.


​Android 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.


Android 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:
//from root directory of didkit project
make -C lib install-rustup-androidCopy


//from root directory of didkit project
make -C lib ../target/test/aar.stampCopy
Make variables
  • ANDROID_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/*.


Authentication, Tomcat, CHAPI
Authentication, Maven, MySQL, Redis
Last modified 8mo ago