1 个不稳定版本
0.1.0 | 2024 年 5 月 22 日 |
---|
196 在 构建实用工具 中排名 #196
53 每月下载次数
在 3 个crate(2 个直接)中使用
36KB
516 行
android-build
使用此 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