Crates.io | android-build |
lib.rs | android-build |
version | 0.1.0 |
source | src |
created_at | 2024-05-22 23:19:17.250199 |
updated_at | 2024-05-22 23:19:17.250199 |
description | A build-time dependency to compile Java source files for Android as part of a Rust build. Use this from your `build.rs` Cargo build script. |
homepage | https://robius.rs/ |
repository | https://github.com/project-robius/android-build |
max_upload_size | |
id | 1248886 |
size | 36,782 |
Use this crate from your Cargo build.rs
build script to compile Java source files and to run Java/Android commands as part of a Rust build,
specifically designed for Android-targeted builds and Android tools.
This crate aims to behave similarly to cc-rs
, but for Java (primarily on Android) instead of C/C++.
This crate is part of Project Robius and is primarily used by those crates.
Add this crate as a build dependency to your Cargo.toml
:
[build-dependencies]
android-build = "0.1.0"
Then add this to your build.rs
build script:
fn main() {
let target_os = std::env::var("CARGO_CFG_TARGET_OS").unwrap();
if target_os == "android" {
let output_dir = std::env::var("OUT_DIR").unwrap();
let android_jar_path = android_build::android_jar(None)
.expect("Failed to find android.jar");
android_build::JavaBuild::new()
.class_path(android_jar_path)
.classes_out_dir(std::path::PathBuf::from(output_dir))
.file("YourJavaFile.java")
.compile()
.expect("java build failed!");
// `YourJavaFile.class` will be the Cargo-specified OUT_DIR.
}
}
The above code will automatically run when you build your crate using cargo build
.
The crate-level documentation provides a detailed list of environment variables that can be set to configure this crate.
Check out the robius-authentication
build script to see how we use this crate for more complicated build procedures:
android.jar
jarfile.d8
DEXer tool.