我正在使用服务帐户来这样做。
每次运行脚本时,我的apk都会进入工件库,而不是进入内部测试轨道,并且apk不会推出。
当我在v2上使用我的脚本时,它将被设置为内部测试轨道,并且可以很好地发布和推出。
发生了什么变化?
from googleapiclient.discovery import build
from oauth2client.client import AccessTokenRefreshError
from oauth2client.service_account import ServiceAccountCredentials
import argparse
import httplib2
import json
import mimetypes
mimetypes.add_type('application/octet-stream', '.apk')
def upload(package, service, apk, track):
track = 'internal'
credentials = ServiceAccountCredentials.from_json_keyfile_name(
service, ['https://www.googleapis.com/auth/androidpublisher'])
service = build('androidpublisher', 'v3', credentials=credentials)
try:
edit_request = service.edits().insert(body={}, packageName=package)
result = edit_request.execute()
print(result)
edit_id = result['id']
apk_response = service.edits().apks().upload(
editId=edit_id,
packageName=package,
media_body=apk).execute()
print('Version code %d has been uploaded' %
apk_response['versionCode'])
track_response = service.edits().tracks().patch(
editId=edit_id,
track=track,
packageName=package,
body={u'releases': [{
u'name': 'xx',
u'versionCodes': [[apk_response['versionCode']]],
u'releaseNotes': [
{
u'language': 'en-US',
u'text': 'helloworld'
}
],
u'status': u'completed',
}]}).execute()
print(track_response)
commit_request = service.edits().commit(
editId=edit_id, packageName=package).execute()
print('Edit "%s" has been committed' % (commit_request['id']))
except AccessTokenRefreshError as e:
print('The credentials have been revoked or expired, please re-run the '
'application to re-authorize')
raise e
def main():
parser = argparse.ArgumentParser()
parser.add_argument('-p', '--package', required=True,
help='The package name. Example: com.android.sample')
parser.add_argument('-s', '--service', required=True,
help='The service account json file.')
parser.add_argument('-a', '--apk', required=True,
help='The path to the APK file to upload.')
parser.add_argument(
'-t', '--track', choices=['internal', 'alpha', 'beta', 'production', 'rollout'], default='alpha')
args = parser.parse_args()
upload(args.package, args.service, args.apk, args.track)
if __name__ == "__main__":
main()
答案 0 :(得分:0)
原始帖子中的脚本有错误。
render
应为:
u'versionCodes': [[apk_response['versionCode']]]
享受。