diff --git a/UPLOAD_APP_REMOTE.md b/UPLOAD_APP_REMOTE.md index 5f84cc0..58d9d48 100644 --- a/UPLOAD_APP_REMOTE.md +++ b/UPLOAD_APP_REMOTE.md @@ -19,13 +19,15 @@ Create a JSON file with app metadata. All fields except `screenshots` are requir "screenshots": [], "package_name": "com.your.package", "version_name": "1.0", - "version_code": "1", - "min_sdk": "26", - "target_sdk": "34", + "version_code": 1, + "min_sdk": 26, + "target_sdk": 34, "permissions": ["android.permission.INTERNET"] } ``` +**Note:** `version_code`, `min_sdk`, and `target_sdk` can be integers or strings — the server converts them automatically. + **Field notes:** - **`name`**: Human-readable display name shown in the store - **`description`**: Short description shown in app details diff --git a/server/main.py b/server/main.py index 0626f67..2c813b6 100644 --- a/server/main.py +++ b/server/main.py @@ -309,6 +309,11 @@ async def upload_app( apk_target.unlink(missing_ok=True) raise HTTPException(400, f"Metadata JSON requires: {', '.join(missing)}") + # Coerce numeric fields to strings for consistency + for key in ("version_name", "version_code", "min_sdk", "target_sdk"): + if key in metadata_json: + metadata_json[key] = str(metadata_json[key]) + json_target = REPO_PATH / f"{target_id}.json" json_target.write_text(json.dumps(metadata_json, indent=2)) diff --git a/server/scanner.py b/server/scanner.py index 01b6a5b..fe4d4e5 100644 --- a/server/scanner.py +++ b/server/scanner.py @@ -202,15 +202,15 @@ def scan_repository(repo_path: str) -> List[Dict]: app = { "id": apk_file.stem, "package_name": metadata["package_name"], - "version_name": metadata["version_name"] or "unknown", - "version_code": metadata["version_code"] or "0", + "version_name": str(metadata["version_name"]) if metadata["version_name"] else "unknown", + "version_code": str(metadata["version_code"]) if metadata["version_code"] else "0", "name": metadata["label"] or apk_file.stem, "description": "", "icon": metadata["icon"], "size": apk_file.stat().st_size, "file_path": str(apk_file), - "min_sdk": metadata["min_sdk"], - "target_sdk": metadata["target_sdk"], + "min_sdk": str(metadata["min_sdk"]) if metadata["min_sdk"] else None, + "target_sdk": str(metadata["target_sdk"]) if metadata["target_sdk"] else None, "permissions": metadata["permissions"], } @@ -222,9 +222,11 @@ def scan_repository(repo_path: str) -> List[Dict]: info = json.load(f) for key in ("name", "description", "icon", "package_name", "version_name", "version_code", "min_sdk", - "target_sdk", "permissions", "screenshots"): + "target_sdk", "screenshots"): if key in info: - app[key] = info[key] + app[key] = str(info[key]) if key in ("version_name", "version_code", "min_sdk", "target_sdk") else info[key] + if "permissions" in info: + app["permissions"] = info["permissions"] apps.append(app)