我正在使用服务帐户来这样做。
每次运行脚本时,我的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,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',help='The service account json file.')
parser.add_argument('-a','--apk',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()