diff --git a/ndk-build/src/apk.rs b/ndk-build/src/apk.rs index 3df2b8f..7653665 100644 --- a/ndk-build/src/apk.rs +++ b/ndk-build/src/apk.rs @@ -65,7 +65,7 @@ impl ApkConfig { self.build_dir.join(format!("{}.apk", self.apk_name)) } - pub fn create_apk(&self) -> Result { + pub fn create_apk(&self) -> Result, NdkError> { std::fs::create_dir_all(&self.build_dir)?; self.manifest.write_to(&self.build_dir)?; diff --git a/ndk-build/src/ndk.rs b/ndk-build/src/ndk.rs index ca017c2..7954dd9 100644 --- a/ndk-build/src/ndk.rs +++ b/ndk-build/src/ndk.rs @@ -130,8 +130,25 @@ impl Ndk { .filter(|path| path.path().is_dir()) .filter_map(|path| path.file_name().into_string().ok()) .filter_map(|name| { - name.strip_prefix("android-") - .and_then(|api| api.parse::().ok()) + let mut version = name + .strip_prefix("android-") + .expect("Invalid platform name"); + if let Some((_v, ext)) = version.split_once("-ext") { + // version = v; + let _ext_version = ext.parse::(); + eprintln!("Skipping platform SDK with extensions `{name}`"); + return None; + } + if let Some((v, minor_version)) = version.split_once('.') { + let _minor_version = minor_version.parse::(); + eprintln!("Ignoring minor suffix on SDK version `{version}`"); + version = v; + } + Some( + version + .parse::() + .expect("Invalid platform SDK version"), + ) }) .filter(|level| (min_platform_level..=max_platform_level).contains(level)) .collect(); @@ -214,6 +231,8 @@ impl Ndk { let dir = self .sdk_path .join("platforms") + // TODO: If selected/used by Self::highest_supported_platform(), + // append the minor suffix .join(format!("android-{platform}")); if !dir.exists() { return Err(NdkError::PlatformNotFound(platform));