Reformat and clean up code, fix typos
This commit is contained in:
@@ -146,7 +146,7 @@ This is a temporary hack to combat against the apps permission issue on Android
|
||||
always enable a property (persist.sys.nodataperm) to make it execute a script to grant the data full permissions (777).
|
||||
The **correct** way is to use `sdcardfs` or `esdfs`, both need to recompile the kernel or WayDroid image.
|
||||
|
||||
Arknights, PUNISHING: GRAY RAVEN and other games won't freeze on the black screen.
|
||||
Arknights, PUNISHING: GRAY RAVEN, and other games won't freeze on the black screen.
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
#!/usr/bin/env python3
|
||||
from InquirerPy import inquirer
|
||||
from InquirerPy.base.control import Choice
|
||||
from InquirerPy.separator import Separator
|
||||
import argparse
|
||||
import os
|
||||
from typing import List
|
||||
|
||||
from InquirerPy import inquirer
|
||||
from InquirerPy.base.control import Choice
|
||||
|
||||
import tools.helper as helper
|
||||
from stuff.android_id import AndroidId
|
||||
from stuff.fdroidpriv import FDroidPriv
|
||||
from stuff.gapps import Gapps
|
||||
from stuff.general import General
|
||||
from stuff.hidestatusbar import HideStatusBar
|
||||
@@ -17,13 +20,8 @@ from stuff.ndk import Ndk
|
||||
from stuff.nodataperm import Nodataperm
|
||||
from stuff.smartdock import Smartdock
|
||||
from stuff.widevine import Widevine
|
||||
from stuff.fdroidpriv import FDroidPriv
|
||||
import tools.helper as helper
|
||||
from tools import container
|
||||
from tools import images
|
||||
|
||||
import argparse
|
||||
|
||||
from tools.logger import Logger
|
||||
|
||||
|
||||
@@ -32,7 +30,7 @@ def get_certified(args):
|
||||
|
||||
|
||||
def mount(partition, copy_dir):
|
||||
img = os.path.join(images.get_image_dir(), partition+".img")
|
||||
img = os.path.join(images.get_image_dir(), partition + ".img")
|
||||
mount_point = ""
|
||||
if partition == "system":
|
||||
mount_point = os.path.join(copy_dir)
|
||||
@@ -43,9 +41,9 @@ def mount(partition, copy_dir):
|
||||
|
||||
|
||||
def resize(partition):
|
||||
img = os.path.join(images.get_image_dir(), partition+".img")
|
||||
img_size = int(os.path.getsize(img)/(1024*1024))
|
||||
new_size = "{}M".format(img_size+500)
|
||||
img = os.path.join(images.get_image_dir(), partition + ".img")
|
||||
img_size = int(os.path.getsize(img) / (1024 * 1024))
|
||||
new_size = "{}M".format(img_size + 500)
|
||||
Logger.info("Resizing {} to {}".format(img, new_size))
|
||||
images.resize(img, new_size)
|
||||
|
||||
@@ -229,9 +227,9 @@ def interact():
|
||||
if not action:
|
||||
exit()
|
||||
|
||||
install_choices = ["gapps", "microg", "libndk", "magisk", "smartdock", "fdroidpriv",]
|
||||
install_choices = ["gapps", "microg", "libndk", "magisk", "smartdock", "fdroidpriv", ]
|
||||
hack_choices = []
|
||||
if android_version=="11":
|
||||
if android_version == "11":
|
||||
install_choices.extend(["libhoudini", "widevine"])
|
||||
hack_choices.extend(["nodataperm", "hidestatusbar"])
|
||||
|
||||
@@ -263,7 +261,7 @@ def interact():
|
||||
choices=[*install_choices, *hack_choices]
|
||||
).execute()
|
||||
args.app = apps
|
||||
args.microg_variant="Standard"
|
||||
args.microg_variant = "Standard"
|
||||
remove_app(args)
|
||||
elif action == "Hack":
|
||||
apps = inquirer.checkbox(
|
||||
@@ -280,9 +278,8 @@ def interact():
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description='''
|
||||
Does stuff like installing Gapps, installing Magisk, installing NDK Translation and getting Android ID for device registration.
|
||||
Use -h flag for help!''')
|
||||
parser = argparse.ArgumentParser(description='''Does stuff like installing Aapps, installing Magisk, installing
|
||||
NDK Translation, and getting Android ID for device registration. Use -h flag for help!''')
|
||||
|
||||
subparsers = parser.add_subparsers(title="coomand", dest='command')
|
||||
parser.add_argument('-a', '--android-version',
|
||||
@@ -311,10 +308,10 @@ def main():
|
||||
|
||||
install_help = """
|
||||
gapps: Install Open GApps (Android 11) or MindTheGapps (Android 13)
|
||||
microg: Add microG, Aurora Store and Aurora Droid to WayDriod
|
||||
libndk: Add libndk arm translation, better for AMD CPUs
|
||||
libhoudini: Add libhoudini arm translation, better for Intel CPUs
|
||||
magisk: Install Magisk Delta to WayDroid
|
||||
microg: Add microG, Aurora Store, and Aurora Droid to WayDroid
|
||||
libndk: Add libndk ARM translation, better for AMD CPUs
|
||||
libhoudini: Add libhoudini ARM translation, better for Intel CPUs
|
||||
magisk: Install Magisk Delta to Waydroid
|
||||
mitm -c CA_CERT_FILE: Install root CA cert into system trust store
|
||||
smartdock: A desktop mode launcher for Android
|
||||
widevine: Add support for widevine DRM L3
|
||||
@@ -334,7 +331,7 @@ widevine: Add support for widevine DRM L3
|
||||
remove_parser = subparsers.add_parser(
|
||||
'remove', aliases=["uninstall"], help='Remove an app')
|
||||
remove_parser.add_argument(
|
||||
**arg_template, choices=[*remove_choices, * hack_choices], help='Name of app to remove')
|
||||
**arg_template, choices=[*remove_choices, *hack_choices], help='Name of app to remove')
|
||||
remove_parser.set_defaults(func=remove_app)
|
||||
|
||||
# hack and its aliases
|
||||
|
||||
+2
-1
@@ -1,5 +1,6 @@
|
||||
import os
|
||||
import shutil
|
||||
|
||||
from stuff.general import General
|
||||
|
||||
|
||||
@@ -24,6 +25,7 @@ class FDroidPriv(General):
|
||||
"F-Droid.apk": "app/F-Droid/F-Droid.apk",
|
||||
"F-DroidPrivilegedExtension.apk": "priv-app/F-DroidPrivilegedExtension/F-DroidPrivilegedExtension.apk",
|
||||
}
|
||||
|
||||
def __init__(self, android_version="11") -> None:
|
||||
super().__init__()
|
||||
self.dl_link = self.dl_links[android_version][0]
|
||||
@@ -37,4 +39,3 @@ class FDroidPriv(General):
|
||||
if not os.path.exists(rro_dir):
|
||||
os.makedirs(rro_dir)
|
||||
shutil.copyfile(os.path.join(self.extract_to, f), rro_file)
|
||||
|
||||
|
||||
+31
-11
@@ -1,5 +1,6 @@
|
||||
import os
|
||||
import shutil
|
||||
|
||||
from stuff.general import General
|
||||
from tools.helper import run
|
||||
|
||||
@@ -9,16 +10,32 @@ class Gapps(General):
|
||||
partition = "system"
|
||||
dl_links = {
|
||||
"11": {
|
||||
"x86_64": ["https://sourceforge.net/projects/opengapps/files/x86_64/20220503/open_gapps-x86_64-11.0-pico-20220503.zip", "5a6d242be34ad1acf92899c7732afa1b"],
|
||||
"x86": ["https://sourceforge.net/projects/opengapps/files/x86/20220503/open_gapps-x86-11.0-pico-20220503.zip", "efda4943076016d00b40e0874b12ddd3"],
|
||||
"arm64-v8a": ["https://sourceforge.net/projects/opengapps/files/arm64/20220503/open_gapps-arm64-11.0-pico-20220503.zip", "7790055d34bbfc6fe610b0cd263a7add"],
|
||||
"armeabi-v7a": ["https://sourceforge.net/projects/opengapps/files/arm/20220215/open_gapps-arm-11.0-pico-20220215.zip", "8719519fa32ae83a62621c6056d32814"]
|
||||
"x86_64": [
|
||||
"https://sourceforge.net/projects/opengapps/files/x86_64/20220503/open_gapps-x86_64-11.0-pico-20220503.zip",
|
||||
"5a6d242be34ad1acf92899c7732afa1b"],
|
||||
"x86": [
|
||||
"https://sourceforge.net/projects/opengapps/files/x86/20220503/open_gapps-x86-11.0-pico-20220503.zip",
|
||||
"efda4943076016d00b40e0874b12ddd3"],
|
||||
"arm64-v8a": [
|
||||
"https://sourceforge.net/projects/opengapps/files/arm64/20220503/open_gapps-arm64-11.0-pico-20220503.zip",
|
||||
"7790055d34bbfc6fe610b0cd263a7add"],
|
||||
"armeabi-v7a": [
|
||||
"https://sourceforge.net/projects/opengapps/files/arm/20220215/open_gapps-arm-11.0-pico-20220215.zip",
|
||||
"8719519fa32ae83a62621c6056d32814"]
|
||||
},
|
||||
"13": {
|
||||
"x86_64": ["https://github.com/s1204IT/MindTheGappsBuilder/releases/download/20231028/MindTheGapps-13.0.0-x86_64-20231028.zip", "63ccebbf93d45c384f58d7c40049d398"],
|
||||
"x86": ["https://github.com/s1204IT/MindTheGappsBuilder/releases/download/20231028/MindTheGapps-13.0.0-x86-20231028.zip", "f12b6a8ed14eedbb4b5b3c932a865956"],
|
||||
"arm64-v8a": ["https://github.com/s1204IT/MindTheGappsBuilder/releases/download/20231028/MindTheGapps-13.0.0-arm64-20231028.zip", "11180da0a5d9f2ed2863882c30a8d556"],
|
||||
"armeabi-v7a": ["https://github.com/s1204IT/MindTheGappsBuilder/releases/download/20231028/MindTheGapps-13.0.0-arm-20231028.zip", "d525c980bac427844aa4cb01628f8a8f"]
|
||||
"x86_64": [
|
||||
"https://github.com/s1204IT/MindTheGappsBuilder/releases/download/20231028/MindTheGapps-13.0.0-x86_64-20231028.zip",
|
||||
"63ccebbf93d45c384f58d7c40049d398"],
|
||||
"x86": [
|
||||
"https://github.com/s1204IT/MindTheGappsBuilder/releases/download/20231028/MindTheGapps-13.0.0-x86-20231028.zip",
|
||||
"f12b6a8ed14eedbb4b5b3c932a865956"],
|
||||
"arm64-v8a": [
|
||||
"https://github.com/s1204IT/MindTheGappsBuilder/releases/download/20231028/MindTheGapps-13.0.0-arm64-20231028.zip",
|
||||
"11180da0a5d9f2ed2863882c30a8d556"],
|
||||
"armeabi-v7a": [
|
||||
"https://github.com/s1204IT/MindTheGappsBuilder/releases/download/20231028/MindTheGapps-13.0.0-arm-20231028.zip",
|
||||
"d525c980bac427844aa4cb01628f8a8f"]
|
||||
}
|
||||
}
|
||||
android_version = ...
|
||||
@@ -124,7 +141,8 @@ class Gapps(General):
|
||||
print(" Processing app package : " +
|
||||
os.path.join(self.extract_to, "Core", lz_file))
|
||||
run(["tar", "--lzip", "-xvf", os.path.join(self.extract_to, "Core",
|
||||
lz_file), "-C", os.path.join(self.extract_to, "appunpack")])
|
||||
lz_file), "-C",
|
||||
os.path.join(self.extract_to, "appunpack")])
|
||||
app_name = os.listdir(os.path.join(
|
||||
self.extract_to, "appunpack"))[0]
|
||||
xx_dpi = os.listdir(os.path.join(
|
||||
@@ -145,13 +163,15 @@ class Gapps(General):
|
||||
print(" Processing extra package : " +
|
||||
os.path.join(self.extract_to, "Core", lz_file))
|
||||
run(["tar", "--lzip", "-xvf", os.path.join(self.extract_to, "Core",
|
||||
lz_file), "-C", os.path.join(self.extract_to, "appunpack")])
|
||||
lz_file), "-C",
|
||||
os.path.join(self.extract_to, "appunpack")])
|
||||
app_name = os.listdir(os.path.join(
|
||||
self.extract_to, "appunpack"))[0]
|
||||
common_content_dirs = os.listdir(os.path.join(
|
||||
self.extract_to, "appunpack", app_name, "common"))
|
||||
for ccdir in common_content_dirs:
|
||||
shutil.copytree(os.path.join(self.extract_to, "appunpack", app_name, "common", ccdir), os.path.join(
|
||||
shutil.copytree(os.path.join(self.extract_to, "appunpack", app_name, "common", ccdir),
|
||||
os.path.join(
|
||||
self.copy_dir, self.partition, ccdir), dirs_exist_ok=True)
|
||||
|
||||
def copy_13(self):
|
||||
|
||||
+3
-2
@@ -1,11 +1,12 @@
|
||||
import configparser
|
||||
import glob
|
||||
import hashlib
|
||||
import os
|
||||
import shutil
|
||||
import zipfile
|
||||
import hashlib
|
||||
from tools.helper import download_file, get_download_dir, host
|
||||
|
||||
from tools import container
|
||||
from tools.helper import download_file, get_download_dir, host
|
||||
from tools.logger import Logger
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import os
|
||||
import shutil
|
||||
|
||||
from stuff.general import General
|
||||
|
||||
|
||||
@@ -12,8 +13,9 @@ class HideStatusBar(General):
|
||||
dl_link = ...
|
||||
act_md5 = ...
|
||||
files = [
|
||||
"product/overlay/"+dl_file_name
|
||||
"product/overlay/" + dl_file_name
|
||||
]
|
||||
|
||||
def __init__(self, android_version="11") -> None:
|
||||
super().__init__()
|
||||
self.dl_link = self.dl_links[android_version][0]
|
||||
|
||||
+4
-1
@@ -1,6 +1,7 @@
|
||||
import os
|
||||
import re
|
||||
import shutil
|
||||
|
||||
from stuff.general import General
|
||||
from tools.logger import Logger
|
||||
|
||||
@@ -9,7 +10,9 @@ class Houdini(General):
|
||||
id = "libhoudini"
|
||||
partition = "system"
|
||||
dl_links = {
|
||||
"11": ["https://github.com/supremegamers/vendor_intel_proprietary_houdini/archive/81f2a51ef539a35aead396ab7fce2adf89f46e88.zip", "fbff756612b4144797fbc99eadcb6653"],
|
||||
"11": [
|
||||
"https://github.com/supremegamers/vendor_intel_proprietary_houdini/archive/81f2a51ef539a35aead396ab7fce2adf89f46e88.zip",
|
||||
"fbff756612b4144797fbc99eadcb6653"],
|
||||
# "13": ["https://github.com/supremegamers/vendor_intel_proprietary_houdini/archive/978d8cba061a08837b7e520cd03b635af643ba08.zip", "1e139054c05034648fae58a1810573b4"]
|
||||
}
|
||||
act_md5 = ...
|
||||
|
||||
+11
-8
@@ -1,11 +1,13 @@
|
||||
import gzip
|
||||
import os
|
||||
import shutil
|
||||
import re
|
||||
import shutil
|
||||
|
||||
from stuff.general import General
|
||||
from tools.helper import download_file, get_data_dir, host
|
||||
from tools.logger import Logger
|
||||
from tools import container
|
||||
from tools.helper import download_file, get_data_dir
|
||||
from tools.logger import Logger
|
||||
|
||||
|
||||
class Magisk(General):
|
||||
id = "magisk delta"
|
||||
@@ -83,8 +85,9 @@ on property:init.svc.zygote=stopped
|
||||
filename = re.search('lib(.*)\.so', filename)
|
||||
n_path = os.path.join(magisk_absolute_dir, filename.group(1))
|
||||
shutil.copyfile(o_path, n_path)
|
||||
shutil.copyfile(self.download_loc, os.path.join(magisk_absolute_dir,"magisk.apk") )
|
||||
shutil.copytree(os.path.join(self.extract_to, "assets", "chromeos"), os.path.join(magisk_absolute_dir, "chromeos"), dirs_exist_ok=True)
|
||||
shutil.copyfile(self.download_loc, os.path.join(magisk_absolute_dir, "magisk.apk"))
|
||||
shutil.copytree(os.path.join(self.extract_to, "assets", "chromeos"),
|
||||
os.path.join(magisk_absolute_dir, "chromeos"), dirs_exist_ok=True)
|
||||
assets_files = [
|
||||
"addon.d.sh",
|
||||
"boot_patch.sh",
|
||||
@@ -97,11 +100,11 @@ on property:init.svc.zygote=stopped
|
||||
# Updating Magisk from Magisk manager will modify bootanim.rc,
|
||||
# So it is necessary to backup the original bootanim.rc.
|
||||
bootanim_path = os.path.join(self.copy_dir, self.partition, "etc", "init", "bootanim.rc")
|
||||
gz_filename = os.path.join(bootanim_path)+".gz"
|
||||
with gzip.open(gz_filename,'wb') as f_gz:
|
||||
gz_filename = os.path.join(bootanim_path) + ".gz"
|
||||
with gzip.open(gz_filename, 'wb') as f_gz:
|
||||
f_gz.write(self.oringinal_bootanim.encode('utf-8'))
|
||||
with open(bootanim_path, "w") as initfile:
|
||||
initfile.write(self.oringinal_bootanim+self.bootanim_component)
|
||||
initfile.write(self.oringinal_bootanim + self.bootanim_component)
|
||||
|
||||
def set_path_perm(self, path):
|
||||
if "magisk" in path.split("/"):
|
||||
|
||||
+6
-4
@@ -1,5 +1,6 @@
|
||||
import os
|
||||
import shutil
|
||||
|
||||
from stuff.general import General
|
||||
from tools.logger import Logger
|
||||
|
||||
@@ -15,7 +16,7 @@ class MicroG(General):
|
||||
"org.microg.nlp.backend.ichnaea_20036.apk": "0b3cb65f8458d1a5802737c7392df903",
|
||||
"org.microg.nlp.backend.nominatim_20042.apk": "88e7397cbb9e5c71c8687d3681a23383",
|
||||
}
|
||||
microg_apks= {
|
||||
microg_apks = {
|
||||
"com.google.android.gms-223616054.apk": "a945481ca5d33a03bc0f9418263c3228",
|
||||
"com.google.android.gsf-8.apk": "b2b4ea3642df6158e14689a4b2a246d4",
|
||||
"com.android.vending-22.apk": "6815d191433ffcd8fa65923d5b0b0573",
|
||||
@@ -107,7 +108,7 @@ service microg_service /system/bin/sh /system/bin/npem
|
||||
super().__init__()
|
||||
self.dl_link = self.dl_links[variant][0]
|
||||
self.act_md5 = self.dl_links[variant][1]
|
||||
self.id = self.id+f"-{variant}"
|
||||
self.id = self.id + f"-{variant}"
|
||||
self.dl_file_name = f'MinMicroG-{variant}.zip'
|
||||
if android_version == "11":
|
||||
self.sdk = 30
|
||||
@@ -123,7 +124,7 @@ service microg_service /system/bin/sh /system/bin/npem
|
||||
else:
|
||||
sub_arch = "x86"
|
||||
if 64 == self.arch[1]:
|
||||
arch = f"{sub_arch}{'' if sub_arch=='arm' else '_'}64"
|
||||
arch = f"{sub_arch}{'' if sub_arch == 'arm' else '_'}64"
|
||||
for root, dirs, files in os.walk(src_dir):
|
||||
flag = False
|
||||
dir_name = os.path.basename(root)
|
||||
@@ -135,7 +136,8 @@ service microg_service /system/bin/sh /system/bin/npem
|
||||
sdks.append(i)
|
||||
elif i:
|
||||
archs.append(i)
|
||||
if len(archs) != 0 and arch not in archs and sub_arch not in archs or len(sdks) != 0 and str(self.sdk) not in sdks:
|
||||
if len(archs) != 0 and arch not in archs and sub_arch not in archs or len(sdks) != 0 and str(
|
||||
self.sdk) not in sdks:
|
||||
continue
|
||||
else:
|
||||
flag = True
|
||||
|
||||
+3
-1
@@ -1,14 +1,16 @@
|
||||
import os
|
||||
import shutil
|
||||
|
||||
from stuff.general import General
|
||||
from tools.helper import run
|
||||
from tools.logger import Logger
|
||||
|
||||
|
||||
class Mitm(General):
|
||||
id = "mitm"
|
||||
partition = "system"
|
||||
|
||||
def __init__(self, ca_cert_file: str=None) -> None:
|
||||
def __init__(self, ca_cert_file: str = None) -> None:
|
||||
super().__init__()
|
||||
self.ca_cert_file = ca_cert_file
|
||||
|
||||
|
||||
+8
-2
@@ -1,15 +1,21 @@
|
||||
import os
|
||||
import re
|
||||
import shutil
|
||||
|
||||
from stuff.general import General
|
||||
from tools.logger import Logger
|
||||
|
||||
|
||||
class Ndk(General):
|
||||
id = "libndk"
|
||||
partition = "system"
|
||||
dl_links = {
|
||||
"11": ["https://github.com/supremegamers/vendor_google_proprietary_ndk_translation-prebuilt/archive/9324a8914b649b885dad6f2bfd14a67e5d1520bf.zip", "c9572672d1045594448068079b34c350"],
|
||||
"13": ["https://github.com/supremegamers/vendor_google_proprietary_ndk_translation-prebuilt/archive/a090003c60df53a9eadb2df09bd4fd2fa86ea629.zip", "e6f0d9fc28ebc427b59a3942a9a4ffc0"]
|
||||
"11": [
|
||||
"https://github.com/supremegamers/vendor_google_proprietary_ndk_translation-prebuilt/archive/9324a8914b649b885dad6f2bfd14a67e5d1520bf.zip",
|
||||
"c9572672d1045594448068079b34c350"],
|
||||
"13": [
|
||||
"https://github.com/supremegamers/vendor_google_proprietary_ndk_translation-prebuilt/archive/a090003c60df53a9eadb2df09bd4fd2fa86ea629.zip",
|
||||
"e6f0d9fc28ebc427b59a3942a9a4ffc0"]
|
||||
}
|
||||
dl_file_name = "libndktranslation.zip"
|
||||
extract_to = "/tmp/libndkunpack"
|
||||
|
||||
+2
-1
@@ -1,10 +1,11 @@
|
||||
import os
|
||||
import re
|
||||
import shutil
|
||||
|
||||
from stuff.general import General
|
||||
from tools import container
|
||||
from tools.helper import backup, restore
|
||||
from tools.logger import Logger
|
||||
from tools import container
|
||||
|
||||
|
||||
class Nodataperm(General):
|
||||
|
||||
+6
-2
@@ -1,14 +1,16 @@
|
||||
import os
|
||||
import shutil
|
||||
|
||||
from stuff.general import General
|
||||
|
||||
|
||||
class Smartdock(General):
|
||||
id = "smartdock"
|
||||
dl_link = "https://f-droid.org/repo/cu.axel.smartdock_1100.apk"
|
||||
partition = "system"
|
||||
dl_file_name = "smartdock.apk"
|
||||
act_md5 = "f4087d34218eac902a5cca98ee03d215"
|
||||
apply_props = { "qemu.hw.mainkeys" : "1" }
|
||||
apply_props = {"qemu.hw.mainkeys": "1"}
|
||||
skip_extract = True
|
||||
permissions = """<?xml version="1.0" encoding="utf-8"?>
|
||||
<permissions>
|
||||
@@ -56,7 +58,9 @@ service set_home_activity /system/bin/sh -c "cmd package set-home-activity cu.ax
|
||||
shutil.copyfile(os.path.join(self.download_loc),
|
||||
os.path.join(self.copy_dir, self.partition, "priv-app/SmartDock/smartdock.apk"))
|
||||
|
||||
with open(os.path.join(self.copy_dir, self.partition, "etc", "permissions", "permissions_cu.axel.smartdock.xml"), "w") as f:
|
||||
with open(
|
||||
os.path.join(self.copy_dir, self.partition, "etc", "permissions", "permissions_cu.axel.smartdock.xml"),
|
||||
"w") as f:
|
||||
f.write(self.permissions)
|
||||
|
||||
rc_dir = os.path.join(self.copy_dir, self.partition, "etc/init/smartdock.rc")
|
||||
|
||||
+8
-4
@@ -1,6 +1,7 @@
|
||||
import os
|
||||
import re
|
||||
import shutil
|
||||
|
||||
from stuff.general import General
|
||||
from tools.logger import Logger
|
||||
|
||||
@@ -11,14 +12,17 @@ class Widevine(General):
|
||||
dl_links = {
|
||||
# "x86": ["https://github.com/supremegamers/vendor_google_proprietary_widevine-prebuilt/archive/94c9ee172e3d78fecc81863f50a59e3646f7a2bd.zip", "a31f325453c5d239c21ecab8cfdbd878"],
|
||||
"x86_64": {
|
||||
"11": ["https://github.com/supremegamers/vendor_google_proprietary_widevine-prebuilt/archive/48d1076a570837be6cdce8252d5d143363e37cc1.zip",
|
||||
"11": [
|
||||
"https://github.com/supremegamers/vendor_google_proprietary_widevine-prebuilt/archive/48d1076a570837be6cdce8252d5d143363e37cc1.zip",
|
||||
"f587b8859f9071da4bca6cea1b9bed6a"],
|
||||
"13": ["https://github.com/supremegamers/vendor_google_proprietary_widevine-prebuilt/archive/a8524d608431573ef1c9313822d271f78728f9a6.zip",
|
||||
"13": [
|
||||
"https://github.com/supremegamers/vendor_google_proprietary_widevine-prebuilt/archive/a8524d608431573ef1c9313822d271f78728f9a6.zip",
|
||||
"5c55df61da5c012b4e43746547ab730f"]
|
||||
},
|
||||
# "armeabi-v7a": ["https://github.com/supremegamers/vendor_google_proprietary_widevine-prebuilt/archive/a1a19361d36311bee042da8cf4ced798d2c76d98.zip", "fed6898b5cfd2a908cb134df97802554"],
|
||||
"arm64-v8a": {
|
||||
"11": ["https://github.com/supremegamers/vendor_google_proprietary_widevine-prebuilt/archive/a1a19361d36311bee042da8cf4ced798d2c76d98.zip",
|
||||
"11": [
|
||||
"https://github.com/supremegamers/vendor_google_proprietary_widevine-prebuilt/archive/a1a19361d36311bee042da8cf4ced798d2c76d98.zip",
|
||||
"fed6898b5cfd2a908cb134df97802554"]
|
||||
}
|
||||
}
|
||||
@@ -42,5 +46,5 @@ class Widevine(General):
|
||||
def copy(self):
|
||||
name = re.findall("([a-zA-Z0-9]+)\.zip", self.dl_link)[0]
|
||||
Logger.info("Copying widevine library files ...")
|
||||
shutil.copytree(os.path.join(self.extract_to, "vendor_google_proprietary_widevine-prebuilt-"+name,
|
||||
shutil.copytree(os.path.join(self.extract_to, "vendor_google_proprietary_widevine-prebuilt-" + name,
|
||||
"prebuilts"), os.path.join(self.copy_dir, self.partition), dirs_exist_ok=True)
|
||||
|
||||
+4
-1
@@ -1,10 +1,12 @@
|
||||
import configparser
|
||||
import os
|
||||
import sys
|
||||
|
||||
# import dbus
|
||||
from tools.helper import run
|
||||
from tools.logger import Logger
|
||||
|
||||
|
||||
# def DBusContainerService(object_path="/ContainerManager", intf="id.waydro.ContainerManager"):
|
||||
# return dbus.Interface(dbus.SystemBus().get_object("id.waydro.Container", object_path), intf)
|
||||
|
||||
@@ -29,7 +31,7 @@ def use_overlayfs():
|
||||
Logger.error("Required entry in config was not found, Cannot continue!")
|
||||
if "mount_overlays" not in cfg["waydroid"]:
|
||||
return False
|
||||
if cfg["waydroid"]["mount_overlays"]=="True":
|
||||
if cfg["waydroid"]["mount_overlays"] == "True":
|
||||
return True
|
||||
return False
|
||||
|
||||
@@ -49,5 +51,6 @@ def stop():
|
||||
def is_running():
|
||||
return "Session:\tRUNNING" in run(["waydroid", "status"]).stdout.decode()
|
||||
|
||||
|
||||
def upgrade():
|
||||
run(["waydroid", "upgrade", "-o"], ignore=r"\[.*\] Stopping container\n\[.*\] Starting container")
|
||||
+19
-9
@@ -1,16 +1,17 @@
|
||||
import gzip
|
||||
import hashlib
|
||||
import os
|
||||
import re
|
||||
import platform
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
import requests
|
||||
from tools.logger import Logger
|
||||
from tqdm import tqdm
|
||||
import hashlib
|
||||
from typing import Optional
|
||||
|
||||
import requests
|
||||
from tqdm import tqdm
|
||||
|
||||
from tools.logger import Logger
|
||||
|
||||
|
||||
def get_download_dir():
|
||||
download_loc = ""
|
||||
@@ -26,9 +27,12 @@ def get_download_dir():
|
||||
os.makedirs(download_loc)
|
||||
return download_loc
|
||||
|
||||
|
||||
# not good
|
||||
def get_data_dir():
|
||||
return os.path.join('/', "home", os.environ.get("SUDO_USER", os.environ["USER"]), ".local", "share", "waydroid", "data")
|
||||
return os.path.join('/', "home", os.environ.get("SUDO_USER", os.environ["USER"]), ".local", "share", "waydroid",
|
||||
"data")
|
||||
|
||||
|
||||
# execute on host
|
||||
def run(args: list, env: Optional[str] = None, ignore: Optional[str] = None):
|
||||
@@ -52,6 +56,7 @@ def run(args: list, env: Optional[str] = None, ignore: Optional[str] = None):
|
||||
)
|
||||
return result
|
||||
|
||||
|
||||
# execute on waydroid shell
|
||||
def shell(arg: str, env: Optional[str] = None):
|
||||
a = subprocess.Popen(
|
||||
@@ -61,7 +66,8 @@ def shell(arg: str, env: Optional[str] = None):
|
||||
stderr=subprocess.PIPE
|
||||
)
|
||||
subprocess.Popen(
|
||||
args=["echo", "export BOOTCLASSPATH=/apex/com.android.art/javalib/core-oj.jar:/apex/com.android.art/javalib/core-libart.jar:/apex/com.android.art/javalib/core-icu4j.jar:/apex/com.android.art/javalib/okhttp.jar:/apex/com.android.art/javalib/bouncycastle.jar:/apex/com.android.art/javalib/apache-xml.jar:/system/framework/framework.jar:/system/framework/ext.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/framework-atb-backward-compatibility.jar:/apex/com.android.conscrypt/javalib/conscrypt.jar:/apex/com.android.media/javalib/updatable-media.jar:/apex/com.android.mediaprovider/javalib/framework-mediaprovider.jar:/apex/com.android.os.statsd/javalib/framework-statsd.jar:/apex/com.android.permission/javalib/framework-permission.jar:/apex/com.android.sdkext/javalib/framework-sdkextensions.jar:/apex/com.android.wifi/javalib/framework-wifi.jar:/apex/com.android.tethering/javalib/framework-tethering.jar"],
|
||||
args=["echo",
|
||||
"export BOOTCLASSPATH=/apex/com.android.art/javalib/core-oj.jar:/apex/com.android.art/javalib/core-libart.jar:/apex/com.android.art/javalib/core-icu4j.jar:/apex/com.android.art/javalib/okhttp.jar:/apex/com.android.art/javalib/bouncycastle.jar:/apex/com.android.art/javalib/apache-xml.jar:/system/framework/framework.jar:/system/framework/ext.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/framework-atb-backward-compatibility.jar:/apex/com.android.conscrypt/javalib/conscrypt.jar:/apex/com.android.media/javalib/updatable-media.jar:/apex/com.android.mediaprovider/javalib/framework-mediaprovider.jar:/apex/com.android.os.statsd/javalib/framework-statsd.jar:/apex/com.android.permission/javalib/framework-permission.jar:/apex/com.android.sdkext/javalib/framework-sdkextensions.jar:/apex/com.android.wifi/javalib/framework-wifi.jar:/apex/com.android.tethering/javalib/framework-tethering.jar"],
|
||||
stdout=a.stdin,
|
||||
stdin=subprocess.PIPE
|
||||
).communicate()
|
||||
@@ -89,6 +95,7 @@ def shell(arg: str, env: Optional[str] = None):
|
||||
)
|
||||
return a.stdout.read().decode("utf-8")
|
||||
|
||||
|
||||
def download_file(url, f_name):
|
||||
md5 = ""
|
||||
response = requests.get(url, stream=True)
|
||||
@@ -107,6 +114,7 @@ def download_file(url, f_name):
|
||||
raise ValueError("Something went wrong while downloading")
|
||||
return md5
|
||||
|
||||
|
||||
def host():
|
||||
machine = platform.machine()
|
||||
|
||||
@@ -133,14 +141,16 @@ def check_root():
|
||||
Logger.error("This script must be run as root. Aborting.")
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def backup(path):
|
||||
gz_filename = path+".gz"
|
||||
gz_filename = path + ".gz"
|
||||
with gzip.open(gz_filename, 'wb') as f_gz:
|
||||
with open(path, "rb") as f:
|
||||
f_gz.write(f.read())
|
||||
|
||||
|
||||
def restore(path):
|
||||
gz_filename = path+".gz"
|
||||
gz_filename = path + ".gz"
|
||||
with gzip.GzipFile(gz_filename) as f_gz:
|
||||
with open(path, "wb") as f:
|
||||
f.writelines(f_gz)
|
||||
|
||||
+6
-2
@@ -1,16 +1,18 @@
|
||||
import configparser
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
from tools.helper import run
|
||||
from tools.logger import Logger
|
||||
|
||||
|
||||
def mount(image, mount_point):
|
||||
umount(mount_point, False)
|
||||
if not os.path.exists(mount_point):
|
||||
os.makedirs(mount_point)
|
||||
run(["mount", "-o", "rw", image, mount_point])
|
||||
|
||||
|
||||
def umount(mount_point, exists=True):
|
||||
if not os.path.exists(mount_point):
|
||||
if not exists:
|
||||
@@ -23,10 +25,12 @@ def umount(mount_point, exists=True):
|
||||
Logger.warning("{} is not a mount point".format(
|
||||
mount_point))
|
||||
|
||||
|
||||
def resize(img_file, size):
|
||||
run(["sudo", "e2fsck", "-y", "-f", img_file], ignore="^e2fsck \d+\.\d+\.\d (.+)\n$")
|
||||
run(["sudo", "resize2fs", img_file, size], ignore="^resize2fs \d+\.\d+\.\d (.+)\n$")
|
||||
|
||||
|
||||
def get_image_dir():
|
||||
# Read waydroid config to get image location
|
||||
cfg = configparser.ConfigParser()
|
||||
@@ -36,6 +40,6 @@ def get_image_dir():
|
||||
sys.exit(1)
|
||||
cfg.read(cfg_file)
|
||||
if "waydroid" not in cfg:
|
||||
Logger.error("Required entry in config was not found, Cannot continue!") #magisk
|
||||
Logger.error("Required entry in config was not found, Cannot continue!") # magisk
|
||||
sys.exit(1)
|
||||
return cfg["waydroid"]["images_path"]
|
||||
|
||||
+3
-3
@@ -2,12 +2,12 @@ class Logger:
|
||||
|
||||
@staticmethod
|
||||
def error(str):
|
||||
print("\033[31m"+"ERROR: "+str+"\033[0m")
|
||||
print("\033[31m" + "ERROR: " + str + "\033[0m")
|
||||
|
||||
@staticmethod
|
||||
def info(str):
|
||||
print("\033[32m"+"INFO: "+"\033[0m"+str)
|
||||
print("\033[32m" + "INFO: " + "\033[0m" + str)
|
||||
|
||||
@staticmethod
|
||||
def warning(str):
|
||||
print("\033[33m"+"WARN: "+str+"\033[0m")
|
||||
print("\033[33m" + "WARN: " + str + "\033[0m")
|
||||
|
||||
Reference in New Issue
Block a user