appcenter-docs
appcenter-docs copied to clipboard
How to change version when upload a .apk file
Hello everyone, I need some help with change versions when i upload a build I use python script for upload a file After upload name of release: 1 v0.0.1 2 v0.0.1 4 v0.0.1 3 v0.0.1 how can i change name (1,2,3,4 and version v0.0.1)
# coding=utf-8
import base64, requests, os, sys, random, subprocess, time
# HTTP Logs
# httplib.HTTPConnection.debuglevel = 2
POLLING_TIMEOUT_MINUTES = 5
POLLING_INTERVAL_SECONDS = 5
artifact_file = sys.argv[1]
organization_name = sys.argv[2]
token = sys.argv[3]
app_name = sys.argv[4]
release_group_id = sys.argv[5]
default_headers = {
"X-API-Token" : token,
"Accept" : "application/json",
"Content-Type" : "application/json"
}
print
print("-------- Prepare Upload Stage --------")
request = "https://api.appcenter.ms/v0.1/apps/%s/%s/uploads/releases" % (organization_name, app_name)
print("POST: %s" % request)
response = requests.post(request, headers = default_headers)
print("Response code: %s" % response.status_code)
print("Response body: %s" % response.content)
release_id = response.json()['id']
package_asset_id = response.json()['package_asset_id']
url_encoded_token = response.json()['url_encoded_token']
upload_domain = response.json()['upload_domain']
print
print("-------- Get Upload Id Stage --------")
apk_size = os.path.getsize(artifact_file)
content_type = "application/vnd.android.package-archive"
file_name = os.path.basename(artifact_file)
request = "https://file.appcenter.ms/upload/set_metadata/%s?file_name=%s&file_size=%s&token=%s&content_type=%s" % (package_asset_id, file_name, apk_size, url_encoded_token, content_type)
print("POST: %s" % request)
response = requests.post(request, headers = default_headers)
print("Response code: %s" % response.status_code)
print("Response body: %s" % response.content)
upload_id = response.json()['id']
chunk_size = response.json()['chunk_size']
print
print("-------- Upload Artifact Chunks Stage --------")
artifact_dir = os.path.dirname(artifact_file)
chunks_dir = artifact_dir + "/chunks"
os.mkdir(chunks_dir)
chunk_name = chunks_dir + "/chunk_"
subprocess.call(['split', '-b', str(chunk_size), artifact_file, chunk_name])
block_number = 0
for chunk_name in sorted(os.listdir(chunks_dir)):
print
block_number += 1
chunk_path = os.path.join(chunks_dir, chunk_name)
chunk_size = os.path.getsize(chunk_path)
print("chunk path: %s" % chunk_path)
print("chunk size: %s" % chunk_size)
headers = {
"Content-Length": str(chunk_size),
"Content-Type": "application/octet-stream"
}
request = "%s/upload/upload_chunk/%s?token=%s&block_number=%s" % (upload_domain, package_asset_id, url_encoded_token, block_number)
print("POST: %s" % request)
response = requests.post(request, data = open(chunk_path, 'rb'), headers = headers)
print("Response code: %s" % response.status_code)
print("Response body: %s" % response.content)
print
print("-------- Upload Complete Stage --------")
request = "https://file.appcenter.ms/upload/finished/%s?token=%s" % (package_asset_id, url_encoded_token)
print("POST: %s" % request)
response = requests.post(request, headers = default_headers)
print("Response code: %s" % response.status_code)
print("Response body: %s" % response.content)
print
print("-------- Commit Upload Stage --------")
request = "https://api.appcenter.ms/v0.1/apps/%s/%s/uploads/releases/%s" % (organization_name, app_name, release_id)
body = {
"upload_status": "uploadFinished",
"id": release_id
}
print("PATCH: %s" % request)
response = requests.patch(request, headers = default_headers, json = body)
print("Response code: %s" % response.status_code)
print("Response body: %s" % response.content)
print
print("-------- Get Release Number Stage --------")
request = "https://api.appcenter.ms/v0.1/apps/%s/%s/uploads/releases/%s" % (organization_name, app_name, release_id)
timeout = time.time() + 60 * POLLING_TIMEOUT_MINUTES
print("Starting polling...")
while True:
print
print("GET: %s" % request)
response = requests.get(request, headers = default_headers)
print("Response code: %s" % response.status_code)
print("Response body: %s" % response.content)
if response.json()['upload_status'] == "readyToBePublished":
release_number = response.json()['release_distinct_id']
break
elif time.time() > timeout:
print("Cannot get release number. Quit...")
quit()
else:
time.sleep(POLLING_INTERVAL_SECONDS)
#print
#print("-------- Distribute Stage --------")
#request = "https://api.appcenter.ms/v0.1/apps/%s/%s/releases/%s/groups" % (organization_name, app_name, release_number)
#print("POST: %s" % request)
#body = {
# "id": release_group_id,
# "mandatory_update": False,
# "notify_testers": False
#}
response = requests.post(request, headers = default_headers, json = body)
print("Response code: %s" % response.status_code)
#print("Response body: %s" % response.content)
Hi @AdilkhanKTR I am trying to upload apk to app center via API using gradle script.I am getting an error while uploading chunk {"error":true,"chunk_num":1,"error_code":"InvalidLength","message":"Invalid chunk length. ChunkNumber: 3 Expected: 4194304 Actual: 978056"}
APK size will change for every project So how can be all the chunk would be same size which is 4194304.
My Actual APK size is 13560968,after spilting into 4 chunks,three chunk size will be 4194304, 4th one will be 978056.But app center expecting 4th one also should be 4194304.How we can resolve this issue?