blob: 2ae22016d9dffaf6fc672f8b3798e28ffbe9b702 [file] [log] [blame] [view]
# np_adv Java FFI
This package defines a Java interface for the `np_adv` library.
This package is split into directories:
* `java/` - The Java library with `native` methods.
* `src/` - The Rust library that implements the `native` Java methods.
- `classes/` - Contains Rust files matching Java classes from `java/`. Code in these files will implement the `native` methods for the associated Java class.
* `test/` - Java tests that test the Java library and underlying native code.
The build is controlled by the following files:
* `build.gradle.kts` - Defines the builds for `java/` and `test/` along with Java dependencies for the Java library.
- `settings.gradle.kts` - Defines where local Java dependencies are located.
* `Cargo.toml` - Defines the Rust .so binary that is loaded by the Java library.
This library defines the following build_scripts actions:
* `run-np-java-ffi-tests` - Builds the package and runs the Java test suite.
Additional configs for external use:
* `AndroidManifest.xml` - Defines the Android `minSdkVersion` required by the Java library.
* `used_by_native.pgcfg` - Defines proguard exclusions for the `@UsedByNative` annotation, so that native code can access Java structures.