use super::application::Application;
use super::compatible_screens::CompatibleScreens;
use super::instrumentation::Instrumentation;
use super::permission::Permission;
use super::permission_group::PermissionGroup;
use super::permission_tree::PermissionTree;
use super::queries::Queries;
use super::resources::{Resource, StringResource};
use super::supports_gl_texture::SupportsGlTexture;
use super::supports_screens::SupportsScreens;
use super::uses_configuration::UsesConfiguration;
use super::uses_feature::UsesFeature;
use super::uses_permission::UsesPermission;
use super::uses_permission_sdk_23::UsesPermissionSdk23;
use super::uses_sdk::UsesSdk;
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Serialize, YaSerialize, YaDeserialize, PartialEq, Default, Clone)]
#[yaserde(
rename = "manifest",
namespaces = {
"android" = "http://schemas.android.com/apk/res/android",
"tools" = "http://schemas.android.com/tools"
}
)]
pub struct AndroidManifest {
#[yaserde(attribute = true)]
#[serde(skip_serializing_if = "Option::is_none")]
pub package: Option<String>,
#[yaserde(attribute = true, prefix = "android", rename = "sharedUserId")]
pub shared_user_id: Option<String>,
#[yaserde(attribute = true, prefix = "android", rename = "targetSandboxVersion")]
pub target_sandbox_version: Option<String>,
#[yaserde(attribute = true, prefix = "android", rename = "sharedUserLabel")]
pub shared_user_label: Option<Resource<StringResource>>,
#[yaserde(attribute = true, prefix = "android", rename = "versionCode")]
pub version_code: Option<u32>,
#[yaserde(attribute = true, prefix = "android", rename = "versionName")]
pub version_name: Option<String>,
#[yaserde(attribute = true, prefix = "android", rename = "installLocation")]
pub install_location: Option<InstallLocation>,
#[yaserde(attribute = true, prefix = "tools")]
pub ignore: Option<String>,
#[yaserde(attribute = true, prefix = "tools", rename = "targetApi")]
pub target_api: Option<String>,
#[yaserde(attribute = true, prefix = "tools")]
pub locale: Option<String>,
#[serde(default, skip_serializing_if = "Application::is_default")]
pub application: Application,
#[yaserde(rename = "uses-sdk")]
pub uses_sdk: Option<UsesSdk>,
#[yaserde(rename = "compatible-screens")]
pub compatible_screens: Option<CompatibleScreens>,
#[yaserde(rename = "uses-configuration")]
pub uses_configuration: Option<UsesConfiguration>,
pub queries: Option<Queries>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub instrumentation: Vec<Instrumentation>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub permission: Vec<Permission>,
#[yaserde(rename = "permission-group")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub permission_group: Vec<PermissionGroup>,
#[yaserde(rename = "permission-tree")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub permission_tree: Vec<PermissionTree>,
#[yaserde(rename = "supports-gl-texture")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub supports_gl_texture: Vec<SupportsGlTexture>,
#[yaserde(rename = "supports-screens")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub supports_screens: Vec<SupportsScreens>,
#[yaserde(rename = "uses-feature")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub uses_feature: Vec<UsesFeature>,
#[yaserde(rename = "uses-permission")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub uses_permission: Vec<UsesPermission>,
#[yaserde(rename = "uses-permission-sdk-23")]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub uses_permission_sdk_23: Vec<UsesPermissionSdk23>,
#[yaserde(attribute = true, prefix = "tools", rename = "shrinkMode")]
pub shrink_mode: Option<String>,
#[yaserde(attribute = true, prefix = "tools")]
pub keep: Option<String>,
#[yaserde(attribute = true, prefix = "tools")]
pub discard: Option<String>,
}
#[derive(Debug, Deserialize, Serialize, YaSerialize, YaDeserialize, PartialEq, Eq, Clone)]
#[serde(rename_all = "camelCase")]
#[derive(Default)]
pub enum InstallLocation {
#[yaserde(rename = "auto")]
Auto,
#[yaserde(rename = "internalOnly")]
#[default]
InternalOnly,
#[yaserde(rename = "preferExternal")]
PreferExternal,
}