python - 如何使用 Google Play Publisher API 将应用程序包 (.aab) 上传到 Play 商店
问题描述
我已经配置并使用 API 来上传 .apk 文件,并且使用这个代码文件可以完美地工作。
"""Uploads an apk to the alpha track."""
import argparse
import sys
from apiclient import sample_tools
from oauth2client import client
TRACK = 'alpha' # Can be 'alpha', beta', 'production' or 'rollout'
# Declare command-line flags.
argparser = argparse.ArgumentParser(add_help=False)
argparser.add_argument('package_name',
help='The package name. Example: com.android.sample')
argparser.add_argument('apk_file',
nargs='?',
default='test.apk',
help='The path to the APK file to upload.')
def main(argv):
# Authenticate and construct service.
service, flags = sample_tools.init(
argv,
'androidpublisher',
'v3',
__doc__,
__file__, parents=[argparser],
scope='https://www.googleapis.com/auth/androidpublisher')
# Process flags and read their values.
package_name = flags.package_name
apk_file = flags.apk_file
try:
edit_request = service.edits().insert(body={}, packageName=package_name)
result = edit_request.execute()
edit_id = result['id']
apk_response = service.edits().apks().upload(
editId=edit_id,
packageName=package_name,
media_body=apk_file).execute()
print 'Version code %d has been uploaded' % apk_response['versionCode']
track_response = service.edits().tracks().update(
editId=edit_id,
track=TRACK,
packageName=package_name,
body={u'releases': [{
u'name': u'My first API release',
u'versionCodes': [str(apk_response['versionCode'])],
u'status': u'completed',
}]}).execute()
print 'Track %s is set with releases: %s' % (
track_response['track'], str(track_response['releases']))
commit_request = service.edits().commit(
editId=edit_id, packageName=package_name).execute()
print 'Edit "%s" has been committed' % (commit_request['id'])
except client.AccessTokenRefreshError:
print ('The credentials have been revoked or expired, please re-run the '
'application to re-authorize')
if __name__ == '__main__':
main(sys.argv)
但是此代码不适用于应用程序包。
解决方案
如果googleapiclient.errors.UnknownFileType
发生异常,请尝试添加以下代码:
import mimetypes
mimetypes.add_type("application/octet-stream", ".apk")
mimetypes.add_type("application/octet-stream", ".aab")
如果socket.timeout
发生异常,请尝试添加以下代码:
import socket
socket.setdefaulttimeout(7 * 24 * 60 * 60)
推荐阅读
- gensim - 在 Gensim Word2vec 中,如何减少现有模型的词汇量?
- c++ - 是否可以定义一个可以将模板化对象作为参数的非模板函数
- python - 将一行中的字符数计数为新列
- sql - 我的 Sql PIVOT 查询未按预期工作
- reactjs - 无法为 React Material Web Components (RMWC) 更改 React 组件中的字体系列
- ssl - 生成报告后,Odoo 停留在加载屏幕中
- ios - IOS:自我管理的电信
- python - 我将如何更改此代码以显示它是“向上”、“向下”还是“与前一个数字相同”?
- node.js - 将元数据访问到 noFlo 中的组件
- c - 可变参数函数的分配因指针类型不兼容而失败