diff --git a/example_configs/build_config b/example_configs/build_config index 9119c7c..b34f989 100644 --- a/example_configs/build_config +++ b/example_configs/build_config @@ -50,5 +50,9 @@ root = true output_name = YouTube_Music_ReVanced_root keystore = revanced-ytm-root.keystore +[gmscore] +# If you use a Xiaomi or Huawei device, change the variant to alt +variant=regular + [post_script] # file = ./post_script.sh diff --git a/src/ReVancedBuilder/JAVABuilder.py b/src/ReVancedBuilder/JAVABuilder.py index 4002a89..b948702 100644 --- a/src/ReVancedBuilder/JAVABuilder.py +++ b/src/ReVancedBuilder/JAVABuilder.py @@ -4,7 +4,6 @@ # SPDX-License-Identifier: GPL-3.0-only import os -import sys import configparser as cp import json import subprocess @@ -45,7 +44,7 @@ def build_apps(appstate): root = False if root: - cmd += ' --mount -e microg-support' + cmd += ' --mount -e "GmsCore support"' for item in included_patches: cmd += f" -i {item}" @@ -58,14 +57,13 @@ def build_apps(appstate): try: keystore = build_config[app]['keystore'] if not root: - cmd += f" --keystore {keystore} --alias=alias --keystore-entry-password=ReVanced --keystore-password=ReVanced" + cmd += f" --keystore {keystore} --keystore-entry-alias=alias --keystore-entry-password=ReVanced --keystore-password=ReVanced" except: pass try: apk = build_config[app]['apk'] pretty_name = build_config[app]['pretty_name'] - apkpure_appname = build_config[app]['apkpure_appname'] output_name = build_config[app]['output_name'] except: err_exit(f"Invalid config for {app} in build_config!", appstate) diff --git a/src/ReVancedBuilder/Notifications.py b/src/ReVancedBuilder/Notifications.py index b143a43..28ebc8b 100644 --- a/src/ReVancedBuilder/Notifications.py +++ b/src/ReVancedBuilder/Notifications.py @@ -28,7 +28,6 @@ def send_notif(appstate, error=False): msg = msg.replace('cli', 'CLI') msg = msg.replace('integrations', 'Integrations') msg = msg.replace('patches', 'Patches') - msg = msg.replace('VancedMicroG', 'Vanced microG') for app in build_config: if not build_config[app].getboolean('build'): @@ -37,8 +36,8 @@ def send_notif(appstate, error=False): build_config[app]['apk'], build_config[app]['pretty_name']) msg += '\nTimestamp: ' + timestamp - if appstate['microg_updated']: - msg += '\nVanced microG was updated.' + if appstate['gmscore_updated']: + msg += '\nGmsCore was updated.' config = appstate['notification_config'] for entry in config: diff --git a/src/ReVancedBuilder/ReVancedBuilder.py b/src/ReVancedBuilder/ReVancedBuilder.py index fc66eb5..7cd39e8 100755 --- a/src/ReVancedBuilder/ReVancedBuilder.py +++ b/src/ReVancedBuilder/ReVancedBuilder.py @@ -14,7 +14,7 @@ import requests as req from packaging.version import Version from datetime import datetime -from ReVancedBuilder.APKPure_dl import apkpure_best_match, apkpure_dl, get_apks +from ReVancedBuilder.APKPure_dl import get_apks from ReVancedBuilder.JAVABuilder import build_apps from ReVancedBuilder.Notifications import send_notif from ReVancedBuilder.Cleanup import move_apps, err_exit @@ -48,33 +48,45 @@ def update_tools(appstate): return appstate -# Update microG, if needed -def update_microg(appstate): +# Update GmsCore, if needed +def update_gmscore(appstate): print('Checking updates for GmsCore...') + # Pull the latest information using the ReVanced API try: - data = req.get('https://api.github.com/repos/ReVanced/GmsCore/releases/latest').json()['tag_name'] - latest_ver = Version(data) + data = req.get('https://api.revanced.app/v2/gmscore/releases/latest').json()['release'] except req.exceptions.RequestException as e: - err_exit(f"Error fetching info about GmsCore, {e}", appstate) + err_exit(f"Error fetching GmsCore information, {e}", appstate) + + latest_ver = Version(data['metadata']['tag_name']) try: present_ver = Version(appstate['present_vers']['GmsCore']) except KeyError: present_ver = Version('0') - if flag == 'force' or not os.path.isfile('microg.apk') or present_ver < latest_ver: + try: + variant = appstate['build_config']['gmscore']['variant'] + except KeyError: + variant = "regular" + + if variant == "alt": + gmscore_link = next(filter(lambda x: "-hw-" in x['name'], data['assets']))['browser_download_url'] + else: + gmscore_link = next(filter(lambda x: "-hw-" not in x['name'], data['assets']))['browser_download_url'] + + if flag == 'force' or not os.path.isfile('GmsCore.apk') or present_ver < latest_ver: appstate['up-to-date'] = False print(f"GmsCore has an update ({str(present_ver)} -> {str(latest_ver)})") if flag != 'checkonly': print(f"Downloading GmsCore...") - res = req.get('https://github.com/ReVanced/GmsCore/releases/latest/download/microg.apk', stream=True) + res = req.get(gmscore_link, stream=True) res.raise_for_status() - with open('microg.apk', 'wb') as f: + with open('GmsCore.apk', 'wb') as f: for chunk in res.iter_content(chunk_size=8192): f.write(chunk) appstate['present_vers'].update({'GmsCore': str(latest_ver)}) print("Done!") - appstate['microg_updated'] = True + appstate['gmscore_updated'] = True return appstate @@ -130,7 +142,7 @@ if flag not in ['buildonly', 'checkonly', 'force', 'experimental', None]: err_exit(f"Unknown flag: {flag}", appstate) appstate['flag'] = flag -appstate['microg_updated'] = False +appstate['gmscore_updated'] = False print(f"Started building ReVanced apps at {time.strftime('%d %B, %Y %H:%M:%S')}") print('----------------------------------------------------------------------') @@ -163,7 +175,7 @@ appstate['up-to-date'] = True # send_notif(appstate, error=False) # <,,,,,,,,<,,,,,,,,,,,,, if flag != 'buildonly': appstate = update_tools(appstate) - appstate = update_microg(appstate) + appstate = update_gmscore(appstate) if (not appstate['up-to-date'] and flag != 'checkonly') or flag == 'force': appstate = get_apks(appstate)