Google Play开发人员Api-无法通过python v3完全发布

时间:2019-12-04 17:37:53

标签: python api google-play-console google-play-developer-api

我正在使用服务帐户来这样做。

每次运行脚本时,我的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()

1 个答案:

答案 0 :(得分:0)

原始帖子中的脚本有错误。

render

应为:

u'versionCodes': [[apk_response['versionCode']]]

享受。

相关问题