Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Naive package downloader for the Jetpack/AndroidX suite
- # Originally adapted from 'tiny-android-template.sh'
- # Check out https://developer.android.com/jetpack/androidx/versions for a list of packages and versions
- import requests
- import os
- import sys
- from simpparams import *
- from bs4 import BeautifulSoup
- commandlist = []
- commandmap = {}
- argc = len(sys.argv)
- package_source_url = "https://developer.android.com/jetpack/androidx/versions"
- PACKAGE_NAME = "appcompat"
- VERSION=""
- packages = {"activity": ["February 23, 2022", "1.4.0"],
- "ads": ["January 22, 2020", "-"],
- "annotation (*)": ["February 9, 2022", "1.3.0"],
- "appcompat": ["February 23, 2022", "1.4.1"],
- "appsearch": ["November 3, 2021", "-"],
- "arch.core": ["September 5, 2019", "2.1.0"],
- "asynclayoutinflater": ["September 21, 2018", "1.0.0"],
- "autofill": ["July 21, 2021", "1.1.0"],
- "benchmark": ["February 23, 2022", "1.0.0"],
- "biometric": ["November 17, 2021", "1.1.0"],
- "browser": ["November 3, 2021", "1.4.0"],
- "car-app": ["January 26, 2022", "1.1.0"],
- "camera (*)": ["February 23, 2022", "1.0.2"],
- "cardview": ["September 21, 2018", "1.0.0"],
- "collection": ["December 1, 2021", "1.2.0"],
- "compose": ["February 23, 2022", "1.1.1"],
- "compose.animation": ["February 23, 2022", "1.1.1"],
- "compose.compiler": ["February 23, 2022", "1.1.1"],
- "compose.foundation": ["February 23, 2022", "1.1.1"],
- "compose.material": ["February 23, 2022", "1.1.1"],
- "compose.material3": ["February 23, 2022", "-"],
- "compose.runtime": ["February 23, 2022", "1.1.1"],
- "compose.ui": ["February 23, 2022", "1.1.1"],
- "concurrent": ["August 19, 2020", "1.1.0"],
- "constraintlayout (*)": ["Jan 13, 2022", "2.1.3"],
- "contentpager": ["September 21, 2018", "1.0.0"],
- "coordinatorlayout": ["January 12, 2022", "1.2.0"],
- "core (*)": ["February 23, 2022", "1.7.0"],
- "cursoradapter": ["September 21, 2018", "1.0.0"],
- "customview": ["February 23, 2022", "1.1.0"],
- "databinding": ["September 5, 2019", "3.5.0"],
- "datastore": ["August 4, 2021", "1.0.0"],
- "documentfile": ["August 18, 2021", "1.0.1"],
- "draganddrop": ["February 23, 2022", "-"],
- "drawerlayout": ["September 2, 2020", "1.1.1"],
- "dynamicanimation": ["December 4, 2019", "-"],
- "emoji": ["January 27, 2021", "1.1.0"],
- "emoji2": ["February 23, 2022", "1.1.0"],
- "enterprise": ["January 13, 2021", "1.1.0"],
- "exifinterface": ["August 4, 2021", "1.3.3"],
- "fragment": ["February 23, 2022", "1.4.1"],
- "games (*)": ["February 23, 2022", "1.1.0"],
- "glance": ["February 23, 2022", "-"],
- "gridlayout": ["September 21, 2018", "1.0.0"],
- "health": ["November 3, 2021", "-"],
- "heifwriter": ["January 22, 2020", "-"],
- "hilt (*)": ["January 26, 2022", "1.0.0"],
- "interpolator": ["September 21, 2018", "1.0.0"],
- "jetifier": ["September 2, 2020", "-"],
- "leanback": ["November 17, 2021", "-"],
- "legacy": ["September 21, 2018", "1.0.0"],
- "lifecycle (*)": ["February 23, 2022", "2.4.1"],
- "loader": ["October 9, 2019", "1.1.0"],
- "localbroadcastmanager": ["January 12, 2022", "1.1.0"],
- "media": ["February 23, 2022", "1.5.0"],
- "media2": ["February 9, 2022", "1.2.1"],
- "media3": ["October 27, 2021", "-"],
- "mediarouter": ["January 26, 2022", "1.2.6"],
- "multidex": ["December 17, 2018", "2.0.1"],
- "metrics": ["February 9, 2022", "-"],
- "navigation": ["February 23, 2022", "2.4.1"],
- "paging (*)": ["November 17, 2021", "3.1.0"],
- "palette": ["September 21, 2018", "1.0.0"],
- "percentlayout": ["September 21, 2018", "1.0.0"],
- "preference": ["January 26, 2022", "1.2.0"],
- "print": ["October 28, 2020", "-"],
- "profileinstaller": ["February 9, 2022", "1.1.0"],
- "recommendation": ["September 21, 2018", "1.0.0"],
- "recyclerview (*)": ["September 15, 2021", "1.2.1"],
- "remotecallback": ["May 7, 2019", "1.0.0"],
- "resourceinspection": ["January 26, 2022", "1.0.1"],
- "room": ["February 23, 2022", "2.4.2"],
- "savedstate": ["January 26, 2022", "1.1.0"],
- "security (*)": ["September 1, 2021", "1.0.0"],
- "sharetarget": ["November 3, 2021", "1.1.0"],
- "slice": ["January 13, 2021", "-"],
- "slidingpanelayout": ["January 26, 2022", "1.2.0"],
- "startup": ["February 9, 2022", "1.1.1"],
- "sqlite": ["February 23, 2022", "2.2.0"],
- "swiperefreshlayout": ["July 22, 2020", "1.1.0"],
- "test (*)": ["February 11, 2022", "1.0.0"],
- "textclassifier": ["January 22, 2020", "-"],
- "tracing": ["December 1, 2021", "1.0.0"],
- "transition": ["April 21, 2021", "1.4.1"],
- "tvprovider": ["August 19, 2020", "-"],
- "vectordrawable": ["August 19, 2020", "1.1.0"],
- "versionedparcelable": ["April 15, 2020", "1.1.1"],
- "viewpager": ["September 15, 2021", "1.0.0"],
- "viewpager2": ["August 4, 2021", "1.0.0"],
- "wear (*)": ["February 23, 2022", "1.2.0"],
- "wear.compose": ["February 23, 2022", "-"],
- "wear.tiles": ["February 23, 2022", "1.0.1"],
- "wear.watchface": ["February 9, 2022", "1.0.1"],
- "webkit": ["December 16, 2020", "1.4.0"],
- "window": ["January 26, 2022", "1.0.0"],
- "work": ["January 12, 2022", "2.7.1"]}
- print("Android package grabber script")
- print("Usage: ")
- print(" get_android_packages.py <package name> -v <version> -p|-b|-h")
- SDK_DIR="../Sdk"
- TOOLS_DIR=SDK_DIR+"/android-11"
- PLATFORM_DIR=SDK_DIR+"/android-11"
- REPO="https://dl.google.com/dl/android/maven2/"
- PKG_OUTPUT="lib"
- CMD_SED="sed"
- CMD_ADB=os.path.join("/platform-tools/adb")
- CMD_D8="javac -Xmx1024M -Xss1m -cp "+TOOLS_DIR+"/lib/d8.jar com.android.tools.r8.D8"
- def ensure_dir(file_path):
- directory = os.path.dirname(file_path)
- if not os.path.exists(directory):
- os.makedirs(directory)
- def get(package_name, version):
- package_name = package_name.replace(" (*)", "")
- print("Grabbing " + package_name + " v" + version)
- fname = package_name + "-" + version+".aar"
- url= REPO + "androidx/"+package_name+ "/"+package_name+"/"+version +"/"+ fname
- if verbose:
- print(url)
- r = requests.get(url)
- #print(r.headers)
- if r.status_code == 200:
- ensure_dir("libs\\")
- fullname = os.path.abspath(os.path.join("libs", fname))
- with open(fullname,"wb") as f:
- print("saving " + str(len(r.content)) + " bytes as '" + fullname + "'")
- f.write(r.content)
- r.close()
- return True
- else:
- print("There was a problem retrieving that library")
- print("Status code: " + str(r.status_code))
- print("Reason: " + str(r.reason))
- return False
- def scrape_package_list():
- try:
- html_text = requests.get(package_source_url).text
- soup = BeautifulSoup(html_text, 'html.parser')
- #print(soup)
- tables = soup.find_all("table")
- packages = {}
- for table in tables:
- tr = table.find_all("tr")
- for r in tr:
- text = ""
- package = []
- cc = r.find_all("td")
- for c in cc:
- package.append(c.get_text(strip=True))
- if len(package):
- packages[package[0]] = package[1:3]
- return packages
- except Exception as e:
- print(str(e))
- return None
- verbose = False
- if argc > 1:
- print("commands found")
- print(sys.argv)
- commandlist, commandmap, nonswitchcommands = get_parameter_commands(sys.argv)
- print(commandlist)
- print(commandmap)
- if argc > 2:
- PACKAGE_NAME = sys.argv[1]
- print("Set package name to " + PACKAGE_NAME)
- if argc > 3:
- if isDigit(sys.argv[2]):
- VERSION = sys.argv[2]
- print("Set Version to " + VERSION)
- if '-v' in commandmap:
- if isDigit(commandmap['v']):
- VERSION = commandmap['v']
- print("Set Version to " + VERSION)
- if '-b' in commandmap:
- verbose = True
- if '-p' in commandmap:
- print("Package list:")
- for pidx in packages:
- p = packages[pidx]
- if len(p)>=2:
- print("package: " + pidx + ", release date: " + p[0] + ", version: " + p[1])
- if '-h' in commandmap:
- print(" get_android_packages.py <package name> -v|-h|-p")
- print(" <package name> is any package current supported in the maven repository")
- print(" -v : specify exact version (e.g. 1.0.0). If omitted, the latest version will be used")
- print(" -h : prints this message")
- print(" -p : lists currently available packages, their release date and version number")
- print(" -b : verbose output" )
- print(" -a : download all java libraries" )
- if '-a' in commandmap:
- oklist = {}
- for pidx in packages:
- oklist[pidx] = get(pidx, packages[pidx][1])
- for pidx in packages:
- if oklist[pidx]:
- print(pidx + " downloaded correctly")
- else:
- print(pidx + " did *not* download correctly")
- PACKAGE_NAME = None
- if VERSION == "":
- if packages == None:
- packages = scrape_package_list()
- if PACKAGE_NAME in packages:
- VERSION = packages[PACKAGE_NAME][1]
- if PACKAGE_NAME != None and PACKAGE_NAME not in packages:
- print("Warning: Package '" + PACKAGE_NAME + "' not found in package list")
- #import simpparams
- latest_packages = scrape_package_list()
- if latest_packages != None and len(latest_packages) > 0:
- packages = latest_packages
- if PACKAGE_NAME != None:
- get(PACKAGE_NAME, VERSION)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement