diff --git a/apk/src/manifest.rs b/apk/src/manifest.rs index c1e4ffd..4afc7c9 100644 --- a/apk/src/manifest.rs +++ b/apk/src/manifest.rs @@ -25,9 +25,13 @@ pub struct AndroidManifest { #[serde(rename(serialize = "uses-sdk"))] #[serde(default)] pub sdk: Sdk, + #[serde(rename(serialize = "xmlns:tools"))] + pub xmlns_tools: Option, #[serde(rename(serialize = "uses-feature"))] #[serde(default)] pub uses_feature: Vec, + #[serde(rename(serialize = "tools:replace"))] + pub tools_replace: Option, #[serde(rename(serialize = "uses-permission"))] #[serde(default)] pub uses_permission: Vec, @@ -46,6 +50,8 @@ impl Default for AndroidManifest { uses_feature: Default::default(), uses_permission: Default::default(), application: Default::default(), + xmlns_tools: Default::default(), + tools_replace: Default::default(), compile_sdk_version: Default::default(), compile_sdk_version_codename: Default::default(), platform_build_version_code: Default::default(), @@ -82,6 +88,8 @@ pub struct Application { #[serde(rename(serialize = "activity"))] #[serde(default)] pub activities: Vec, + #[serde(rename(serialize = "tools:replace"))] + pub tools_replace: Option, } /// Android [activity element](https://developer.android.com/guide/topics/manifest/activity-element). diff --git a/xbuild/src/config.rs b/xbuild/src/config.rs index d5d204f..be06c4b 100644 --- a/xbuild/src/config.rs +++ b/xbuild/src/config.rs @@ -430,6 +430,8 @@ pub struct AndroidConfig { pub manifest: AndroidManifest, #[serde(default)] pub dependencies: Vec, + #[serde(default)] + pub aars: Vec, /// Defaults to [`false`], but uses [`true`] when the user builds a format that requires /// `gradle` (i.e. [`Format::Aab`]). #[serde(default)] diff --git a/xbuild/src/gradle/mod.rs b/xbuild/src/gradle/mod.rs index 3595533..5ad6037 100644 --- a/xbuild/src/gradle/mod.rs +++ b/xbuild/src/gradle/mod.rs @@ -66,6 +66,11 @@ pub fn build(env: &BuildEnv, libraries: Vec<(Target, PathBuf)>, out: &Path) -> R dependencies.push_str(&format!("implementation '{dep}'\n")); } + for aar in &config.aars { + let aar = env.root_dir().join(aar).as_os_str().to_str().unwrap().to_string(); + dependencies.push_str(&format!("implementation files('{aar}.aar')\n")); + } + let asset_packs = if config.assets.is_empty() { "" } else { @@ -90,12 +95,12 @@ pub fn build(env: &BuildEnv, libraries: Vec<(Target, PathBuf)>, out: &Path) -> R }} {asset_packs} }} + dependencies {{ {dependencies} }} "#, ); - let pack_name = "baseAssets"; let base_assets = gradle.join(pack_name); // Make sure that any possibly-obsolete asset pack does not clobber the build diff --git a/xbuild/src/gradle/settings.gradle b/xbuild/src/gradle/settings.gradle index 9f5af3e..1ddf912 100644 --- a/xbuild/src/gradle/settings.gradle +++ b/xbuild/src/gradle/settings.gradle @@ -3,6 +3,9 @@ pluginManagement { gradlePluginPortal() google() mavenCentral() + flatDir { + dirs 'libs' + } } } dependencyResolutionManagement {