1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
use serde::{Deserialize, Serialize}; /// Specifies a shared library that the application must be linked against. /// /// This element tells the system to include the library's code in the class loader for /// the package. All of the android packages (such as [`android.app`], /// [`android.content`], [`android.view`], and [`android.widget`]) are in the default /// library that all applications are automatically linked against. However, /// some packages (such as maps) are in separate libraries that are not /// automatically linked. Consult the documentation for the packages you're /// using to determine which library contains the package code. /// /// ## Node /// Google Play uses the <uses-library> elements declared in your app manifest to filter /// your app from devices that don't meet its library requirements. For more information /// about filtering, see the topic [`Google Play filters`]. /// /// This element also affects the installation of the application on a particular device /// and the availability of the application on Google Play: /// /// ## Installation /// If this element is present and its android:required attribute is set to true, the /// [`PackageManager`] framework won't let the user install the application unless the /// library is present on the user's device. /// /// The `android:required` attribute is described in detail in the following /// section. /// /// ## XML Syntax /// ```xml /// <uses-library /// android:name="string" /// android:required=["true" | "false"] /> /// ``` /// /// ## Contained in /// [`<application>`] /// /// ## introduced in /// API Level 1 /// /// [`android.app`]: https://developer.android.com/reference/android/app/package-summary /// [`android.content`]: https://developer.android.com/reference/android/content/package-summary /// [`android.view`]: https://developer.android.com/reference/android/view/package-summary /// [`android.widget`]: https://developer.android.com/reference/android/widget/package-summary /// [`PackageManager`]: https://developer.android.com/reference/android/content/pm/PackageManager /// [`Google Play filters`]: https://developer.android.com/google/play/filters /// [`<application>`]: crate::Application #[derive(Debug, Deserialize, Serialize, YaSerialize, YaDeserialize, PartialEq, Default, Clone)] pub struct UsesLibrary { /// The name of the library. The name is provided by the documentation for the package /// you are using. An example of this is `"android.test.runner"`, a package that /// contains Android test classes. #[yaserde(attribute, prefix = "android")] pub name: Option<String>, /// Boolean value that indicates whether the application requires the library /// specified by android:name: /// * `"true":` The application does not /// function without this library. The system will not allow the application /// on a device that does not have the library. /// * `"false":` The application can use the library if present, but is /// designed to function without it if necessary. The system will allow /// the application to be installed, even if the library is not present. /// If you use `"false"`, you are responsible for checking at runtime that /// the library is available. /// /// To check for a library, you can use reflection to determine if a particular class /// is available. /// /// The default is `"true"`. /// /// Introduced in: API Level 7. #[yaserde(attribute, prefix = "android")] pub required: Option<bool>, }