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
use serde::{Deserialize, Serialize}; /// This spec contains Android-specific settings. #[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)] pub struct Spec { /// This is the package identifier for Android that uniquely identifies your /// app on a user's device and within the Google Play Store. The package /// identifier usually looks like a reverse DNS name. The package identifier /// must contain of at least two segments, each segment must start with a /// letter and can only contain alphanumeric characters. pub package: String, /// This is the version code for Android. The version code is used to /// determine the order of multiple releases of the same app. Each /// subsequent release must have a version code that is strictly greater /// than the previous release's version code (but it is allowed to skip /// version codes in between). Additionally, this is also used by the OS to /// deny downgrades to earlier versions of your app (e.g. to protect against /// cases where you introduce backwards incompatible changes to a persistent /// storage format). #[serde(rename = "version-code")] pub version_code: usize, /// This is the minimum API version that your app supports. If you're not /// bringing in your own native Java code, this should generally not be /// changed. In any case, don't change this to an API version lower than the /// Polyhorn default (16), because our own Java code might not be compatible /// with earlier API versions. #[serde(rename = "min-sdk-version", default = "Spec::default_min_sdk_version")] pub min_sdk_version: usize, /// This is the target API version that your app uses to build. We're /// currently compiling native Java code against the most recent Android API /// level. If you don't bring in your own Java code, you shouldn't need to /// change this. Even if you do bring in your own Java code, it's unlikely /// that you need to change this. #[serde( rename = "target-sdk-version", default = "Spec::default_target_sdk_version" )] pub target_sdk_version: usize, /// This is the name of the shared library that will contain your Rust code. /// End users will not be aware of this. It simply refers to the name of the /// shared library that will reside in `jniLibs/*`. Usually, this will be /// the lowercased last segment of the package identifier. pub library: String, } impl Spec { fn default_min_sdk_version() -> usize { 16 } fn default_target_sdk_version() -> usize { 30 } }