#构建脚本 #android #构建 #cargo-build #java #robius #java-class

构建 android-build

作为 Rust 构建的一部分,编译 Java 源文件用于 Android 的构建时依赖。您可以从您的 build.rs Cargo 构建脚本中使用此工具

1 个不稳定版本

0.1.0 2024 年 5 月 22 日

196构建实用工具 中排名 #196

Download history 116/week @ 2024-05-18 19/week @ 2024-05-25 14/week @ 2024-06-01 13/week @ 2024-06-08 10/week @ 2024-06-15 16/week @ 2024-06-22 7/week @ 2024-06-29 48/week @ 2024-07-06 4/week @ 2024-07-27

53 每月下载次数
3crate(2 个直接)中使用

MIT 许可证

36KB
516

android-build

Latest Version Docs Project Robius Matrix Chat

使用此 crate 从您的 Cargo build.rs 构建脚本中编译 Java 源文件,并在 Rust 构建过程中运行 Java/Android 命令,特别设计用于 Android 目标构建和 Android 工具。

此 crate 旨在与 cc-rs 类似,但针对 Java(主要在 Android 上)而不是 C/C++。

此 crate 是 Project Robius 的一部分,主要用于这些 crate。

用法

将此 crate 添加到您的 Cargo.toml 作为构建依赖项

[build-dependencies]
android-build = "0.1.0"

然后将其添加到您的 build.rs 构建脚本中

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.
    }
}

上述代码将在您使用 cargo build 构建crate时自动运行。

通过环境变量进行配置

crate 级别文档 提供了可以设置以配置此 crate 的环境变量的详细列表。

示例

查看 robius-authentication 构建脚本,了解我们如何使用此 crate 进行更复杂的构建过程

  • 发现特定的 Android jar 文件和 SDK 目录(平台、构建工具等)。
  • 针对主 android.jar jar 文件编译 Java 类。
  • 调用 Android 的 d8 DEXer 工具。

依赖关系

~0–8MB
~54K SLoC