AndroidBuilder

Struct AndroidBuilder 

Source
pub struct AndroidBuilder { /* private fields */ }
Available on crate feature full only.
Expand description

Android builder that handles the complete build pipeline.

This builder automates the process of compiling Rust code to Android native libraries, generating UniFFI Kotlin bindings, and packaging everything into an APK ready for deployment.

§Example

use mobench_sdk::builders::AndroidBuilder;
use mobench_sdk::{BuildConfig, BuildProfile, Target};

let builder = AndroidBuilder::new(".", "my-bench")
    .verbose(true)
    .output_dir("target/mobench");

let config = BuildConfig {
    target: Target::Android,
    profile: BuildProfile::Release,
    incremental: true,
};

let result = builder.build(&config)?;

Implementations§

Source§

impl AndroidBuilder

Source

pub fn new( project_root: impl Into<PathBuf>, crate_name: impl Into<String>, ) -> Self

Creates a new Android builder

§Arguments
  • project_root - Root directory containing the bench-mobile crate
  • crate_name - Name of the bench-mobile crate (e.g., “my-project-bench-mobile”)
Source

pub fn output_dir(self, dir: impl Into<PathBuf>) -> Self

Sets the output directory for mobile artifacts

By default, artifacts are written to {project_root}/target/mobench/. Use this to customize the output location.

Source

pub fn crate_dir(self, dir: impl Into<PathBuf>) -> Self

Sets the explicit crate directory

By default, the builder searches for the crate in this order:

  1. {project_root}/Cargo.toml - if it exists and has [package] name matching crate_name
  2. {project_root}/bench-mobile/ - SDK-generated projects
  3. {project_root}/crates/{crate_name}/ - workspace structure
  4. {project_root}/{crate_name}/ - simple nested structure

Use this to override auto-detection and point directly to the crate.

Source

pub fn verbose(self, verbose: bool) -> Self

Enables verbose output

Source

pub fn dry_run(self, dry_run: bool) -> Self

Enables dry-run mode

In dry-run mode, the builder prints what would be done without actually making any changes. Useful for previewing the build process.

Source

pub fn build(&self, config: &BuildConfig) -> Result<BuildResult, BenchError>

Builds the Android app with the given configuration

This performs the following steps: 0. Auto-generate project scaffolding if missing

  1. Build Rust libraries for Android ABIs using cargo-ndk
  2. Generate UniFFI Kotlin bindings
  3. Copy .so files to jniLibs directories
  4. Run Gradle to build the APK
§Returns
  • Ok(BuildResult) containing the path to the built APK
  • Err(BenchError) if the build fails

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.