From 06082a5ebc1b3ffa0b0a4a9073f5794edcebb5ac Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Fri, 25 Sep 2026 14:34:42 +0200 Subject: [PATCH] Add support for uses-native-library --- cargo-apk/README.md | 7 +++++++ ndk-build/src/manifest.rs | 17 +++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/cargo-apk/README.md b/cargo-apk/README.md index 57169a4..b6b9244 100644 --- a/cargo-apk/README.md +++ b/cargo-apk/README.md @@ -214,6 +214,13 @@ value = "vr_only" # See https://developer.android.com/guide/topics/manifest/activity-element [package.metadata.android.application.activity] +# See https://developer.android.com/guide/topics/manifest/uses-native-library-element +# +# Note: there can be multiple .uses_native_library entries. +[[package.metadata.android.application.uses_native_library]] +name = "libOpenCL.so" +required = false + # See https://developer.android.com/guide/topics/manifest/activity-element#config # # Defaults to "orientation|keyboardHidden|screenSize". diff --git a/ndk-build/src/manifest.rs b/ndk-build/src/manifest.rs index 49ba0c7..aa3ebcc 100644 --- a/ndk-build/src/manifest.rs +++ b/ndk-build/src/manifest.rs @@ -81,6 +81,9 @@ pub struct Application { pub extract_native_libs: Option, #[serde(rename(serialize = "android:usesCleartextTraffic"))] pub uses_cleartext_traffic: Option, + #[serde(rename(serialize = "uses-native-library"))] + #[serde(default)] + pub uses_native_library: Vec, #[serde(rename(serialize = "meta-data"))] #[serde(default)] @@ -272,6 +275,20 @@ pub struct Permission { pub max_sdk_version: Option, } +/// Android [uses-permission element](https://developer.android.com/guide/topics/manifest/uses-permission-element). +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct NativeLibrary { + #[serde(rename(serialize = "android:name"))] + pub name: String, + #[serde(rename(serialize = "android:required"))] + #[serde(default = "default_required")] + pub required: bool, +} + +fn default_required() -> bool { + true +} + /// Android [package element](https://developer.android.com/guide/topics/manifest/queries-element#package). #[derive(Clone, Debug, Default, Deserialize, Serialize)] pub struct Package {