GradleAndroidRustPlugin
GradleAndroidRustPlugin copied to clipboard
AndroidRust Gradle Plugin
This plugin helps with building Rust JNI libraries with Cargo for use in Android projects.
Link to the plugin on the gradle repository: https://plugins.gradle.org/plugin/io.github.MatrixDev.android-rust
Usage
Add dependencies to the root build.gradle.kts
file
buildscript {
repositories {
maven("https://plugins.gradle.org/m2/")
}
dependencies {
classpath("io.github.MatrixDev.android-rust:plugin:0.3.2")
}
}
Add plugin to the module's build.gradle.kts
file
plugins {
id("io.github.MatrixDev.android-rust")
}
Add androidRust
configuration
androidRust {
module("rust-library") {
path = file("src/rust_library")
}
}
Additional configurations
This is the list of some additional flags that can be configured:
androidRust {
// MSRV, plugin will update rust if installed version is lower than requested
minimumSupportedRustVersion = "1.62.1"
module("rust-library") {
// path to your rust library
path = file("src/rust_library")
// default rust profile
profile = "release"
// default abi targets
targets = listOf("arm", "arm64")
// "debug" build type specific configuration
buildType("debug") {
// use "dev" profile in rust
profile = "dev"
}
// "release" build type specific configuration
buildType("release") {
// run rust tests before build
runTests = true
// build all supported abi versions
targets = listOf("arm", "arm64", "x86", "x86_64")
}
}
// more than one library can be added
module("additional-library") {
// ...
}
}
Development support
Plugin will check for a magic property android.injected.build.abi
set by Android Studio when
running application on device. This will limit ABI targets to only required by the device and
should speedup development quite a bit.
In theory this should behave the same as a built-in support for the NdkBuild / CMake.
Goals
- Building multiple rust libraries with ease
- Allow builds to be configurable for common scenarios
Non-goals
- Supporting all Gradle versions
- Allow builds to be configurable for exotic scenarios