Development is primarily done in a macOS environment (10.14.6 confirmed) but should function in Linux environments as well (untested).
- XCode (v11.2.1 confirmed)
- XCode Command Line Tools
- Android Studio (v3.4.2 confirmed)
- Android SDK Platform installed (Android 9.0 SDK Platform confirmed)
- LLDB, CMake and NDK installed
The Java language binding is broken down into three major components:
- corenative: contains a thin layer exposing the underlying C core functionality (via JNA)
- crypto: contains the BlockchainDB client and core interfaces
- corecrypto: contains the implementation of the crypto interfaces using the corenative primitives
For the corenative and corecrypto projects, there are bindings for both Android and JRE that can be used for the appropriate platform.
In addition, there is a cryptodemo-android project that demonstrates how the corecrypto-android module can be used to interact with a wallet.
- Launch Android Studio
- Select Open an existing Android Studio project
- Select the Java directory
- Build the project via the menu (Build -> Make Project)
- Launch your favourite terminal application
- From the Java directory, run your desired gradle task (ex: ./gradlew assemble)
Build outputs can be found under the build subdirectory of the individual sub-projects (ex: ./corenative-android/build).
The build system currently only builds corenative-jre and corecrypto-jre for the host platform. We are relying on the Gradle native plugins for builds and they do not support building for other platforms at the moment (see issue).
At some point, multiplatform builds will be supported for those core modules; whether that is due to Gradle adding proper support or a different build solution being used is to be determined.