Repository navigation
Expand file tree
/
Copy pathappmeta.schema.json
More file actions
113 lines (113 loc) · 4.49 KB
/
Copy pathappmeta.schema.json
File metadata and controls
113 lines (113 loc) · 4.49 KB
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://github.com/mobile-next/appmeta/schema/appmeta.schema.json",
"title": "appmeta output",
"description": "Metadata extracted from an Android .apk or iOS .ipa. String fields are empty when the binary does not declare them.",
"type": "object",
"additionalProperties": false,
"required": [
"schemaVersion", "format", "platform", "bundleId", "name", "version", "buildNumber",
"minOsVersion", "targetOsVersion", "isSimulator", "isDebuggable", "deviceFamilies",
"architectures", "permissions", "signing", "icon", "warnings"
],
"properties": {
"schemaVersion": { "const": 1 },
"format": { "enum": ["apk", "ipa"] },
"platform": { "enum": ["android", "ios"] },
"bundleId": {
"description": "Android package name or iOS CFBundleIdentifier.",
"type": "string",
"minLength": 1
},
"name": {
"description": "User-visible app name: the default-locale android:label, or CFBundleDisplayName / CFBundleName.",
"type": "string"
},
"version": {
"description": "android:versionName or CFBundleShortVersionString.",
"type": "string"
},
"buildNumber": {
"description": "android:versionCode or CFBundleVersion.",
"type": "string"
},
"minOsVersion": {
"description": "Minimum OS release, e.g. \"8.0\" (Android API 26 mapped to its release) or \"15.0\" (MinimumOSVersion). Unknown future Android API levels are reported as \"API <n>\".",
"type": "string"
},
"targetOsVersion": {
"description": "Android targetSdkVersion mapped to a release, or the iOS SDK the app was built with (DTPlatformVersion).",
"type": "string"
},
"isSimulator": {
"description": "True for iOS builds that run only on the simulator. Always false for Android.",
"type": "boolean"
},
"isDebuggable": {
"description": "android:debuggable, or get-task-allow in the iOS provisioning profile.",
"type": "boolean"
},
"deviceFamilies": {
"type": "array",
"items": { "enum": ["phone", "tablet", "tv", "watch", "car", "vision"] },
"uniqueItems": true
},
"architectures": {
"description": "Android ABIs from lib/ (empty for pure-Java apps), or Mach-O architectures of the iOS executable.",
"type": "array",
"items": { "type": "string" },
"uniqueItems": true
},
"permissions": {
"description": "Android uses-permission names. Always empty for iOS.",
"type": "array",
"items": { "type": "string" }
},
"signing": {
"description": "How the app is signed; null when it is unsigned (or, on iOS, has no provisioning profile). Android: \"debug\" when signed with the Android debug key (CN=Android Debug, O=Android, C=US), else \"release\"; teamId is empty and expiresAt null. iOS: the provisioning profile's type, team id and expiry. Signatures are not verified.",
"oneOf": [
{ "type": "null" },
{
"type": "object",
"additionalProperties": false,
"required": ["type", "teamId", "expiresAt"],
"properties": {
"type": { "enum": ["development", "ad-hoc", "enterprise", "app-store", "debug", "release"] },
"teamId": { "type": "string" },
"expiresAt": {
"oneOf": [{ "type": "null" }, { "type": "string", "format": "date-time" }]
}
}
}
]
},
"icon": {
"description": "App icon re-encoded as PNG, at most 512x512. Null when no raster icon could be extracted; a warning says why.",
"oneOf": [
{ "type": "null" },
{
"type": "object",
"additionalProperties": false,
"required": ["contentType", "width", "height", "sha256"],
"properties": {
"contentType": { "const": "image/png" },
"width": { "type": "integer", "minimum": 1, "maximum": 512 },
"height": { "type": "integer", "minimum": 1, "maximum": 512 },
"sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
"base64": {
"description": "The PNG bytes. Omitted when the caller asked for no icon data.",
"type": "string",
"contentEncoding": "base64",
"contentMediaType": "image/png"
}
}
}
]
},
"warnings": {
"description": "Human-readable notes about data that could not be extracted.",
"type": "array",
"items": { "type": "string" }
}
}
}