如何通过Google Play API上传移动版与Android TV版Android APK?
用Google Play API上传移动/TV双版本APK的方案
刚好之前做过类似的多APK配置,结合你的需求(同一应用、共享测试渠道、TV版版本号远高于移动版),可以按照下面的步骤来操作:
核心前提确认
首先要明确Google Play的规则:同一应用的不同设备类型APK(移动/TV)可以共享测试渠道,且版本号无需保持一致——只要TV版APK在manifest里标记了android:isLeanbackOnly="true",移动版标记为false(默认就是false),Google Play会自动根据设备类型过滤分发,不会因为TV版版本号更高就给移动设备推TV版。
具体操作步骤(基于Google Play Developer API v3)
1. 准备APK的基础配置
确保两个APK的manifest满足设备类型识别要求:
- TV版APK:添加
<application android:isLeanbackOnly="true">(必须,否则Google Play不会识别为TV应用) - 移动版APK:无需额外配置(默认
isLeanbackOnly="false") - 版本号严格按照你的规则设置:比如移动版用10/11/12,TV版用10001/10010等整数版本号
2. 创建编辑会话
所有的APK上传和渠道配置都需要在一个编辑会话中完成,避免并发冲突。调用API的edits.insert方法:
from googleapiclient.discovery import build from oauth2client.service_account import ServiceAccountCredentials # 初始化API客户端 SCOPES = ['https://www.googleapis.com/auth/androidpublisher'] credentials = ServiceAccountCredentials.from_json_keyfile_name( "你的服务账号密钥文件.json", SCOPES) service = build('androidpublisher', 'v3', credentials=credentials) # 创建编辑会话 package_name = "com.your.app.package" edit_response = service.edits().insert(body={}, packageName=package_name).execute() edit_id = edit_response['id']
3. 上传两个APK到编辑会话
分别上传移动版和TV版APK,API会自动读取APK里的manifest信息识别设备类型:
# 上传移动版APK mobile_apk_path = "./mobile-release.apk" mobile_upload_response = service.edits().apks().upload( editId=edit_id, packageName=package_name, media_body=mobile_apk_path ).execute() mobile_version_code = mobile_upload_response['versionCode'] # 上传TV版APK tv_apk_path = "./tv-release.apk" tv_upload_response = service.edits().apks().upload( editId=edit_id, packageName=package_name, media_body=tv_apk_path ).execute() tv_version_code = tv_upload_response['versionCode']
4. 将APK分配到目标测试渠道
把两个APK的版本号添加到同一个测试渠道(alpha/beta)的发布版本中——因为设备类型不同,不会出现分发冲突:
target_track = "beta" # 替换成你的目标渠道:alpha/beta/production track_update_response = service.edits().tracks().update( editId=edit_id, packageName=package_name, track=target_track, body={ "releases": [ { "name": "移动+TV版本同步更新", "versionCodes": [str(mobile_version_code), str(tv_version_code)], "status": "completed" # 直接发布完成,也可以设为"draft"先保存 } ] } ).execute()
5. 提交编辑会话
所有配置完成后,提交会话让更改生效:
service.edits().commit(editId=edit_id, packageName=package_name).execute()
后续更新注意事项
- 如果只更新其中一个版本(比如只更移动版到13),只需上传新的移动版APK,然后在渠道的
versionCodes里添加新的版本号即可——Google Play会自动给移动设备推新版本,TV设备保持旧版本。 - 服务账号必须在Google Play Console中拥有发布者/开发者权限,否则API会返回权限错误。
- 上传的APK必须是签名后的Release版本,Debug版本无法通过API上传到Google Play。
内容的提问来源于stack exchange,提问作者Veaceslav Gaidarji
相关产品推荐
相关产品推荐

