crossbundle_tools/types/android/
manifest.rs1pub use android_manifest;
2
3use super::AndroidStrategy;
4use android_manifest::*;
5
6pub fn update_android_manifest_with_default(
8 manifest: &mut AndroidManifest,
9 app_name: Option<String>,
10 package_name: &str,
11 strategy: super::AndroidStrategy,
12) {
13 if manifest.package.is_empty() {
14 manifest.package = format!("com.crossbow.{}", package_name.replace('-', "_"));
15 }
16 if manifest.version_name.is_none() {
17 manifest.version_name = Some("0.1.0".to_owned());
18 }
19 if manifest.version_code.is_none() {
20 manifest.version_code = Some(1_u32);
21 }
22 if manifest.uses_sdk.is_none() {
23 manifest.uses_sdk = Some(UsesSdk {
24 min_sdk_version: Some(19),
25 target_sdk_version: Some(31),
26 max_sdk_version: None,
27 });
28 }
29 if manifest.application.has_code.is_none() {
30 manifest.application.has_code = Some(strategy == AndroidStrategy::GradleApk);
31 }
32 if manifest.application.label.is_none() {
33 manifest.application.label = Some(StringResourceOrString::string(
34 &app_name.unwrap_or_else(|| "Crossbow".to_owned()),
35 ));
36 }
37 if manifest.application.theme.is_none() {
38 manifest.application.theme = Some(Resource::new_with_package(
39 "Theme.DeviceDefault.NoActionBar.Fullscreen",
40 Some("android".to_string()),
41 ));
42 }
43 if manifest.application.activity.is_empty() {
44 manifest.application.activity = vec![Activity::default()];
45 }
46 if manifest.application.activity.len() == 1 {
47 let mut activity = manifest.application.activity.get_mut(0).unwrap();
48 if activity.name.is_empty() {
49 activity.name = match strategy == AndroidStrategy::GradleApk {
50 true => "com.crossbow.game.CrossbowApp".to_string(),
51 false => "android.app.NativeActivity".to_string(),
52 };
53 }
54 if activity.resizeable_activity.is_none() {
55 activity.resizeable_activity = Some(true);
56 }
57 if activity.exported.is_none() {
58 activity.exported = Some(true);
59 }
60 if !activity
61 .meta_data
62 .iter()
63 .any(|m| m.name == Some("android.app.lib_name".to_string()))
64 {
65 activity.meta_data.push(MetaData {
66 name: Some("android.app.lib_name".to_string()),
67 value: Some(match strategy == AndroidStrategy::GradleApk {
68 true => "crossbow_android".to_string(),
69 false => package_name.replace('-', "_"),
70 }),
71 ..Default::default()
72 });
73 }
74 if activity.intent_filter.is_empty() {
75 activity.intent_filter = vec![IntentFilter {
76 action: vec![Action {
77 name: Some("android.intent.action.MAIN".to_string()),
78 }],
79 category: vec![Category {
80 name: Some("android.intent.category.LAUNCHER".to_string()),
81 }],
82 ..Default::default()
83 }];
84 }
85 }
86}