crossbundle_tools/types/android/
strategies.rs

1use crate::error::AndroidError;
2use serde::{Deserialize, Serialize};
3
4/// Supported strategies for building Android application.
5#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, Deserialize, Serialize)]
6pub enum AndroidStrategy {
7    /// Generate .apk with Gradle. Default strategy.
8    #[default]
9    #[serde(rename = "gradle-apk")]
10    GradleApk,
11    /// Generate native .aab without Gradle. This strategy currently doesn't support
12    /// Crossbow plugins.
13    #[serde(rename = "native-apk")]
14    NativeApk,
15    /// Generate native .apk without Gradle. This strategy currently doesn't support
16    /// Crossbow plugins.
17    #[serde(rename = "native-aab")]
18    NativeAab,
19}
20
21impl std::str::FromStr for AndroidStrategy {
22    type Err = AndroidError;
23
24    fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
25        match s {
26            "gradle-apk" => Ok(Self::GradleApk),
27            "native-apk" => Ok(Self::NativeApk),
28            "native-aab" => Ok(Self::NativeAab),
29            _ => Err(AndroidError::InvalidBuildStrategy(s.to_owned())),
30        }
31    }
32}