Skip to main content

rustferry_android/
lib.rs

1//! Direct Android SDK/NDK build, signing, and artifact validation.
2//!
3//! The pipeline intentionally does not invoke Gradle or require a device. It builds a Rust
4//! `cdylib`, consumes Cargo JSON build-script outputs, links resources with AAPT2, merges DEX
5//! with D8, injects stored native libraries, aligns to 16 KiB, signs, and validates the result.
6
7#![allow(clippy::too_many_lines)]
8
9mod apk;
10mod bridge;
11mod build;
12mod cargo_build;
13mod command;
14mod discovery;
15mod doctor;
16mod error;
17mod generate;
18mod signing;
19
20pub use apk::{
21    ApkExpectation, ApkValidation, ManifestValidation, NativeLibraryInput, collect_d8_outputs,
22    inject_apk_entries, validate_aapt2_badging, validate_aapt2_manifest, validate_apk_archive,
23};
24pub use bridge::{
25    ACTIVITY_CLASS, BRIDGE_CLASS, FILE_PROVIDER_CLASS, NOTIFICATION_RECEIVER_CLASS,
26    WIDGET_PROVIDER_CLASS,
27};
28pub use build::{
29    AndroidBuildArtifact, AndroidBuildOutcome, AndroidBuildPaths, AndroidBuildPlan,
30    AndroidBuildProfile, AndroidBuildRequest, AndroidPlanStep, AndroidPlanStepKind, DexPolicy,
31    build_android, plan_android_build,
32};
33pub use cargo_build::{
34    CargoBuildArtifacts, cargo_build_command, collect_cargo_artifacts, collect_explicit_dex_inputs,
35};
36pub use command::{CommandOutput, CommandSpec, DEFAULT_COMMAND_TIMEOUT, run_command};
37pub use discovery::{
38    AndroidBuildTools, AndroidDiscovery, AndroidHostTools, AndroidNdk, AndroidPlatform,
39    AndroidToolchain, DiscoveryOptions, discover_android,
40};
41pub use doctor::{DoctorCheck, DoctorOptions, DoctorReport, DoctorStatus, doctor_android};
42pub use error::AndroidError;
43pub use generate::{
44    GeneratedAndroidContent, GeneratedAndroidFiles, generate_android_content, write_android_content,
45};
46pub use signing::{
47    AndroidSigningConfig, DEBUG_KEY_ALIAS, DebugSigningPaths, ResolvedSigningConfig,
48    SigningPasswordSource, apksigner_sign_command, apksigner_verify_command,
49    default_debug_signing_paths, preview_signing_config, resolve_signing_config,
50};