Download GApps by Android version (#280)

This commit is contained in:
Howard Wu 2022-12-08 16:06:23 +08:00 committed by GitHub
parent 78a408de0c
commit c9e4374c2f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 52 additions and 34 deletions

1
.gitattributes vendored
View File

@ -1,3 +1,4 @@
*.py text eol=lf
*.sh text eol=lf *.sh text eol=lf
*.exe binary *.exe binary
*.apk binary *.apk binary

View File

@ -42,6 +42,10 @@ SUDO="$(which sudo 2>/dev/null)"
if [ -z "$SUDO" ]; then if [ -z "$SUDO" ]; then
unset SUDO unset SUDO
fi fi
WSA_WORK_ENV="${WORK_DIR:?}"/ENV
if [ -f "$WSA_WORK_ENV" ]; then rm -f "${WSA_WORK_ENV:?}"; fi
touch "$WSA_WORK_ENV"
export WSA_WORK_ENV
umount_clean() { umount_clean() {
if [ -d "$MOUNT_DIR" ]; then if [ -d "$MOUNT_DIR" ]; then
echo "Cleanup Work Directory" echo "Cleanup Work Directory"
@ -88,7 +92,7 @@ abort() {
} }
trap abort INT TERM trap abort INT TERM
function Gen_Rand_Str { Gen_Rand_Str() {
tr -dc 'a-zA-Z0-9' </dev/urandom | fold -w "$1" | head -n 1 tr -dc 'a-zA-Z0-9' </dev/urandom | fold -w "$1" | head -n 1
} }
@ -324,6 +328,7 @@ require_su() {
} }
declare -A RELEASE_NAME_MAP=(["retail"]="Retail" ["RP"]="Release Preview" ["WIS"]="Insider Slow" ["WIF"]="Insider Fast") declare -A RELEASE_NAME_MAP=(["retail"]="Retail" ["RP"]="Release Preview" ["WIS"]="Insider Slow" ["WIF"]="Insider Fast")
declare -A ANDROID_API_MAP=(["30"]="11.0" ["32"]="12.1" ["33"]="13.0")
RELEASE_NAME=${RELEASE_NAME_MAP[$RELEASE_TYPE]} || abort RELEASE_NAME=${RELEASE_NAME_MAP[$RELEASE_TYPE]} || abort
echo -e "Build: RELEASE_TYPE=$RELEASE_NAME" echo -e "Build: RELEASE_TYPE=$RELEASE_NAME"
@ -345,22 +350,33 @@ if [ "$CUSTOM_MAGISK" ]; then
fi fi
fi fi
fi fi
if [ "$GAPPS_BRAND" = "OpenGApps" ]; then ANDROID_API=32
GAPPS_PATH="$DOWNLOAD_DIR"/OpenGApps-$ARCH-$GAPPS_VARIANT.zip update_gapps_zip_name() {
else if [ "$GAPPS_BRAND" = "OpenGApps" ]; then
GAPPS_PATH="$DOWNLOAD_DIR"/MindTheGapps-"$ARCH".zip ANDROID_API=30
fi GAPPS_ZIP_NAME="$GAPPS_BRAND-$ARCH-${ANDROID_API_MAP[$ANDROID_API]}-$GAPPS_VARIANT".zip
else
GAPPS_ZIP_NAME="$GAPPS_BRAND-$ARCH-${ANDROID_API_MAP[$ANDROID_API]}".zip
fi
GAPPS_PATH=$DOWNLOAD_DIR/$GAPPS_ZIP_NAME
}
update_gapps_zip_name
if [ -z "${OFFLINE+x}" ]; then if [ -z "${OFFLINE+x}" ]; then
trap 'rm -f -- "${DOWNLOAD_DIR:?}/${DOWNLOAD_CONF_NAME}"' EXIT trap 'rm -f -- "${DOWNLOAD_DIR:?}/${DOWNLOAD_CONF_NAME}"' EXIT
require_su require_su
echo "Generate Download Links" echo "Generate Download Links"
python3 generateWSALinks.py "$ARCH" "$RELEASE_TYPE" "$DOWNLOAD_DIR" "$DOWNLOAD_CONF_NAME" || abort python3 generateWSALinks.py "$ARCH" "$RELEASE_TYPE" "$DOWNLOAD_DIR" "$DOWNLOAD_CONF_NAME" || abort
# shellcheck disable=SC1091
source "${WORK_DIR:?}/ENV" || abort
if [[ "$DOWN_WSA_MAIN_VERSION" -ge 2211 ]]; then
ANDROID_API=33
update_gapps_zip_name
fi
if [ -z "${CUSTOM_MAGISK+x}" ]; then if [ -z "${CUSTOM_MAGISK+x}" ]; then
python3 generateMagiskLink.py "$MAGISK_VER" "$DOWNLOAD_DIR" "$DOWNLOAD_CONF_NAME" || abort python3 generateMagiskLink.py "$MAGISK_VER" "$DOWNLOAD_DIR" "$DOWNLOAD_CONF_NAME" || abort
fi fi
if [ "$GAPPS_BRAND" != "none" ]; then if [ "$GAPPS_BRAND" != "none" ]; then
python3 generateGappsLink.py "$ARCH" "$GAPPS_BRAND" "$GAPPS_VARIANT" "$DOWNLOAD_DIR" "$DOWNLOAD_CONF_NAME" || abort python3 generateGappsLink.py "$ARCH" "$GAPPS_BRAND" "$GAPPS_VARIANT" "$DOWNLOAD_DIR" "$DOWNLOAD_CONF_NAME" "$ANDROID_API" "$GAPPS_ZIP_NAME" || abort
fi fi
echo "Download Artifacts" echo "Download Artifacts"
@ -391,10 +407,6 @@ fi
echo "Extract WSA" echo "Extract WSA"
if [ -f "$WSA_ZIP_PATH" ]; then if [ -f "$WSA_ZIP_PATH" ]; then
WSA_WORK_ENV="${WORK_DIR:?}"/ENV
if [ -f "$WSA_WORK_ENV" ]; then rm -f "${WSA_WORK_ENV:?}"; fi
touch "$WSA_WORK_ENV"
export WSA_WORK_ENV
if ! python3 extractWSA.py "$ARCH" "$WSA_ZIP_PATH" "$WORK_DIR"; then if ! python3 extractWSA.py "$ARCH" "$WSA_ZIP_PATH" "$WORK_DIR"; then
echo "Unzip WSA failed, is the download incomplete?" echo "Unzip WSA failed, is the download incomplete?"
CLEAN_DOWNLOAD_WSA=1 CLEAN_DOWNLOAD_WSA=1
@ -403,6 +415,10 @@ if [ -f "$WSA_ZIP_PATH" ]; then
echo -e "Extract done\n" echo -e "Extract done\n"
# shellcheck disable=SC1091 # shellcheck disable=SC1091
source "${WORK_DIR:?}/ENV" || abort source "${WORK_DIR:?}/ENV" || abort
if [[ "$WSA_MAIN_VER" -ge 2211 ]]; then
ANDROID_API=33
update_gapps_zip_name
fi
else else
echo "The WSA zip package does not exist, is the download incomplete?" echo "The WSA zip package does not exist, is the download incomplete?"
exit 1 exit 1

View File

@ -1,4 +1,4 @@
#!/usr/bin/python #!/usr/bin/python3
# #
# This file is part of MagiskOnWSALocal. # This file is part of MagiskOnWSALocal.
# #

View File

@ -1,4 +1,4 @@
#!/usr/bin/python #!/usr/bin/python3
# #
# This file is part of MagiskOnWSALocal. # This file is part of MagiskOnWSALocal.
# #
@ -47,14 +47,12 @@ with zipfile.ZipFile(wsa_zip_path) as zip:
long_ver = ver_no[1] long_ver = ver_no[1]
ver = long_ver.split(".") ver = long_ver.split(".")
main_ver = ver[0] main_ver = ver[0]
with open(os.environ['WSA_WORK_ENV'], 'a') as g:
g.write(f'WSA_VER={long_ver}\n')
with open(os.environ['WSA_WORK_ENV'], 'a') as g:
g.write(f'WSA_MAIN_VER={main_ver}\n')
rel = ver_no[3].split(".") rel = ver_no[3].split(".")
rell = str(rel[0]) rel_long = str(rel[0])
with open(os.environ['WSA_WORK_ENV'], 'a') as g: with open(os.environ['WSA_WORK_ENV'], 'a') as environ_file:
g.write(f'WSA_REL={rell}\n') environ_file.write(f'WSA_VER={long_ver}\n')
environ_file.write(f'WSA_MAIN_VER={main_ver}\n')
environ_file.write(f'WSA_REL={rel_long}\n')
if 'language' in f.filename.lower() or 'scale' in f.filename.lower(): if 'language' in f.filename.lower() or 'scale' in f.filename.lower():
name = f.filename.split("-", 1)[1].split(".")[0] name = f.filename.split("-", 1)[1].split(".")[0]
zip.extract(f, workdir) zip.extract(f, workdir)

View File

@ -1,4 +1,4 @@
#!/usr/bin/python #!/usr/bin/python3
# #
# This file is part of MagiskOnWSALocal. # This file is part of MagiskOnWSALocal.
# #

View File

@ -1,4 +1,4 @@
#!/usr/bin/python #!/usr/bin/python3
# #
# This file is part of MagiskOnWSALocal. # This file is part of MagiskOnWSALocal.
# #
@ -31,13 +31,13 @@ variant = sys.argv[3]
download_dir = Path.cwd().parent / \ download_dir = Path.cwd().parent / \
"download" if sys.argv[4] == "" else Path(sys.argv[4]).resolve() "download" if sys.argv[4] == "" else Path(sys.argv[4]).resolve()
tempScript = sys.argv[5] tempScript = sys.argv[5]
android_api = sys.argv[6]
file_name = sys.argv[7]
print( print(
f"Generating {brand} download link: arch={arch} variant={variant}", flush=True) f"Generating {brand} download link: arch={arch} variant={variant}", flush=True)
abi_map = {"x64": "x86_64", "arm64": "arm64"} abi_map = {"x64": "x86_64", "arm64": "arm64"}
# TODO: keep it 11.0 since opengapps does not support 12+ yet android_api_map = {"30": "11.0", "32": "12.1", "33": "13.0"}
# As soon as opengapps is available for 12+, we need to get the sdk/release from build.prop and release = [android_api_map[android_api]]
# download the corresponding version
release = "11.0"
if brand == "OpenGApps": if brand == "OpenGApps":
try: try:
res = requests.get(f"https://api.opengapps.org/list") res = requests.get(f"https://api.opengapps.org/list")
@ -55,7 +55,7 @@ if brand == "OpenGApps":
elif brand == "MindTheGapps": elif brand == "MindTheGapps":
res = requests.get( res = requests.get(
f'https://sourceforge.net/projects/wsa-mtg/rss?path=/{abi_map[arch]}&limit=100') f'https://sourceforge.net/projects/wsa-mtg/rss?path=/{abi_map[arch]}&limit=100')
link = re.search(f'https://.*{abi_map[arch]}/.*\.zip/download', res.text).group().replace( link = re.search(f'https://.*{release}.*{abi_map[arch]}/.*\.zip/download', res.text).group().replace(
'.zip/download', '.zip').replace('sourceforge.net/projects/wsa-mtg/files', 'downloads.sourceforge.net/project/wsa-mtg') '.zip/download', '.zip').replace('sourceforge.net/projects/wsa-mtg/files', 'downloads.sourceforge.net/project/wsa-mtg')
print(f"download link: {link}", flush=True) print(f"download link: {link}", flush=True)
@ -63,7 +63,4 @@ print(f"download link: {link}", flush=True)
with open(download_dir/tempScript, 'a') as f: with open(download_dir/tempScript, 'a') as f:
f.writelines(f'{link}\n') f.writelines(f'{link}\n')
f.writelines(f' dir={download_dir}\n') f.writelines(f' dir={download_dir}\n')
if brand == "OpenGApps": f.writelines(f' out={file_name}\n')
f.writelines(f' out={brand}-{arch}-{variant}.zip\n')
elif brand == "MindTheGapps":
f.writelines(f' out={brand}-{arch}.zip\n')

View File

@ -1,4 +1,4 @@
#!/usr/bin/python #!/usr/bin/python3
# #
# This file is part of MagiskOnWSALocal. # This file is part of MagiskOnWSALocal.
# #

View File

@ -1,4 +1,4 @@
#!/usr/bin/python #!/usr/bin/python3
# #
# This file is part of MagiskOnWSALocal. # This file is part of MagiskOnWSALocal.
# #
@ -26,6 +26,7 @@ import html
import warnings import warnings
import re import re
from pathlib import Path from pathlib import Path
import os
warnings.filterwarnings("ignore") warnings.filterwarnings("ignore")
@ -91,6 +92,11 @@ for i, v, f in identities:
# out_file_name = f"Microsoft.VCLibs.140.00.UWPDesktop_{arch}.appx" # out_file_name = f"Microsoft.VCLibs.140.00.UWPDesktop_{arch}.appx"
# out_file = download_dir / out_file_name # out_file = download_dir / out_file_name
elif re.match(f"MicrosoftCorporationII\.WindowsSubsystemForAndroid_.*\.msixbundle", f): elif re.match(f"MicrosoftCorporationII\.WindowsSubsystemForAndroid_.*\.msixbundle", f):
wsa_long_ver = re.search(u'\d{4}.\d{5}.\d{1,}.\d{1,}', f).group()
main_ver = wsa_long_ver.split(".")[0]
with open(os.environ['WSA_WORK_ENV'], 'a') as environ_file:
environ_file.write(f"DOWN_WSA_VERSION={wsa_long_ver}\n")
environ_file.write(f"DOWN_WSA_MAIN_VERSION={main_ver}\n")
out_file_name = f"wsa-{release_type}.zip" out_file_name = f"wsa-{release_type}.zip"
out_file = download_dir / out_file_name out_file = download_dir / out_file_name
else: else: