ref: AndroidSdkMap

This commit is contained in:
relikd
2025-11-30 16:41:58 +01:00
parent 76e7e22b49
commit d0da644c26
5 changed files with 58 additions and 54 deletions

45
src/AndroidSdkMap.swift Normal file
View File

@@ -0,0 +1,45 @@
// see https://developer.android.com/guide/topics/manifest/uses-sdk-element#api-level-table
let AndroidSdkMap: [Int: String] = [
1: "1.0",
2: "1.1",
3: "1.5",
4: "1.6",
5: "2.0",
6: "2.0.1",
7: "2.1.x",
8: "2.2.x",
9: "2.3, 2.3.1, 2.3.2",
10: "2.3.3, 2.3.4",
11: "3.0.x",
12: "3.1.x",
13: "3.2",
14: "4.0, 4.0.1, 4.0.2",
15: "4.0.3, 4.0.4",
16: "4.1, 4.1.1",
17: "4.2, 4.2.2",
18: "4.3",
19: "4.4",
20: "4.4W",
21: "5.0",
22: "5.1",
23: "6.0",
24: "7.0",
25: "7.1, 7.1.1",
26: "8.0",
27: "8.1",
28: "9",
29: "10",
30: "11",
31: "12",
32: "12",
33: "13",
34: "14",
35: "15",
36: "16",
// can we assume new versions will stick to this scheme?
37: "17",
38: "18",
39: "19",
40: "20",
]

View File

@@ -13,8 +13,8 @@ struct ApkManifest {
var appIconData: Data? = nil
var versionName: String? = nil
var versionCode: String? = nil
var sdkVerMin: String? = nil
var sdkVerTarget: String? = nil
var sdkVerMin: Int? = nil
var sdkVerTarget: Int? = nil
var featuresRequired: [String] = []
var featuresOptional: [String] = []
@@ -122,8 +122,8 @@ private class ApkXmlManifestParser: NSObject, XMLParserDelegate {
}
case "uses-sdk":
if _scope == ["manifest"] {
result.sdkVerMin = attrs["android:minSdkVersion"] ?? "1" // "21"
result.sdkVerTarget = attrs["android:targetSdkVersion"] // "35"
result.sdkVerMin = Int(attrs["android:minSdkVersion"] ?? "1") // "21"
result.sdkVerTarget = Int(attrs["android:targetSdkVersion"] ?? "-1") // "35"
}
default: break // ignore
}

View File

@@ -1,5 +1,3 @@
import Foundation
/*
#!/usr/bin/env python3
# download: https://itunes.apple.com/WebObjects/MZStoreServices.woa/ws/genres

View File

@@ -19,7 +19,7 @@ extension PreviewGenerator {
])
}
/// Process info stored in `Info.plist`
/// Process info stored in `AndroidManifest.xml`
mutating func procAppInfoAndroid(_ manifest: ApkManifest) {
let featReq = manifest.featuresRequired
let featOpt = manifest.featuresOptional
@@ -29,8 +29,8 @@ extension PreviewGenerator {
"<pre>\(list.joined(separator: "\n"))</pre>"
}
func resolveSDK(_ sdk: String?) -> String {
sdk == nil ? "" : "\(sdk!) (Android \(ANDROID_SDK_MAP[sdk!] ?? "?"))"
func resolveSDK(_ sdk: Int?) -> String {
sdk == nil ? "" : "\(sdk!) (Android \(AndroidSdkMap[sdk!] ?? "?"))"
}
self.apply([
"AppInfoHidden": CLASS_VISIBLE,
@@ -53,46 +53,3 @@ extension PreviewGenerator {
}
}
private let ANDROID_SDK_MAP: [String: String] = [
"1": "1.0",
"2": "1.1",
"3": "1.5",
"4": "1.6",
"5": "2.0",
"6": "2.0.1",
"7": "2.1.x",
"8": "2.2.x",
"9": "2.3, 2.3.1, 2.3.2",
"10": "2.3.3, 2.3.4",
"11": "3.0.x",
"12": "3.1.x",
"13": "3.2",
"14": "4.0, 4.0.1, 4.0.2",
"15": "4.0.3, 4.0.4",
"16": "4.1, 4.1.1",
"17": "4.2, 4.2.2",
"18": "4.3",
"19": "4.4",
"20": "4.4W",
"21": "5.0",
"22": "5.1",
"23": "6.0",
"24": "7.0",
"25": "7.1, 7.1.1",
"26": "8.0",
"27": "8.1",
"28": "9",
"29": "10",
"30": "11",
"31": "12",
"32": "12",
"33": "13",
"34": "14",
"35": "15",
"36": "16",
// can we assume new versions will stick to this scheme?
"37": "17",
"38": "18",
"39": "19",
"40": "20",
]