【问题标题】:Google Play Developer Api - Cannot fully publish via python v3Google Play Developer Api - 无法通过 python v3 完全发布
【发布时间】:2019-12-04 17:37:53
【问题描述】:

我正在使用服务帐户来执行此操作。

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

【问题讨论】:

  • 总是在你发帖后你才明白。脚本中有错误。 u'versionCodes': [[apk_response['versionCode']]] 应该是:u'versionCodes': [apk_response['versionCode']]。

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


【解决方案1】:

原帖中的脚本有错误。

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

应改为:

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

享受吧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 2018-08-28
    • 1970-01-01
    • 2019-11-23
    • 2015-06-07
    • 2018-02-13
    相关资源
    最近更新 更多