Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

project-robius/android-build

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
25 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

android-build

Latest Version Docs Project Robius Matrix Chat

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.

Usage

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 in the Cargo-specified OUT_DIR.
    }
}

The above code will automatically run when you build your crate using cargo build.

Configuration via environment variables

The crate-level documentation provides a detailed list of environment variables that can be set to configure this crate.

Examples

Check out the robius-authentication build script to see how we use this crate for more complicated build procedures:

  • Discovering specific Android jarfiles and SDK directories (platforms, build tools, etc).
  • Compiling Java classes against the main android.jar jarfile.
  • Invoking Android's d8 DEXer tool.

About

Build Android/Java files from source during a Rust compilation process. Use this in your `build.rs` build script.

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.